ВУЗ:
Составители:
24
2.5 Семантический анализатор программы
В ходе семантического анализа проверяются отдельные правила записи
исходных программ, которые не описываются КС-грамматикой. Эти правила
носят контекстно-зависимый характер, их называют семантическими соглаше-
ниями или контекстными условиями.
Рассмотрим пример построения семантического анализатора (СеА) для
программы на модельном языке М. Соблюдение контекстных условий для язы-
ка М предполагает три типа проверок:
1) обработка описаний;
2) анализ выражений;
3) проверка правильности операторов.
В оптимизированном варианте СиА и СеА совмещены и осуществляются
параллельно. Поэтому процедуры СеА будем внедрять в ранее разработанные
процедуры СиА.
Вход: файл лексем в числовом представлении.
Выход: заключение о семантической правильности программы или о типе
обнаруженной семантической ошибки.
Обработка описаний
Задача обработки описаний - проверить, все ли переменные программы
описаны правильно и только один раз. Эта задача решается следующим обра-
зом.
Таблица идентификаторов, введенная на этапе лексического анализа,
расширяется, приобретая вид таблицы 2.1. Описание таблицы идентификаторов
будет иметь вид:
type
tabid = record
id :string;
descrid :byte;
typid :string[4];
addrid :word
end;
var
TI: array[1.. n] of tabid;
Таблица 2.1 – Таблица идентификаторов на этапе СеА
Номер Идентификатор Описан Тип Адрес
1
K
1
Int
…
2
Sum
0 … …
Поле «описан» таблицы на этапе лексического анализа заполняется ну-
лем, а при правильном описании переменных на этапе семантического анализа
заменяется единицей.
2.5 Семантический анализатор программы В ходе семантического анализа проверяются отдельные правила записи исходных программ, которые не описываются КС-грамматикой. Эти правила носят контекстно-зависимый характер, их называют семантическими соглаше- ниями или контекстными условиями. Рассмотрим пример построения семантического анализатора (СеА) для программы на модельном языке М. Соблюдение контекстных условий для язы- ка М предполагает три типа проверок: 1) обработка описаний; 2) анализ выражений; 3) проверка правильности операторов. В оптимизированном варианте СиА и СеА совмещены и осуществляются параллельно. Поэтому процедуры СеА будем внедрять в ранее разработанные процедуры СиА. Вход: файл лексем в числовом представлении. Выход: заключение о семантической правильности программы или о типе обнаруженной семантической ошибки. Обработка описаний Задача обработки описаний - проверить, все ли переменные программы описаны правильно и только один раз. Эта задача решается следующим обра- зом. Таблица идентификаторов, введенная на этапе лексического анализа, расширяется, приобретая вид таблицы 2.1. Описание таблицы идентификаторов будет иметь вид: type tabid = record id :string; descrid :byte; typid :string[4]; addrid :word end; var TI: array[1.. n] of tabid; Таблица 2.1 – Таблица идентификаторов на этапе СеА Номер Идентификатор Описан Тип Адрес 1 K 1 Int … 2 Sum 0 … … Поле «описан» таблицы на этапе лексического анализа заполняется ну- лем, а при правильном описании переменных на этапе семантического анализа заменяется единицей. 24
Страницы
- « первая
- ‹ предыдущая
- …
- 22
- 23
- 24
- 25
- 26
- …
- следующая ›
- последняя »