ВУЗ:
Составители:
4 Семантический анализ
4.1 Основные понятия
Задачи семантического анализа – проверка правильности опи-
сания переменных и проверка соответствия типов переменных в
выражениях и операторах.
Семантический анализ проводится с помощью КЗ - грамматик.
Семантический анализатор (СеА) - программа, производящая
семантический анализ.
В оптимизированном варианте СиА и СеА совмещены и
дополняют друг друга.
4.2 Семантический анализатор для языкa MPL
О6работка описаний
Задача - проверить, все ли переменные описаны., причем
один раз. Эта задача решается следующим образом.
Таблица идентификаторов, введенная на этапе лексического
анализа, расширяется, приобретая вид:
Таблица 4.1
идентификатор описан тип адрес
1
2
K
Sum
1
0
Int
…
…
…
Ее описание:
Type TABID = record
ID : string
descrid : byte;
typid : string [4];
addrid : word
end;
var TI : array [1.. n] of TABID
Поле "описан" на этапе лексического анализа заполняется ну-
лем; при правильном описании переменных на этапе семантическо-
го анализа заменяется единицей.
При выполнении процедуры D вводится стековая
переменная-массив, в которую заносится контрольное число 0, а
затем, по мере успешного выполнения процедуры I заносятся
номера считываемых из файла лексем, которые эти лексемы имеют
в таблице идентификаторов.
Var k,zum: int
(1,2) (4,1) (2,3) (4,2)
210
19
4 Семантический анализ 4.1 Основные понятия Задачи семантического анализа – проверка правильности опи- сания переменных и проверка соответствия типов переменных в выражениях и операторах. Семантический анализ проводится с помощью КЗ - грамматик. Семантический анализатор (СеА) - программа, производящая семантический анализ. В оптимизированном варианте СиА и СеА совмещены и дополняют друг друга. 4.2 Семантический анализатор для языкa MPL О6работка описаний Задача - проверить, все ли переменные описаны., причем один раз. Эта задача решается следующим образом. Таблица идентификаторов, введенная на этапе лексического анализа, расширяется, приобретая вид: Таблица 4.1 идентификатор описан тип адрес 1 K 1 Int … 2 Sum 0 … … Ее описание: Type TABID = record ID : string descrid : byte; typid : string [4]; addrid : word end; var TI : array [1.. n] of TABID Поле "описан" на этапе лексического анализа заполняется ну- лем; при правильном описании переменных на этапе семантическо- го анализа заменяется единицей. При выполнении процедуры D вводится стековая переменная-массив, в которую заносится контрольное число 0, а затем, по мере успешного выполнения процедуры I заносятся номера считываемых из файла лексем, которые эти лексемы имеют в таблице идентификаторов. Var k,zum: int (1,2) (4,1) (2,3) (4,2) 0 1 2 19
Страницы
- « первая
- ‹ предыдущая
- …
- 14
- 15
- 16
- 17
- 18
- …
- следующая ›
- последняя »