Скачиваний:
7
Добавлен:
01.05.2014
Размер:
47.1 Кб
Скачать

2. Описание синтаксического анализатора.

3.1. Входная грамматика анализатора.

Множеством терминальных символов языка, распознаваемого анализатором, служит множество лексем, порождаемых лексическим анализатором на предыдущем этапе.

Множество правил входной грамматики анализатора.

Множество правил входной LL(1) грамматики разбито на три подграмматики:

1) Подграмматика выражений.

Нетерминалы :

V

выражение

V’

остаток выражения

D

дизъюнкт

D’

остаток дизъюнкта

K

конъюнкт

K’

остаток конъюнкта

O

отношение

O’

остаток отношения

E

арифметическое выражение

E’

остаток арифметического выражения

T

терм

T’

остаток терма

M

множитель

M’

остаток множителя

Правила :

1) V ® D V' 2) V' ® e 3) V' ® || D V'

4) D ® K D' 5) D' ® e 6) D' ® && K D'

7) K ® O K' 8) K' ® e 9) K' ® == O K'

10) K' ® != O K' 11) O ® E O' 12) O' ® e

13) O' ® >= E O' 14) O' ® <= E O' 15) O' ® > E O'

16) O' ® < E O' 17) E ® T E' 18) E ® + T E'

19) E ® - T E' 20) E' ® e 21) E' ® + T E'

22) E' ® - T E' 23) T ® M T' 24) T' ® e

25) T' ® * M T' 26) T' ® / M T' 27) M ® ( V )

28) M ® i M' 29) M ® c 30) M ® length ( V )

31) M' ® e 32) M' ® [ V ]

Атрибутная грамматика.

Атрибутная грамматика для подграмматики выражений.

p - унаследованный

t - синтезированный

Vt1 ® Dt2 V'p1, t3 t1 ¬ t3 p1 ¬ t2

V'p, t ® e t ¬ p

V'p1, t1 ® || Dt2 {дизъюнкция}A1, A2, R V'p2, t3 t1 ¬ t3 A1 ¬ p1

A2 ¬ t2 p2 ¬ R

Dt1 ® Kt2 D'p1, t3 t1 ¬ t3 p1 ¬ t2

D'p, t ® e t ¬ p

D'p1, t1 ® && Kt2 {конъюнкция}A1, A2, R D'p2, t3 t1 ¬ t3 A1 ¬ p1

A2 ¬ t2 p2 ¬ R

Kt1 ® Ot2 K'p1, t3 t1 ¬ t3 p1 ¬ t2

K'p, t ® e t ¬ p

K'p1, t1 ® == Ot2 {равно}A1, A2, R K' p2, t3 t1 ¬ t3 A1 ¬ p1

A2 ¬ t2 p2 ¬ R

K'p1, t1 ® != Ot2 {неравно}A1, A2, R K' p2, t3 t1 ¬ t3 A1 ¬ p1

A2 ¬ t2 p2 ¬ R

Ot1 ® Et2 O'p1, t3 t1 ¬ t3 p1 ¬ t2

O'p, t ® e t ¬ p

O'p1, t1 ® >= Et2 {больше_или_равно}A1, A2, R O'p2, t3 t1 ¬ t3 A1 ¬ p1

A2 ¬ t2 p2 ¬ R

O'p1, t1 ® <= Et2 {меньше_или_равно}A1, A2, R O'p2, t3 t1 ¬ t3 A1 ¬ p1

A2 ¬ t2 p2 ¬ R

O'p1, t1 ® > Et2 {больше}A1, A2, R O'p2, t3 t1 ¬ t3 A1 ¬ p1

A2 ¬ t2 p2 ¬ R

O'p1, t1 ® < Et2 {меньше}A1, A2, R O'p2, t3 t1 ¬ t3 A1 ¬ p1

A2 ¬ t2 p2 ¬ R

Et1 ® Tt2 E'p1, t3 t1 ¬ t3 p1 ¬ t2

Et1 ® + Tt2 E'p1, t3 p1 ¬ t2

Et1 ® - Tt2 {унарный_минус}A1, A2, R E'p1, t3 A1 ¬ t2 p1 ¬ R

E'p, t ® e t ¬ p

E'p1, t1 ® + Tt2 {бинарный_плюс}A1, A2, R E'p2, t3 t1 ¬ t3 A1 ¬ p1

A2 ¬ t2 p2 ¬ R

E'p1, t1 ® - Tt2 {бинарный_минус}A1, A2, R E'p2, t3 t1 ¬ t3 A1 ¬ p1

A2 ¬ t2 p2 ¬ R

Tt1 ® Mt2 T'p1, t3 t1 ¬ t3 p1 ¬ t2

T'p, t ® e t ¬ p

T'p1, t1 ® * Mt2 {умножить}A1, A2, R T'p2, t3 t1 ¬ t3 A1 ¬ p1

A2 ¬ t2 p2 ¬ R

T'p1, t1 ® / Mt2 {разделить}A1, A2, R T'p2, t3 t1 ¬ t3 A1 ¬ p1

A2 ¬ t2 p2 ¬ R

Mt1 ® ( Vt2 ) t1 ¬ t2

Mt1 ® it2 M'p1, t3 p1 ¬ t2 t1 ¬ t3

Mt1 ® ct2 t1 ¬ t2

Mt1 ® length ( Vt2 ) {длина_вектора}A1, A2, R A1 ¬ t2 t1 ¬ R

M'p, t ® e t ¬ p

M'p1, t1 ® [ Vt2 ] {элемент_вектора}A1, A2, R A1 ¬ p1 A2 ¬ t2

t1 ¬ R

Соседние файлы в папке Курсовая работа2