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

S– атрибутный дмп процессор

В S-атрибутном ДМП-процессоре каждый магазинный символ имеет конечное множество полей для представления атрибутов. Магазинный символ сn-атрибутами представляется в магазинеn+1 ячейками памяти, верхняя из которых содержит имя символа, а остальные поля для атрибутов.

Поля магазинного символа заполняются значениями атрибутов в момент вталкивания символов в магазин и не изменяются до момента выталкивания его из магазина.

В S-атрибутном ДМП-процессоре операция переноса расширяется таким образом, что значения атрибутов переносимого входного символа помещаются с соответствующие поля вталкиваемого при переносе магазинного символа.

Когда выполняется операция свертки для правила с номером i, верхние символы магазина представляют правую часть i-го правила вывода входной грамматики, а поля магазинных символов содержат значения атрибутов соответствующих символов грамматики. Расширенная операция свертки использует эти значения для вычисления значений всех атрибутов операционных символов, связанных с правилом вывода транслирующей грамматики, и значений всех атрибутов нетерминала из левой части правой. Значения атрибутов операционных символов используются для выдачи результатов или выполнения других действий, определяемых этими символами

Пример атрибутного перевода для арифметических выражений

i5 + i7 * i2 -> {*}7,2,R1 {+}5,R1,R2

+

i

P

T

AEX

AEX

5

5

5

5

5

+ i7 * i2 + i7 * i2 + i7 * i2 + i7 * i2 i7 * i2

i

2

*

*

i

P

T

T

T

7

7

7

7

7

+

+

+

+

+

AEX

AEX

AEX

AEX

AEX

5

5

5

5

5

* i2 * i2 * i2 i2

P

2

*

T

T

7

R1

+

+

AEX

AEX

AEX

5

5

2

  {*}7,2,R1   {*}5,R1,R2

Управляющая таблица подграмматики оператора

МАТРИЦА ПРЕДШЕСТВОВАНИЯ :

---- ( количество элементов : 22 * 22 ) :

=====================================================================

I IOP !LOP!OPS!GOT!IN !LIN!MAT!( !) != !; !: !, !id !got!scn!

=====================================================================

IOP I ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !

I---I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---

ILOPI ! ! = ! < ! < ! ! < ! ! ! ! < ! ! ! < ! < ! < I

I---I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

IOPSI ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! I

I---I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

IGOTI ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! I

I---I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

IIN I ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! I

I---I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

ILINI ! ! ! ! ! ! ! ! = ! ! ! ! = ! ! ! I

I---I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

IMATI ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! I

I---I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

I( I ! ! ! ! !=< ! ! ! ! ! ! ! ! ! ! I

I---I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

I) I ! ! ! ! ! ! ! ! ! ! = ! ! ! ! ! I

I---I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

I= I ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! I

I---I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

I; I ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! I

I---I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

I: I ! ! ! ! ! ! ! ! ! ! > ! ! ! > ! > ! > I

I---I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

I, I ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! I

I---I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

Iid I ! ! ! ! ! ! ! ! ! = ! = ! = ! ! ! ! I

I---I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

IgotI ! ! ! ! ! ! ! ! ! ! ! ! ! = ! ! I

I---I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

IscnI ! ! ! ! ! ! ! = ! ! ! ! ! ! ! ! I

I---I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

IvarI ! ! ! ! ! ! ! ! > ! ! ! ! > ! ! ! I

I---I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

ImexI ! ! ! ! ! ! ! ! ! ! = ! ! ! ! ! I

I---I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

IopnI ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! I

I---I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

IsopI ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! I

I---I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

IoutI ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! I

I---I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

I + I ! < ! < ! < ! < ! ! < ! ! ! ! < ! ! ! < ! < ! < I

=====================================================================

=============================

I Ivar!mex!opn!sop!out!EpsI

=============================

IOP I ! ! ! ! ! I

I---I---+---+---+---+---+---I

ILOPI ! ! < ! < ! < ! I

I---I---+---+---+---+---+---I

IOPSI ! ! ! ! ! > I

I---I---+---+---+---+---+---I

IGOTI ! ! ! ! ! > I

I---I---+---+---+---+---+---I

IIN I ! ! ! ! ! > I

I---I---+---+---+---+---+---I

ILINI ! ! ! ! ! I

I---I---+---+---+---+---+---I

IMATI ! ! ! ! ! > I

I---I---+---+---+---+---+---I

I( I < ! ! ! ! ! I

I---I---+---+---+---+---+---I

I) I ! ! ! ! ! I

I---I---+---+---+---+---+---I

I= I ! = ! ! ! ! I

I---I---+---+---+---+---+---I

I; I ! ! ! ! ! > I

I---I---+---+---+---+---+---I

I: I ! ! > ! > ! > ! I

I---I---+---+---+---+---+---I

I, I = ! ! ! ! ! I

I---I---+---+---+---+---+---I

Iid I ! ! ! ! ! I

I---I---+---+---+---+---+---I

IgotI ! ! ! ! ! I

I---I---+---+---+---+---+---I

IscnI ! ! ! ! ! I

I---I---+---+---+---+---+---I

IvarI ! ! ! ! ! I

I---I---+---+---+---+---+---I

ImexI ! ! ! ! ! I

I---I---+---+---+---+---+---I

IopnI ! ! ! ! ! > I

I---I---+---+---+---+---+---I

IsopI ! ! ! ! ! > I

I---I---+---+---+---+---+---I

IoutI ! ! ! ! ! > I

I---I---+---+---+---+---+---I

I + I ! ! < ! < ! < ! I

=============================

