Работа с данными типа string

 

concat( строка1, строка2, строкаЗ)

(string,string,string):(i,i,i)(i,i,o)(i,o,i)(o,i,i)

 

В зависимости от конкретизации выполняется лексикографическая

операция строка1+строка2=строкаЗ.

 

frontchar( строка, первый_знак_строки,остаток_строки)

(string,char,string): (l,1, i)( i, i,o)( i,o; i)(o,1,l)(i,o,o)

 

В зависимости от конкретизации выполняется лексикографическая

операция строка = первы_знак_строки + остаток_строки.

Например, преобразование строки в список отдельных знаков и

наоборот:

 

domains .

charlist =char*

predicates

str_lst(string,charlist)

clauses

str..lst("", []):-!'

str_lst(S,[H|T]):-.

bound(S),!, /* имеется строка? */

frontchar(S,H,Rs),

str_lst(Rs,T).

str_lst(S,[H|T]):-

bound(H), /* имеется список знаков? */

str_lst(Rs,T),

frontchar(S,H,Rs).

 

После-запуска программы (Run) возможно указать разные цели:

 

Goal: str_lst("Это строка",X)

Х=[' Э',' т',' о',' ',' с',' т',' р',' о',' к',' а' ]

1 Solution (одно решение)

Goal: str_lst(X,[' з','н','а',' к',' и' ])

Х=знаки

1 Solution

Goal:<ESC> (ключ для выхода в главное меню)

 

frontstr(количество,строка,передняя_строка,остаток_строки)

(integer,string,string,string): (i,i,o,o)

 

Из указанной строки количество знаков возвращается в передней

строке, а остальные в остатке строки.

 

fronttoken(строка,токен,остаток_строки)

(string,string,string): (i,i,i)(i,i,o)(i,o,i)(o,i,i)(i,o,o)

 

В зависимости от конкретизации выполняется лексикографическая

операция строка = токен + остаток_строки. При этом один или

несколько знаков образуют токен в следующих случаях:

- они образуют имя Турбо-Пролога;

- они представляют целое или действительное число;

- знаки "+" и "-" являются отдельными знаками;

- имеется отдельно стоящий знак (кроме пробела).

Например fronttoken("это тест",Х,У) дает Х="это", Y=" тест".

 

str_len(строка,длина) ' .

(string,integer):(i,i)(i,o)

 

Проверяется (i,i) или возвращается (i,o) длина строки.