ВУЗ:
Составители:
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
- …
- следующая ›
- последняя »
