ВУЗ:
Составители:
16
Алгоритм 2.1. Разбор цепочек символов по ДС с действиями
Шаг 1. Объявляем текущим начальное состояние ДС H.
Шаг 2. До тех пор, пока не будет достигнуто состояние
ER или конечное
состояние ДС, считываем очередной символ анализируемой строки и перехо-
дим из текущего состояния ДС в другое по дуге, помеченной этим символом,
выполняя при этом соответствующие действия. Состояние, в которое попадаем,
становится текущим.
ЛА строится в два этапа:
1) построить ДС с действиями для распознавания и формирования внут-
реннего представления лексем;
2) по ДС с действиями написать программу сканирования текста исход-
ной программы.
Пример 2.7. Составим ЛА для модельного языка М. Предварительно вве-
дем следующие обозначения для переменных, процедур и функций.
Переменные:
1) СН – очередной входной символ;
2)
S - буфер для накапливания символов лексемы;
3)
B – переменная для формирования числового значения константы;
4)
CS - текущее состояние буфера накопления лексем с возможными зна-
чениями:
Н - начало, I - идентификатор, N - число, С - комментарий, DV – двое-
точие,
О - ограничитель, V - выход, ER –ошибка;
5)
t - таблица лексем анализируемой программы с возможными значе-
ниями:
TW - таблица служебных слов М-языка, TL – таблица ограничителей М-
языка,
TI - таблица идентификаторов программы, TN – чисел, используемых в
программе;
6)
z - номер лексемы в таблице t (если лексемы в таблице нет, то z=0).
Процедуры и функции:
1) gc – процедура считывания очередного символа текста в переменную
СН;
2)
let – логическая функция, проверяющая, является ли переменная СН
буквой;
3)
digit - логическая функция, проверяющая, является ли переменная СН
цифрой;
4)
nill – процедура очистки буфера S;
5)
add – процедура добавления очередного символа в конец буфера S;
6)
look(t) – процедура поиска лексемы из буфера S в таблице t с возвраще-
нием номера лексемы в таблице;
7)
put(t) – процедура записи лексемы из буфера S в таблицу t, если там не
было этой лексемы, возвращает номер данной лексемы в таблице;
8)
out(n, k) – процедура записи пары чисел (n, k) в файл лексем.
Шаг 1. Построим ДС с действиями для распознавания и формирования
внутреннего представления лексем модельного языка
М (рисунок 2.5).
Алгоритм 2.1. Разбор цепочек символов по ДС с действиями Шаг 1. Объявляем текущим начальное состояние ДС H. Шаг 2. До тех пор, пока не будет достигнуто состояние ER или конечное состояние ДС, считываем очередной символ анализируемой строки и перехо- дим из текущего состояния ДС в другое по дуге, помеченной этим символом, выполняя при этом соответствующие действия. Состояние, в которое попадаем, становится текущим. ЛА строится в два этапа: 1) построить ДС с действиями для распознавания и формирования внут- реннего представления лексем; 2) по ДС с действиями написать программу сканирования текста исход- ной программы. Пример 2.7. Составим ЛА для модельного языка М. Предварительно вве- дем следующие обозначения для переменных, процедур и функций. Переменные: 1) СН – очередной входной символ; 2) S - буфер для накапливания символов лексемы; 3) B – переменная для формирования числового значения константы; 4) CS - текущее состояние буфера накопления лексем с возможными зна- чениями: Н - начало, I - идентификатор, N - число, С - комментарий, DV – двое- точие, О - ограничитель, V - выход, ER –ошибка; 5) t - таблица лексем анализируемой программы с возможными значе- ниями: TW - таблица служебных слов М-языка, TL – таблица ограничителей М- языка, TI - таблица идентификаторов программы, TN – чисел, используемых в программе; 6) z - номер лексемы в таблице t (если лексемы в таблице нет, то z=0). Процедуры и функции: 1) gc – процедура считывания очередного символа текста в переменную СН; 2) let – логическая функция, проверяющая, является ли переменная СН буквой; 3) digit - логическая функция, проверяющая, является ли переменная СН цифрой; 4) nill – процедура очистки буфера S; 5) add – процедура добавления очередного символа в конец буфера S; 6) look(t) – процедура поиска лексемы из буфера S в таблице t с возвраще- нием номера лексемы в таблице; 7) put(t) – процедура записи лексемы из буфера S в таблицу t, если там не было этой лексемы, возвращает номер данной лексемы в таблице; 8) out(n, k) – процедура записи пары чисел (n, k) в файл лексем. Шаг 1. Построим ДС с действиями для распознавания и формирования внутреннего представления лексем модельного языка М (рисунок 2.5). 16
Страницы
- « первая
- ‹ предыдущая
- …
- 14
- 15
- 16
- 17
- 18
- …
- следующая ›
- последняя »