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

<I>A1B1 ::= '{'<Опис.>A2B2 <Опер.>A3B3 '}'

A2=A1;A3=B2;B1=B3

<Массив b>A4B4X1 ::= '<arr>'<Ид.>X2' '<Ч.>Y1{ЗРМ}X3Y2R1R2 <R3>X4R3{ФМБ}A5B5X5'</arr>'

A5=A4;B4=B5;R1=0;R3=R2;(X1,X3,X4,X5)=X2;Y2=Y1

<Массив c>A6B6X6 ::= '<arr>'<Ид.>X7' '<Ч.>Y3{ЗРМ}X8Y4R4R5 <R3>X9R6{ФМЧ}A7B7X10'</arr>'

A7=A6;B6=B7;R4=0;R6=R5;(X6,X8,X9,X10)=X7;Y4=Y3

<R3>X11R7 ::= ' '<Ч.>Y5{ЗРМ}X12Y6R8R9 <R3>X13R10

R8=R7;R10=R9;(X12,X13)=X11;Y6=Y5

<R3>X14R11 ::= $

<Эл. мас.>T1 ::= '<marr>'<Ид.>X15' '<Ч.>Y7{ФСД}X16Y8R12R13P1P2<R4>X17R14P3P4{ФУТЗЭМ}X18P5T2'</marr>'

T1=T2;(X16,X17,X18)=X15;Y8=Y7;P1=0;P3=P2;R12=0;R14=R13;P5=P4

<R4>X19R15P6P7 ::= ' '<Ч.>Y9{ФСД}X20Y10R16R17P8P9<R4>X21R18P10P11

(X20,X21)=X19;Y10=Y9;P8=P6;P10=P9;R16=R15;R18=R17;P7=P11

<R4>X22R19P12P13 ::= $

P13=P12

<Опис.>A8B8 ::= '<bool>'<Тип Bool>A9B9 '</bool>'';'<R5>A10B10

A9=A8;A10=B9;B8=B10

<Опис.>A11B11 ::= '<char>'<Тип Char>A12B12 '</char>'';'<R5>A13B13

A12=A11;A13=B12;B11=B13

<Тип Bool>A14B14::= <Ид.>X23{ВПБ}A15B15X24<R6>A16B16

A15=A14;A16=B15;X24=X23;B14=B16

<Тип Bool>A17B17 ::= <Массив b>A18B18X25<R6>A19B19

A18=A17;A19=B18;B17=B19

<Тип Bool>A20B20 ::= '<ass>'<Класс Bool>A21B21'</ass>'<R6>A22B22

A21=A20;A22=B21;B20=B22

<Класс Bool>A23B23 ::= <Ид.>X26{ВПБ}A24B24X27' '<Константа>Z1{ЗТЗ}X28Z2

A24=A23;B23=B24;(X27,X28)=X26;Z2=Z1

<Класс Bool>A25B25 ::= <Массив b>A26B26X29<Иниц.мас.Bool>X30

A26=A25;B25=B26;X30=X29

<Иниц.мас.Bool>X31 ::= '<iarr>'<Константы>X32'</iarr>'

X32=X31

<Константы>X33 ::= <Константа>Z3{ЗТЗМБ}X34Z4P14P15<R7>X35P16

(X34,X35)=X33;Z4=Z3;P14=0;P16=P15

<R7>X36P17:= ' '<Константа>Z5{ЗТЗМБ}X37Z6P18P19<R7>X38P20

(X37,X38)=X36;Z6=Z5;P18=P17;P20=P19

<R7>X39P21 ::= $

<R6>A27B27 ::= ','<Тип Bool>A28B28

A28=A27;B27=B28

<R6>A29B29 ::= $

B29=A29

<Тип Char>A30B30::= <Ид.>X40{ВПЧ}A31B31X41<R8>A32B32

A31=A30;A32=B31;X41=X40;B30=B32

<Тип Char>A33B33 ::= <Массив c>A34B34X42<R8>A35B35

A34=A33;A35=B34;B33=B35

<Тип Char>A36B36 ::= '<ass>'<Класс Char>A37B37'</ass>'<R8>A38B38

A37=A36;A38=B37;B36=B38