ФУНКЦИИ ТИПА "ПЕРЕНОС-СВЕРТКА" :

---- функция "перенос" ( количество элементов : 23 * 15 ) :

====================================================================

I I( !) != !; !: !, !id !got!scn!var!mex!opn!sop!out!EpsI

====================================================================

IOP IОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ I

I------I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

ILOP IОШ !ОШ !ОШ !ПЕР!ОШ !ОШ !ПЕР!ПЕР!ПЕР!ОШ !ОШ !ПЕР!ПЕР!ПЕР!ОШ I

I------I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

IOPS IОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ ! C I

I------I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

IGOT IОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ ! C I

I------I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

IIN IОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ ! C I

I------I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

ILIN IОШ !ПЕР!ОШ !ОШ !ОШ !ПЕР!ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ I

I------I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

IMAT IОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ ! C I

I------I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

I( IОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ПЕР!ОШ !ОШ !ОШ !ОШ !ОШ I

I------I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

I) IОШ !ОШ !ОШ !ПЕР!ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ I

I------I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

I= IОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ПЕР!ОШ !ОШ !ОШ !ОШ I

I------I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

I; IОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ ! C I

I------I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

I: IОШ !ОШ !ОШ ! C !ОШ !ОШ ! C ! C ! C !ОШ !ОШ ! C ! C ! C !ОШ I

I------I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

I, IОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ПЕР!ОШ !ОШ !ОШ !ОШ !ОШ I

I------I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

Iid IОШ !ОШ !ПЕР!ПЕР!ПЕР!ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ I

I------I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

Igot IОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ПЕР!ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ I

I------I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

Iscn IПЕР!ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ I

I------I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

Ivar IОШ ! C !ОШ !ОШ !ОШ ! C !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ I

I------I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

Imex IОШ !ОШ !ОШ !ПЕР!ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ I

I------I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

Iopn IОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ ! C I

I------I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

Isop IОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ ! C I

I------I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

Iout IОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ ! C I

I------I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

I + IОШ !ОШ !ОШ !ПЕР!ОШ !ОШ !ПЕР!ПЕР!ПЕР!ОШ !ОШ !ПЕР!ПЕР!ПЕР!ОШ I

I------I---+---+---+---+---+---+---+---+---+---+---+---+---+---+---I

I + OP IОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ОШ !ДОПI

====================================================================

---- функция "свертка" ( количество элементов : 22 * 15 ) :

=====================================================

I I1 !2 !3 !4 !5 !6 !7 !8 !9 !10!11!12!13!14!15I

=====================================================

IOP IОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШI

I------I--+--+--+--+--+--+--+--+--+--+--+--+--+--+--I

ILOP IОШ!ОШ!3 !4 !5 !6 !7 !8 !9 !10!11!12!ОШ!ОШ!15I

I------I--+--+--+--+--+--+--+--+--+--+--+--+--+--+--I

IOPS IОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШI

I------I--+--+--+--+--+--+--+--+--+--+--+--+--+--+--I

IGOT IОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШI

I------I--+--+--+--+--+--+--+--+--+--+--+--+--+--+--I

IIN IОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШI

I------I--+--+--+--+--+--+--+--+--+--+--+--+--+--+--I

ILIN IОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШI

I------I--+--+--+--+--+--+--+--+--+--+--+--+--+--+--I

IMAT IОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШI

I------I--+--+--+--+--+--+--+--+--+--+--+--+--+--+--I

I( IОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!13!14!ОШI

I------I--+--+--+--+--+--+--+--+--+--+--+--+--+--+--I

I) IОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШI

I------I--+--+--+--+--+--+--+--+--+--+--+--+--+--+--I

I= IОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШI

I------I--+--+--+--+--+--+--+--+--+--+--+--+--+--+--I

I; IОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШI

I------I--+--+--+--+--+--+--+--+--+--+--+--+--+--+--I

I: IОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШI

I------I--+--+--+--+--+--+--+--+--+--+--+--+--+--+--I

I, IОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШI

I------I--+--+--+--+--+--+--+--+--+--+--+--+--+--+--I

Iid IОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШI

I------I--+--+--+--+--+--+--+--+--+--+--+--+--+--+--I

Igot IОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШI

I------I--+--+--+--+--+--+--+--+--+--+--+--+--+--+--I

Iscn IОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШI

I------I--+--+--+--+--+--+--+--+--+--+--+--+--+--+--I

Ivar IОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШI

I------I--+--+--+--+--+--+--+--+--+--+--+--+--+--+--I

Imex IОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШI

I------I--+--+--+--+--+--+--+--+--+--+--+--+--+--+--I

Iopn IОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШI

I------I--+--+--+--+--+--+--+--+--+--+--+--+--+--+--I

Isop IОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШI

I------I--+--+--+--+--+--+--+--+--+--+--+--+--+--+--I

Iout IОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШ!ОШI

I------I--+--+--+--+--+--+--+--+--+--+--+--+--+--+--I

I + I1 !2 !3 !4 !5 !6 !7 !8 !9 !10!11!12!ОШ!ОШ!15I

=====================================================

--- правила грамматики :

1) OP -> LOP OPS

2) OP -> OPS

3) LOP -> id :

4) OPS -> opn

5) OPS -> GOT

6) OPS -> IN

7) OPS -> out

8) OPS -> MAT

9) OPS -> sop

10) OPS -> ;

11) GOT -> got id ;

12) IN -> scn ( LIN ) ;

13) LIN -> var

14) LIN -> LIN , var

15) MAT -> id = mex ;

Соседние файлы в папке kurs