Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Специальные строки

Читайте также:
  1. VIII. Строки зберігання товарів, транспортних засобів комерційного призначення на складі митного органу
  2. Глава 2. Должности в органах внутренних дел. Специальные звания
  3. Мошенничество и его специальные виды. Особенности возбуждения уголовных дел о преступлениях против собственности.
  4. Нижеследующие строки посвящены лишь одной части этой обширной и сложной задачи--именно попытке критически уяснить и оценить нравственное миро воззрение интеллигенции.
  5. Особые (специальные) правила назначения наказания
  6. Процесуальні строки.
  7. Специальные аспекты

 

Специальные строки являются именами и используется для обозначения символических констант, доменов, предикатов и переменных. Они должны удовлетворять следующим свойствам.

1. Строка строится из букв, цифр, подчерков.

2. Строка должна начинаться с буквы.

3. Строка не может начинаться со спецсимволов.

4. В строке не может быть пробелов.

5. В строке не могут быть управляющие символы.

Для определения, удовлетворяет ли строка этим правилам, вводится специальный предикат isname(string) – проверяет содержание в строке посторонних символов. Обратная ситуация not(isname(string))

Предикат используется для преобразования текста с одного языка на другой, для обработки данных, введенных с клавиатуры и для генерации исходных файлов.

Атомом (token) называется последовательность символов, которая являются особым видом строки. Атомом может быть любое число, символ (кроме пробела), переменная. Для работы с атомами имеется встроенный предикат, который называется fronttoken, он используется для формирования атомов и строк:

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

При работе с этим предикатом должна быть означена либо строка, либо атом и остаток строки.

Примеры.

1. fronttoken (Str, ”Det”, “Dir”) дает Str=“DefDir”

2. fronttoken (“Pointer”, Token,Rest) дает Token=”Pointer”,Rest= “ “.

3. fronttaken(“$ Com”, A,T). Ответ: A=”$”, T= “Com”,

Предикат fronttoken используется также для преобразования строки в список атомов:

convert(строка, список) – cтроку переводит в список, результат – список.

convert(Str, [H|T]):= fronttoken(Str, H, Str1),!, – рекурсивное правило

convert(Str1, Т).

Граничное правило: convert(_, [ ]).

Второй вариант предиката будет успешным, если список пуст и определяет начало преобразования.

Пример.

domains

str _list=symbol*

str=string

predicates

convers(Str, Str_list)

clauses

convers(...)

Строка «One two thre» преобразуется в список [one, two, thre].

При наборе программы часто приходится писать длинный список утверждений. Например, яблоко – (фрукт), фрукт – (груша), фрукт – (слива). Эти утверждения могут быть построены на основе входной строки «яблоко, груша, слива». При преобразовании строки в список сначала добавляется имя функтора, т.е.: [фрукт(яблоко), фрукт(слива)].

Правило располагает их по строчкам и присоединяет точку к каждому элементу с функтором. После построения правила, формирующего список, необходимо построить правило преобразования с использованием предиката fronttoken.

Правило этого преобразования должно удовлетворять двум требованиям.

1. transt (“ “, [ ])

2. правило должно проверять тип каждого элемента и для целого числа должно давать имя функтора n, для символа – ch, для строки – s.

Правило: tranf(str, [H|T]): – fronttoken (Str, Symboltype, Strx), – используется для вытаскивания первого атома из строки,

choosetoken(Symboltype, H), – определяет тип

transt(Strx, T).

Подправила:

choosetoken (S, n, (N)): – str_int (S, N)

choosetoken(S, c(C)): – str_char(S, C).

choosetoken (S, s (S)): – isname(S)

Правило transt допускает строки, состоящие из символов и чисел. В момент вызова правила значение Symbol_type может быть числом, символом или именем. Тип Symbol_type определяется с помощью choosetoken

Пример.

domains

token_type=n(integer); c(char); s(string)

token_list=token_type*

predicates

transt(string, token_list)

choose_token(strin, token_type)

clauses

transt(“”, []).

transt(....) – смотри выше.

Запрос goal: transt(«LOTUS 123», Ft) дает список [s(«LOTUS»), n(123)].

 


Дата добавления: 2015-09-06; просмотров: 95 | Нарушение авторских прав


Читайте в этой же книге: Элементы семиотики | Модель непосредственных составляющих | Расширенные сети переходов | Глубинные (семантические) падежи | Пакет Turbo Prolog | Поиск решений | Метод отсечения и отката (ОО). | Методы организации рекурсии | Отладка программы и обнаружение ошибок | Создание графического режима. |
<== предыдущая страница | следующая страница ==>
Работа с символами и строками| Создание динамических баз данных

mybiblioteka.su - 2015-2024 год. (0.007 сек.)