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

1) Оператор-выражение

оператор-выражение: [ выражение ] ;

Чаще всего выражение является выражением присваивания. Если выражение опущено, то оператор называется пустым оператором.

2) Составной оператор

составной_оператор: { [ список_описаний ] [ список_операторов ] }

список_описаний: описание { описание }

список_операторов: оператор { оператор }

Составной оператор также называют блоком. Все идентификаторы, описанные в объемлющих блоках, видимы внутри блока. Идентификаторы, описанные внутри блока, после выхода из него становятся видны в объемлющих блоках. Инициализация объектов происходит при каждом входе в блок и продолжается по мере продвижения по описателям. При передаче управления внутрь блока инициализации не выполняются.

3) Условный оператор

уловный_оператор: if ( выражение ) оператор [ else оператор ]

Если выражение даёт ненулевое значение, выполняется первый оператор, в противном случае – второй. Если ключевое слово elseопущено, никаких действий не производится. Если первый оператор в свою очередь является условным оператором, может возникнуть подобная ситуация:

if(expr1)if(expr2) op1elseop2

В таких случаях else относят к последнему if, не имеющему else и находящемуся в одном с этим else блоке. В примере – к if(expr2).

4) Оператор цикла

оператор_цикла: while ( выражение ) оператор

Оператор выполняется, пока значение выражения не станет нулём. Вычисление выражения производится перед каждым выполнением оператора.

5) Оператор перехода

оператор_перехода: goto метка ; return выражение ;

В результате выполнения goto управление передаётся на помеченный оператор. Оператор return прекращает выполнение программы и передаёт системе код возврата.

6) Операторы ввода и вывода

оператор_ввода: input ( постфиксное_выражение )

Оператор ввода требует l-value. Из входного потока читается значение, которое помещается в обозначенный объект. Если тип объекта – вектор, то читаются вещественные числа в количестве, равном размерности вектора.

оператор_вывода: output ( выражение ) output ( строковая_константа )

В выходной поток помещается значение выражения или содержимое строковой константы. Если тип выражения – вектор, выводятся все компоненты.

1.7. Программа

программа: int main() составной_оператор

2. Синтаксический анализатор

Синтаксический анализатор распознаёт текст, состоящий из терминальных символов, множеством которых служит множеством лексем, выдаваемых лексическим анализатором.

Разобьём множество правил входной LL(1) грамматики на три подграмматики:

  • подграмматика выражений;

  • подграмматика описаний;

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

2.1. Подграмматика выражений

E

выражение присваивания

EE

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

D

ИЛИ-выражение (дизъюнкт)

D'

остаток ИЛИ-выраженя

K

И-выражение (конъюнкт)

K'

остаток И-выражения

RL

выражение отношения

RL'

остаток выражения отношения

AD

аддитивное выражение

AD'

остаток аддитивного выражения

ML

мультипликативное выражение

ML'

остаток мультипликативного выражения

UN

унарное выражение

EP

постфиксное выражение

EPP

остаток постфиксного выражения

E1

первичное выражение

  1. E  EP EE

  2. EE  = D EE

  3. EE  = 

  4. D  K D'

  5. D'  || K D'

  6. D'  

  7. K  RL K'

  8. K'  && RL K'

  9. K'  

  10. RL  AD RL'

  11. RL'  < AD RL'

  12. RL'  > AD RL'

  13. RL'  <= AD RL'

  14. RL'  >= AD RL'

  15. RL'  == AD RL'

  16. RL'  != AD RL'

  17. RL'  

  18. AD  ML AD'

  19. AD'  + ML AD'

  20. AD'  - ML AD'

  21. AD'  

  22. ML  UN ML'

  23. ML'  * UN ML'

  24. ML'  / UN ML'

  25. ML'  

  26. UN  EP

  27. UN  len ( vi )

  28. UN  + UN

  29. UN  - UN

  30. UN  ! UN

  31. EP  E1 EPP

  32. EPP  [ E ] EPP

  33. EPP  

  34. E1  idv

  35. E1  ivc

  36. E1  con

  37. E1  ( E )

ivc – идентификатор вектора

idv – идентификатор переменной

con – константа

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