<Класс Char>A39B39 ::= <Ид.>X43{ВПЧ}A40B40X44' '<Символ>C1{ЗТЗ}X45C2

A40=A39;B39=B40;(X44,X45)=X43;C2=C1

<Класс Char>A41B41 ::= <Массив c>A42B42X46<Иниц.мас.Char>X47

A42=A41;B41=B42;X47=X46

<Иниц.мас.Char>X48 ::= '<iarr>'<Символы>X49'</iarr>'

X49=X48

<Символы>X50 ::= <Символ>C3{ЗТЗМЧ}X51C4P22P23<R9>X52P24

(X51,X52)=X51;C4=C3;P22=0;P24=P23

<R9>X53P25 ::= ' '<Символ>C5{ЗТЗМЧ}X54C6P26P27<R9>X55P28

(X55,X56)=X53;C6=C5;P26=P25;P28=P27

<R9>X56P29 ::= $

<R8>A43B43 ::= ','<Тип Char>A44B44

A44=A43;B43=B44

<R8>A45B45 ::= $

B45=A45

<R5>A46B46 ::= <Опис.>A47B47

A47=A46;B46=B47

<R5>A48B48 ::= $

B48=A48

<Опер.>A49B49 ::= '<ass>'<Оп1>T3' '<Л.опер.>A50B50T4{ФAT=}T5T6T7'</ass>';'<R10>A51B51

A50=A49;A51=B50;B49=B51;(T5,T7)=T3;T6=T4

<Оп1>T8 ::= <Ид.>X57{ФУТЗИ}X58T9

T8=T9;X58=X57

<Оп1>T10 ::= <Эл.мас.>T11

T10=T11

<Л.опер.>A52B52T12::= '<and>'<Оп2>A53B53T13' '<Оп2>A54B54T14{ФAT&}T15T16T17{УК}B55B56'</and>'

A53=A52;A54=B53;B52=B56;(T12,T17,B55)=B54;T15=T13;T16=T14

<Л.опер.>A57B57T18::= '<or>'<Оп2>A58B58T19' '<Оп2>A59B59T20{ФATV}T21T22T23{УК}B60B61'</or>'

A58=A57;A59=B58;B57=B61;(T18,T23,B60)=B59;T21=T19;T22=T20

<Л.опер.>A62B62T24 ::= '<not>'<Оп2>A63B63T25{ФАТ!}T26T27T28{УК}B64B65'</not>'

A63=A62;B62=B65;(T24,T28,B65)=B63;T26=T25;T27=NULL

<Оп2>A66B66T29 ::= <Символ>C7

T29=C7;B66=A66

<Оп2>A67B67T30 ::= <Константа>Z7

T30=Z7;B67=A67

<Оп2>A68B68T31 ::= <Л.опер.>A69B69T32

A69=A68;B68=B69;T31=T32

<Оп2>A70B70T33 ::= <Ид.>X59{ФУТЗИ}X60T34

T33=T34;X60=X59;B70=A70

<Оп2>A71B71T35 ::= <Эл.мас.>T36

T35=T36;B71=A71

<R10>A72B72 ::= <Опер.>A73B73

A73=A72;B72=B73

<R10>A74B74 ::= $

B74=A74

При работе нам понадобятся следующие атрибуты:

1. Идентификатор

X-номер идентификатора в таблице идентификаторов

2. Число

Y-номер числа в таблице чисел

3. Константа bool

Z-номер ячейки в таблице констант bool

3. Константа char

C-номер ячейки в таблице констант char

4. Ячеки таблицы значений

A,B-атрибуты для работы с ячейками таблицы значений

A-указывает на очередную свободную ячейку, B-указывает на следующую свободную ячейку.

T-номер ячейки памяти, где хранится данная переменная

5. Массив

R-номер (по порядку) очередного обрабатываемого числа в конструкциях, определяю-щих действие над массивом (его элементами)

P-сдвиг в массиве относительно его начала

Все наследуемые атрибуты предназначены для сборки информации о переменных, операциях. Все наследуемые атрибуты предназначены для реагирования на какие-либо действия (формирование новой переменной, операции).

Соседние файлы в папке Курсовой проект по дисциплине Формальные грамматики, языки и автоматы