1. Семантика анализа и символы действия.

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

1. Идентификатор.

Идентификатор должен начинаться с буквы и не иметь длину больше 10 символов.

Символы действия:

1. НИ (начало идентификатора)

Очистка буффера,установка счетчика длины в 1.

2. ФИ (формирование идентификатора)

Чтение очередного символа, проверка является ли он буквой или цифрой,

если нет, то в идентификаторе написан неверный символ.

3. КИ (конец идентификатора)

Проверка счетчика длины на допустимое значение, если превышает, то

ошибка в идентификаторе, если нет, то ищем идентификатор в таблице

идентификаторов, если его нет, то добавляем его туда, добавляем лексему

типа 1, с длиной идентификатора. Указатель лексекмы ставим на ячейку

таблицы идентификаторов, где находится идентификатор.

2. Число

Число не должено быть меньше 0 и больше 216.

Символы действия:

1. НЧ (начало числа)

Очистка буффера, установка счетчика длины в 1.

2. ФЧ (формирование числа)

Чтение очередного символа, увеличение счетчика на 1, проверка является

ли он цифрой, если нет, то в числе написан неверный символ.

3. КЧ (конец числа)

Проверка значения числа на допустимое значение, если не удовлетворяет,

то ошибка в числе, если удовлетворяет, то ищем число в таблице чисел

если его нет, то добавляем его туда, добавляем лексему типа 2, с длиной

числа. Указатель лексекмы ставим на ячейку таблицы чисел, где находится

число.

3. Служебное слово

Служебное слово должно быть точно описано в соответствии с языком.

Символы действия:

1. НСс (начало служ.слова)

Очистка буффера, установка счетчика длины в 1.

2. ФСс (формирование служ.слова)

Чтение очередного символа, увеличение счетчика на 1.

3. КСс (конец служ.слова)

Проверка на допустимость служебного слова,если допустимо, то добавля-

ем лексему типа 3, с длиной служ.слова. Указатель лексекмы ставим на

ячейку таблицы служ.слов, где находится служ.слово.

4. Константы (обоих типов)

Константы должны быть точно описаны в соответствии с языком.

Символы действия:

1. НК (начало константы)

Очистка буффера, установка счетчика длины в 1.

2. ФК (формирование константы)

Чтение очередного символа, увеличение счетчика на 1.

3. КК (конец константы)

Проверка на допустимость константы, если допустима, то добавляем лек-

сему типа 5(если костанта bool), типа 6(если константа char), с длиной кон-

станты. Указатель лексекмы ставим на ячейку соответствующей таблицы

констант где находится константа.

5. Разделители

Разделители должны быть точно описаны в соответствии с языком.

Символ действия:

1. ФК (формирование разделителя)

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

сему типа 4 с длиной константы. Указатель лексекмы ставим на ячейку

соответствующей таблицы разделителей где находится разделитель.

6. Ошибка

Символ действия:

1. НО (начало ошибки)

Вывод информации об ошибке

Соседние файлы в папке Курсовой проект по дисциплине Формальные грамматики, языки и автоматы