- •1. Постановка задачи
- •Задание 10
- •2. Описание входного языка
- •2.1. Синтаксис входного языка
- •2.2. Семантика входного языка
- •2.2.1.Встроенные типы данных входного языка
- •2.2.2.Операции входного языка и их приоритет
- •2.2.3.Конструкции входного языка
- •3. Описание этапа лексического анализа.
- •3.1. Определение типов лексем.
- •3.2. Определение синтаксиса лексем
- •3. Описание этапа синтаксического анализа.
- •3.1 Построение кс-грамматики входного языка.
- •3.2 Определение класса кс-грамматики входного языка.
- •3.3 Постоение таблиц переменных, меток, констант и векторов
- •3.4 Описание промежуточного языка.
- •3.5 Неформальное описание перевода
- •Построение транслирующей грамматики
- •Построение атрибутной транслирующей грамматики
- •Построение атрибутного дмп-процессора
- •Тестирование атрибутного дмп-процессора
Тестирование атрибутного дмп-процессора
В качестве тестового примера возьмем программу из пп. 3.2.7:
int a=3.2;
vector b[3];
void main()
{ b=[7 a 0.8];
if (b[2]==a)
printf (“a=”,a);
}
Атрибут идентификатора ID p р – указатель на строку в таблице переменных. Для наглядности будем обозначать его просто именем переменной. В графе «входная цепочка отображается часть входной цепочки, жирным выделено положение читающей головки. В графе «выход» отображаются новые тетрады выходной цепочки. В графе «элемент» отображается номер правила грамматики, примененного на этом шаге или элемент управляющей таблицы.
Отображать состояние (конфигурацию) ДМП=процессора будем следующими блоками:
стек |
вход |
элемент | |
выход |
S
┴
|
int a=3.2; … |
Decl void main ( ) { Sop } ┴ |
int a=3.2; … |
Decl1 ; Decl void main ( ) { Sop } ┴ |
int a=3.2; … |
Typ 1 ID 2 {NVar} 1 2 Decl1’ 2 ; Decl void … |
int a=3.2; … | ||||||||||||||||||||||||||||||||||||||||||||||||
1 |
55 |
57 |
73 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||
Type 1 ID 2 {NVar} 1 2 Decl1’ 2 ; Decl void … |
int a=3.2; … |
ID 2 {NVar} int 2 Decl1’ 2 ; Decl void main ... |
a=3.2; … |
{NVar} int a Decl1’ a ; Decl void main ( … |
=3.2; … |
Decl1’ a ; Decl void main ( ) { Sop } ┴ |
=3.2; … | ||||||||||||||||||||||||||||||||||||||||||||||||
выброс |
выброс |
выдача |
60 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
NVar a int
| ||||||||||||||||||||||||||||||||||||||||||||||||||||
= Num 2 {GOp} 1 a 2 ; Decl void … |
=3.2; vector b[3]; … |
Num 2 {GOp} 1 a 2 ; Decl void main … |
3.2; vector b[3]; … |
СF 2 {GOp} 1 a 2 ; Decl void main … |
3.2; vector b[3]; … |
{GOp} 1 a 3.2 ; Decl void main ( … |
; vector b[3]; … | ||||||||||||||||||||||||||||||||||||||||||||||||
выброс |
77 |
выброс |
выдача | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||
; Decl void main ( ) { … |
; vector b[3]; … |
Decl void main ( ) { … |
vector b[3]; … |
Decl1 ; Decl void main ( ) { Sop } ┴ |
vector b[3]; … |
vector ID 1 [ Dim 2 ] {NVec}
1 2 Decl’’ 1 2 ; … |
vector b[3]; … | ||||||||||||||||||||||||||||||||||||||||||||||||
выброс |
55 |
59 |
выброс | ||||||||||||||||||||||||||||||||||||||||||||||||||||
GOp 1 a 3.2 |
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||
ID 1 [ Dim 2 ] {NVec}
1 2 Decl’’ 1 2 ; … |
b[3]; … |
[ Dim 2 ] {NVec}
b 2 Decl’’ b 2 ; … |
[3]; … |
Dim 2 ] {NVec}
b 2 Decl’’ b 2 ; … |
3]; … |
] {NVec}
b 3 Decl’’ b 3 ; … |
]; void main() … | ||||||||||||||||||||||||||||||||||||||||||||||||
выброс |
выброс |
75 |
выброс | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||
{NVec}
b 3 Decl’’ b 3 ; Decl Void |
;void main() … |
Decl’’ b 3 ; Decl void main ( … |
;void main() … |
; Decl void main ( ) … |
;void main() … |
Decl void main ( ) { … |
void main() … | ||||||||||||||||||||||||||||||||||||||||||||||||
выдача |
63 |
выброс |
56 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|
NVec
b 3
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||
void main ( ) { … |
void main() |
main ( ) { … |
main() {b= … |
( ) { Sop } ┴ |
() {b= [ … |
) { Sop } ┴ |
) {b= [ … | ||||||||||||||||||||||||||||||||||||||||||||||||
выброс |
выброс |
выброс |
выброс | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||
{ Sop } ┴ |
{b= [7 … |
Sop } ┴ |
b= [7 а … |
Op Sop } ┴ |
b= [7 а … |
NOp ; Sop } ┴ |
b= [7 а … | ||||||||||||||||||||||||||||||||||||||||||||||||
выброс |
2 |
5 |
17 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||
Exp ; Sop } ┴ |
b= [7 а … |
Dis 2 Exp’ 2 1 ; Sop } ┴ |
b= [7 а … |
Con 3 Dis’ 3 2 Exp’ 2 1 … |
b= [7 а … |
Rel 4 Con’ 4 3 Dis’ 3 2 … |
b= [7 а … | ||||||||||||||||||||||||||||||||||||||||||||||||
33 |
38 |
41 |
44 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||
Sm 5 Rel’ 5 4 Con’ 4 3 … |
b= [7 а … |
Ml 6 Sm’ 6 5 Rel’ 5 4 … |
b= [7 а … |
Var 6 Sm’ 6 5 Rel’ 5 4 … |
b= [7 а … |
ID 7 Var’ 7 6 Sm’ 6 5 … |
b= [7 а … | ||||||||||||||||||||||||||||||||||||||||||||||||
47 |
51 |
66 |
выброс | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||
Var’ b 6 Sm’ 6 5 … |
= [7 а … |
Sm’ b 5 Rel’ 5 4 … |
= [7 а … |
Rel’ b 4 Con’ 4 3 … |
= [7 а … |
Con’ b 3 Dis’ 3 2 … |
= [7 а … | ||||||||||||||||||||||||||||||||||||||||||||||||
69 |
49 |
46 |
43 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||
Dis’ b 2 Exp’ 2 1 … |
= [7 а … |
Exp’ b 1 ; Sop } ┴ |
= [7 а … |
GOp 3 Dis 4 {GOp} 3 b 4 5 Exp’ 5 1 ; Sop } ┴ |
= [7 а … |
Dis 4 {GOp} = 2 4 5 Exp’ 5 1 ; Sop } ┴ |
[7 а 0.8] … | ||||||||||||||||||||||||||||||||||||||||||||||||
40 |
35 |
выброс |
38 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||
Con 6 Dis’ 6 4 {GOp} … |
[7 а 0.8] … |
Rel 7 Con’ 7 6 Dis’ 6 4 … |
[7 а 0.8] … |
Sm 8 Rel’ 8 7 Con’ 7 6 … |
[7 а 0.8] … |
Ml 9 Sm’ 9 8 Rel’ 8 7 … |
[7 а 0.8] … | ||||||||||||||||||||||||||||||||||||||||||||||||
41 |
44 |
47 |
51 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|