Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
9
Добавлен:
01.05.2014
Размер:
76.8 Кб
Скачать

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

1) Атрибутная грамматика для подграмматики описаний.

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

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

OPS ® OP OP_

OPS ® e

OP_ ® OP OP_

OP_ ® e

KOp1 ® i­t1 = Vt2 {присвоить}A1, A2,A3, R KO'p2 A1 ¬ p1 A2 ¬ t1

A3 ¬ t2 p 2 ¬ p1

KO’p1 ® i­t1 = Vt2 {присвоить}A1, A2,A3, R KO'p2 A1 ¬ p1 A2 ¬ t1

A3 ¬ t2 p 2 ¬ p1

KO'p ® e

KOVp1, p2 ® OV p3, p4 KO_ p5, p6 p3 ¬ p1 p5 ¬ p1

p4 ¬ p2 p6 ¬ p2

KO_ p1, p2 ® e

KO_ p1, p2 ® , OV p3, p4 KO_ p5, p6 p3 ¬ p1 p5 ¬ p1

p4 ¬ p2 p6 ¬ p2

OVp1, p2 ® it1 = { Vt2 {присвоить_элементу_вектора}A1, A2, A3, A4, R OSTp3, p4, p5 }

A1 ¬ p1 // тип

A2 ¬ p2 // индекс элемента вектора

A3 ¬ t2 ­// значение

A4 ¬ t1 // адрес переменной вектора

p3 ¬ p1 p4 ¬ p2 p5 ¬ t1

OSTp1, p2, p3 ® , Vt1 {присвоить_элементу_вектора}A1, A2, A3, A4, R OSTp3, p4, p5

A1 ¬ p1 A2 ¬ p2 A3 ¬ t1

A4 ¬ p5 p3 ¬ p1 p4 ¬ p2

p5 ¬ p3

OST p1, p2, p3 ® e

OP ® intt KOp ; p ¬ t

OP ® fltt KOp ; p ¬ t

OP ® vctt1 [ Vt2 ] KOVp1, p2 ; p1 ¬ t1 p2 ¬ t2

OP ® cst OC

OC ® intt KOp ; p ¬ tconst

OC ® fltt KOp ; p ¬ tconst

OC ® vctt1 [ Vt2 ] KOVp1, p2 ; p1 ¬ t1cosnt p2 ¬ t2

Примечание: тип = {int, float, vector, const int, const float, const vector}

Семантические процедуры для операционных символов.

Ai - унаследованные.

{присвоить}A1, A2,A3

A1 тип

2 адрес переменной

A3 значение

Тип переменной по адресу A2 получает значение A1.

Генерируется триада mov [A2], A3

Аномальные ситуации:

1) если тип значения и тип переменной не совпадают.

2) если переменная по адресу A2 константа.

{присвоить_элементу_вектора}A1, A2, A3, A4

A1 тип;

A2 индекс элемента вектора;

A3 значение;

A4 адрес переменной вектора;

Тип переменной по адресу A4 получает значение A1.

Генерируется триада mov [A4+A2], A3

Аномальные ситуации:

1) если тип значения не float.

2) если индекс элемента вектора превышает размерность вектора.

3) если переменная по адресу A2 константа.

Основная грамматика

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

PRG

Программа

PR1

остаток 1 программы

PO

Последовательность операторов

MSG

Сообщение

MS1

остаток сообщения

OPS

Описания

PR2

остаток 2 программы

O

Оператор

O1

остаток 1 оператора

O2

остаток 2 оператора

O3

остаток 3 оператора

O’

остаток оператора

P

Переменная

P1

остаток переменной

I1

Остаток

OP

оператор присваивания

OP1

остаток 1 оператора присваивания

OP2

остаток 2 оператора присваивания

OP’

остаток оператора присваивания

F1

остаток 1 для for

F2

остаток 2 для for

F3

остаток 3 для for

U

Условие

U1

остаток условия

Правила :

1) PRG ® OPS PR1 2) OPS ® e

3) PR1 ® void main ( ) { PR2 4) PR2 ® OPS PO }

5) PO ® O O' 6) O ® ;

7) O ® { PO } 8) O ® i O1

9) O ® printf ( MSG MS1 ) ; 10) O ® scanf ( P P1 ) ;

11) O ® goto i ; 12) O ® for ( F1

13) O' ® O O' 14) O' ® e

15) O1 ® : 16) O1 ® = O2

17) O1 ® [ V ] = O2 18) O2 ® i O3

19) O2 ® V ; 20) O3 ® = O2

21) O3 ® [ V ] = O2 22) MSG ® s

23) MSG ® V 24) MS1 ® , MSG MS1

25) MS1 ® e 26) P ® i I1

27) P1 ® , P P1 28) P1 ® e

29) I1 ® [ V ] 30) I1 ® e

31) OP ® i OP1 32) OP1 ® = OP2

33) OP1 ® [ V ] = OP2 34) OP2 ® V

  1. OP2 ® i OP1 36) F1 ® OP OP’ ; F2

37) F1 ® ; F2 38) F2 ® U ; F3

39) F2 ® ; F3 40) F3 ® OP OP’ ) O

41) F3 ® ) O 42) U ® V U1

43) U1 ® , V U1 44) U1 ® e

45) OP’ ® , OP OP’ 46) OP’ ® e

47) O ® if ( V ) O

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