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

2.2. Подграмматика описаний

DEC

список описаний

DC

описание

DCC

остаток

T

спецификатор типа

T'

остаток спецификатора типа

ID

иниц. описатель

ID'

остаток иниц. описателя

IN

инициализатор

IN'

остаток инициализатора

DR

описатель

DR'

остаток описателя

  1. DEC  DC ; DEC

  2. DEC  

  3. DC  T ID DCC

  4. DCC  ID DCC

  5. DCC  

  6. T  const T'

  7. T  typedef T'

  8. T' type

  9. T'  vector [ e ]

  10. T'  limited [ e .. e ]

  11. ID  DR ID' ,

  12. ID'  = e

  13. ID'  

  14. DR  id DR'

  15. DR'  [ e ] DR'

  16. DR'  

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

  1. DEC  DC ; DEC

  2. DEC  

  3. DC  Ts1 IDp1 DCCp2

p1, p2  s1

  1. DCCp1  IDp2 DCCp3

p2, p3  p1

  1. DCC  

  2. Tp1  const T's1 {конст}A,R

A  s1; p1  R

  1. T  typedef T' {тип}A,R

A  s1; p1  R

  1. T's1typep1

s1  p1

  1. T's1  vector [ ep1 ] {вектор}A,R

A  p1; s1  R

  1. T's1  limited [ ep1 .. ep2 ] {ограниченный}A1,A2,R

A1  p1; A2  p2; s1  R

  1. IDp1  DRp2,s1 ID's2 {присвоить}A1,A2

p2  p1; A1  s1; A2  s2

  1. ID's1  = ep2

s1  p2

  1. ID's1  

s1  неопр.

  1. DRp1,s1  idp2 DR'p3,s2 {объявление}A1,A2,R

p3  p1; A1  s2; A2  p2; s1  R

  1. DR'p1,s1  [ ep2 ] {массив}A1,A2,R DR'p3,s2

A1  p1; A2  p2; p3  R; s1  s2

  1. DR'p1,s1

s1  p1

Семантические процедуры

{конст}A,R

Устанавливает модификатор const в типеA и возвращает вR.

{тип}A,R

Устанавливает модификатор typedef в типеA и возвращаетR.

{вектор}A,R

В R возвращает типvector[A].

{ограниченный}A1,A2,R

В R возвращает типlimited[A1 .. A2].

{массив}A1,A2,R

У типа A1 наращивает размерность массива, устанавливает количество элементов вA2, и возвращает вR.

{объявление}A1,A2,R

Добавляет A2 в таблицу идентификаторов (в какую именно – зависит отA1).

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

PRG

программа

CO

составной оператор

CO'

остаток составного оператора

OP

помеченный оператор

ST

оператор без метки

G

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

SE

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

IF

оператор if

IF'

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

  1. PRG  int main ( ) CO

  2. CO  { dec CO'

  3. CO'  OP CO'

  4. CO'  }

  5. OP  lab OP

  6. OP  ST

  7. OP  IF

  8. ST  CO

  9. ST  ;

  10. ST  e;

  11. ST  goto G

  12. G  id ;

  13. G  lab ;

  14. ST  return e ;

  15. ST  input ( e ) ;

  16. ST  output ( SE

  17. SE  e ) ;

  18. SE  str ) ;

  19. ST  while ( e ) ST

  20. IF  if ( e ) ST IF'

  21. IF'  else OP

  22. IF'  

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

  1. PRG  int main ( ) CO

  2. CO  { dec CO'

  3. CO'  OP CO'

  4. CO'  }

  5. OP  labp1 {метка}A OP

A p1

  1. OP  ST

  2. OP  IF

  3. ST  CO

  4. ST  ;

  5. ST  e;

  6. ST  goto G

  7. G  idp1 {переход}A ;

A p1

  1. G  labp1 {переход}A ;

A p1

  1. ST  return es1 {выход}A ;

A s1

  1. ST  input ( es1 {ввод}A ) ;

A s1

  1. ST  output ( SE

  2. SE  es1 {вывод}A ) ;

A s1

  1. SE  strs1 {вывод}A ) ;

A s1

  1. ST  while ( {уид}R1 {уид}R2 {метка}A1 ep1 {переход_0}A2,A3 ) ST {переход}A4 {метка}A5

A1, A4R1;A2 p1;A3, A5 R2

  1. IF  if ( {уид}R ep1 {переход_0}A1,A2 ) ST {метка}A3 IF'

A2, A3R; A1p1

  1. IF'  else OP

  2. IF'  

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