Скачиваний:
14
Добавлен:
01.05.2014
Размер:
131.07 Кб
Скачать

Лексический анализ Типы лекскем

идентификаторы

id констант (предопределенные константы: false, true)

id типов (предопределенные типы: boolean, integer, byte, word, longint, shortint)

id переменных

id меток

константы

idn (числовые)

bool (логические) (false, true)

зарезервированные слова

and, begin, boolmatr, const, div, else, end, goto, if, mod, not, of, or, program, repeat, shl, shr, then, type, until, var, xor.

операторы

read, readln, write, writeln, :=

знаки операций

арифметические -,*, /, +, -,

логические not, and, div, mod, or, xor,

отношения <, <=, >, >=, =, <>

разделители

; | пробел | . | , | : | табулятор | признак конца строки | знаки операций | ( | ) | { | }

Классы литер.

<Буква>::=A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|

a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z | _

<Цифра>::=0|1|2|3|4|5|6|7|8|9

<символы>::=*, /, +, -, <, <=, >, >=, =, , :=, <>, (*, *), , , {, }, :, ; , . , ..

Диаграмма детерминированного конечного преобразователя, который выделяет одну лексему из потока литер:

Диаграммы переходов

Знак – прочитанная

буква или цифра.

неверный идентификатор

Описание процедур выполняемых при переходе между состояниями.

SS1 – чтение лексемы, определение (символ, число, идентификатор)

SS– вывод сообщения об ошибке

S1B– опеределение типа лексемы

S1N– Проверка, является ли число меткой.

S1out– вывод символа в выходной поток.

Nout– вывод числа в выходной поток

BO– лексема оператор, проверка в таблице вывод кода в выходной поток

BW– лексема зарезервированное слово, проверка в таблице

BA– лексема арифметическая операция, проверка в таблице

BR– лексема операция отношения, проверка в таблице

BC– лексема константа, проверка в таблице, если секция констант занесение в таблицу

BT– лексема тип, проверка в таблице, если секция типов занесение в таблицу

BV– лексема переменная, проверка в таблице, если секция переменных занесение в таблицу

BS– лексема строка, занесение в таблицу

BL– лексема метка, проверка в таблице, если секция меток занесение в таблицу

NL– лексема метка, проверка в таблице, если секция меток занесение в таблицу

Oout- вывод кода оператора в выходной поток

Wout- вывод кода зарезервированного слова в выходной поток

Aout- вывод кода арифметической операции в выходной поток

Rout- вывод кода операции отношения в выходной поток

Cout- вывод кода константы в выходной поток

Tout- вывод кода типа в выходной поток

Vout- вывод кода переменной в выходной поток

Sout- вывод кода строки в выходной поток

Lout- вывод кода метки в выходной поток

outF– проверка правильности использования меток

outS1 – чтение следующей лексемы

outE– вывод сообщения об ошибке.