Составители:
15
Рассмотрим семантические функции к R-схеме лексического анализатора
языка МИЛАН. Введем следующие обозначения:
- $Position - текущая позиция в строке, просматриваемая лексическим анали-
затором;
- $Number_String - текущая строка программы, просматриваемая лексиче-
ским анализатором;
- * - при любом условии (любой символ).
Семантические функции к R-схеме лексического анализатора:
y0: подготовка (инициализация таблиц и переменных), $Position=0,
$Number_String=1;
y1: чтение следующего символа программы на языке МИЛАН;
y2: увеличение счётчика текущей позиции ($Position++);
y3: переход на новую строку в программе, увеличение счётчика текущей
строки, и сброс счётчика позиции ($Number_String++, $Position=0);
y4: накопление символов ключевого слова или идентификатора;
y5: проверка на принадлежность выделенного слова к ключевым словам;
y6: проверка на принадлежность выделенного слова к идентификаторам;
y7: накопление символов константы;
y8: проверка на принадлежность выделенной константы таблице констант;
y9: запись сформированной лексемы в массив лексем;
y10: завершение работы лексического анализатора;
y11: формирование лексемы;
Ограничения: Программа на языке МИЛАН должна содержать <=15
идентификаторов, <= 15 констант, <=500 лексем
Пример №1: Рассмотрим пример обработки лексическим анализатором
программы на языке МИЛАН, вычисляющую сумму пяти вводимых чисел.
BEGIN
x:=0;
n:=5;
WHILE n>0 DO
z:= READ;
x:= x+z;
n:= n-1
ENDDO;
OUTPUT(x)
END
Результаты работы лексического анализатора:
1) Таблица лексем
номер
0
1
2
3
4
5
6
7
8
9
0
1 , 0
19 , 1
16 , 0
20 , 1
12 , 0
19 , 2
16, 0
20 , 2
12 , 0
10
11 , 0
19 , 2
13 , 2
20 , 1
2 , 0
19 , 3
16 , 0
9, 0
12 , 0
19 , 1
20
16 , 0
19 , 1
14 , 0
12 , 0
12 , 0
19 , 2
16 , 0
19, 2
14 , 1
20 , 3
30
5 , 0
12 , 0
8 , 0
19 , 1
19 , 1
18 , 0
4 , 0
Рассмотрим семантические функции к R-схеме лексического анализатора языка МИЛАН. Введем следующие обозначения: - $Position - текущая позиция в строке, просматриваемая лексическим анали- затором; - $Number_String - текущая строка программы, просматриваемая лексиче- ским анализатором; - * - при любом условии (любой символ). Семантические функции к R-схеме лексического анализатора: y0: подготовка (инициализация таблиц и переменных), $Position=0, $Number_String=1; y1: чтение следующего символа программы на языке МИЛАН; y2: увеличение счётчика текущей позиции ($Position++); y3: переход на новую строку в программе, увеличение счётчика текущей строки, и сброс счётчика позиции ($Number_String++, $Position=0); y4: накопление символов ключевого слова или идентификатора; y5: проверка на принадлежность выделенного слова к ключевым словам; y6: проверка на принадлежность выделенного слова к идентификаторам; y7: накопление символов константы; y8: проверка на принадлежность выделенной константы таблице констант; y9: запись сформированной лексемы в массив лексем; y10: завершение работы лексического анализатора; y11: формирование лексемы; Ограничения: Программа на языке МИЛАН должна содержать <=15 идентификаторов, <= 15 констант, <=500 лексем Пример №1: Рассмотрим пример обработки лексическим анализатором программы на языке МИЛАН, вычисляющую сумму пяти вводимых чисел. BEGIN x:=0; n:=5; WHILE n>0 DO z:= READ; x:= x+z; n:= n-1 ENDDO; OUTPUT(x) END Результаты работы лексического анализатора: 1) Таблица лексем номер 0 1 2 3 4 5 6 7 8 9 0 1,0 19 , 1 16 , 0 20 , 1 12 , 0 19 , 2 16, 0 20 , 2 12 , 0 10 11 , 0 19 , 2 13 , 2 20 , 1 2,0 19 , 3 16 , 0 9, 0 12 , 0 19 , 1 20 16 , 0 19 , 1 14 , 0 12 , 0 12 , 0 19 , 2 16 , 0 19, 2 14 , 1 20 , 3 30 5,0 12 , 0 8,0 19 , 1 19 , 1 18 , 0 4,0 15
Страницы
- « первая
- ‹ предыдущая
- …
- 13
- 14
- 15
- 16
- 17
- …
- следующая ›
- последняя »