- •2. Описание синтаксического анализатора.
- •3.1. Входная грамматика анализатора.
- •Множество правил входной грамматики анализатора.
- •Атрибутная грамматика.
- •Семантические процедуры для операционных символов.
- •2) Атрибутная грамматика для подграмматики описаний.
- •Атрибутная грамматика.
- •Семантические процедуры для операционных символов.
Семантические процедуры для операционных символов.
Примечание: везде А1, А2 - унаследованные, R - синтезированный.
{дизъюнкция}A1, A2, R
Аномальные ситуации:
1) тип оператора А1, А2 не int.
R = адрес триады or А1, А2
{конъюнкция}A1, A2, R
Аномальные ситуации:
1) тип оператора А1, А2 не int.
R = адрес триады and А1, А2
{равно}A1, A2, R
Аномальные ситуации:
1) тип оператора А1, А2 - vector.
R = адрес триады equ А1, А2
{неравно}A1, A2, R
Аномальные ситуации:
1) тип оператора А1, А2 - vector.
R = адрес триады neq А1, А2
{больше_или_равно}A1, A2, R
Аномальные ситуации:
1) тип оператора А1, А2 - vector.
R = адрес триады geq А1, А2
{меньше_или_равно}A1, A2, R
Аномальные ситуации:
1) тип оператора А1, А2 - vector.
R = адрес триады leq А1, А2
{больше}A1, A2, R
Аномальные ситуации:
1) тип оператора А1, А2 - vector.
R = адрес триады grt А1, А2
{меньше}A1, A2, R
Аномальные ситуации:
1) тип оператора А1, А2 - vector.
R = адрес триады low А1, А2
{унарный_минус}A1, A2, R (параметр А2 фиктивный)
Аномальные ситуации:
1) нет.
R = адрес триады neg А1, А2
{бинарный_плюс}A1, A2, R
Аномальные ситуации:
1) если тип параметров vector и их размерности не совпадают.
2) если один из параметров имеет тип vector а второй int или float.
R = адрес триады add А1, А2
{бинарный_минус}A1, A2, R
Аномальные ситуации:
1) если тип параметров vector и их размерности не совпадают.
2) если один из параметров имеет тип vector а второй int или float.
R = адрес триады sub А1, А2
{умножить}A1, A2, R
Аномальные ситуации:
1) если тип параметров vector и их размерности не совпадают.
R = адрес триады mul А1, А2
{разделить}A1, A2, R
Аномальные ситуации:
1) если тип параметров vector и их размерности не совпадают.
R = адрес триады div А1, А2
{длина_вектора}A1, A2, R (параметр А2 фиктивный)
Аномальные ситуации:
1) если тип параметрa А1 не vector.
R = адрес триады len А1, А2
{элемент_вектора}A1, A2, R
Аномальные ситуации:
1) если тип параметрa А1 не vector.
2) если значение параметра А2 больше, чем размерность вектора.
R = адрес триады elm А1, А2
2) Атрибутная грамматика для подграмматики описаний.
Нетерминалы :
|
OPS |
последовательность описаний |
|
OP_ |
остаток последовательности описаний |
|
KO |
конкретное описание |
|
KO’ |
остаток конкретного описания |
|
KOV |
конкретное описание вектора |
|
KO_ |
остаток конкретного описания вектора |
|
OV |
описание вектора |
|
OV’ |
остаток описания вектора |
|
OP |
описание |
|
OST |
остаток описания |
|
OC |
описание константы |
Правила :
1) OPS ® OP OP_ 2) OPS ® e 3) OP_ ® OP OP_
4) OP_ ® e 5) KO ® i = V KO'
6) KO' ® e 7) KO' ® , i = V KO'
8) KOV ® OV KO_ 9) KO_ ® e 10) KO_ ® , OV KO_
11) OV ® i = { V OST } 12) OST ® , V OST
13) OST ® e 14) OP ® int KO ;
15) OP ® flt KO ; 16) OP ® vct [ V ] KOV ;
17) OP -> cst OC 18) OC -> int KO ;
19) OC -> flt KO ; 20) OC -> vct [ V ] KOV ;
