Ишакова Е.Н. Разработка компиляторов - Методические указания к курсовой работе (1082246), страница 7
Текст из файла (страница 7)
<восьмеричное>::= {/ 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 /} (O | o)
<десятичное>::= {/ <цифра> /} [D | d]
<шестнадцатеричное>::= <цифра> {<цифра> | A | B | C | D | E | F | a | b |
c | d | e | f} (H | h)
Правила, описывающие действительные числа:
<действительное>::= <числовая_строка> <порядок> |
[<числовая_строка>] . <числовая_строка> [порядок]
<числовая_строка>::= {/ <цифра> /}
<порядок>::= ( E | e )[+ | -] <числовая_строка>
Правила, определяющие структуру программы (вторая цифра варианта), представлены в таблице 5.5.
Таблица 5.5 – Структура программы
Номер | Структура программы |
1 | <программа>::= program var <описание> begin <оператор> {; <оператор>} end. |
2 | <программа>::= «{» {/ (<описание> | <оператор>) ; /} «}» |
3 | <программа> = {/ (<описание> | <оператор>) ( : | переход строки) /} end |
Правила, определяющие раздел описания переменных (третья цифра варианта) показаны в таблице 5.6.
Таблица 5.6 - Синтаксис команд описания данных
Номер | Синтаксис команд описания данных |
1 | <описание>::= {<идентификатор> {, <идентификатор> } : <тип> ;} |
2 | <описание>::= dim <идентификатор> {, <идентификатор> } <тип> |
3 | <описание>::= <тип> <идентификатор> { , <идентификатор> } |
Правила, определяющие типы данных (четвертая цифра варианта) представлены в таблице 5.7.
Таблица 5.7- Описание типов данных
Номер | Описание типов (в порядке следования: целый, действительный, логический) |
1 | <тип>::= % | ! | $ |
2 | <тип>::= integer | real | boolean |
3 | <тип>::= int | float | bool |
Правило, определяющее оператор программы (пятая цифра варианта).
<оператор>::= <составной> | <присваивания> | <условный> |
<фиксированного_цикла> | <условного_цикла> | <ввода> |
<вывода>
Составной оператор описан в таблице 5.8.
Таблица 5.8 - Синтаксис составного оператора
Номер | Синтаксис оператора |
1 | <составной>::= <оператор> { ( : | перевод строки) <оператор> } |
2 | <составной>::= begin <оператор> { ; <оператор> } end |
3 | <составной>::= «{» <оператор> { ; <оператор> } «}» |
Оператор присваивания описан в таблице 5.9.
Таблица 5.9 - Синтаксис оператора присваивания
Номер | Оператор присваивания |
1 | <присваивание>::= <идентификатор> ass <выражение> |
2 | <присваивание>::= <идентификатор> := <выражение> |
3 | <присваивание> ::= [ let ] <идентификатор> = <выражение> |
Оператор условного перехода задан в таблице 5.10.
Таблица 5.10 - Синтаксис оператора условного перехода
Номер | Оператор условного перехода |
1 | <условный>::= if <выражение> then <оператор> [ else <оператор>] |
2 | <условный>::= if (<выражение>) <оператор> [else <оператор>] |
3 | <условный>::= if <выражение> then <оператор> [else <оператор>] end_else |
Оператор цикла с фиксированным числом повторений описан в таблице 5.11.
Таблица 5.11 - Синтаксис оператора цикла с фиксированным числом повторений
Номер | Синтаксис оператора |
1 | <фиксированного_цикла>::= for <присваивания> to <выражение> do <оператор> |
2 | <фиксированного_цикла>::= for <присваивания> to <выражение> [step <выражение>] <оператор> next |
3 | <фиксированного_цикла>::= for ( [<выражение>] ; [<выражение>] ; [<выражение>] ) <оператор> |
Условный оператор цикла задан в таблице 5.12.
Таблица 5.12 - Синтаксис условного оператора цикла
Номер | Синтаксис оператора |
1 | <условного_цикла>::= while <выражение> do <оператор> |
2 | <условного_цикла>::= while (<выражение>) <оператор> |
3 | <условного_цикла>::= do while <выражение> <оператор> loop |
Оператор ввода описан в таблице 5.13.
Таблица 5.13 - Синтаксис оператора ввода
Номер | Синтаксис оператора |
1 | <ввода>::= read (<идентификатор> {, <идентификатор> }) |
2 | <ввода>::= readln идентификатор {, <идентификатор> } |
3 | <ввода>::= input (<идентификатор> {пробел <идентификатор>}) |
Оператор вывода представлен в таблице 5.14.
Таблица 5.14 - Синтаксис оператора вывода
Номер | Синтаксис оператора |
1 | <вывода>::= write (<выражение> {, <выражение> }) |
2 | <вывода>::= writeln <выражение> {, <выражение> } |
3 | <вывода>::= output (<выражение> { пробел <выражение> }) |
Многострочные комментарии в программе (шестая цифра варианта) определены в таблице 5.15. Индивидуальные номера вариантов представлены в таблице 5.16.
Таблица 5.15 – Синтаксис многострочных комментариев
Номер | Признак начала комментария | Признак конца комментария |
1 | { | } |
2 | /* | */ |
3 | (* | *) |
Таблица 5.16 – Индивидуальные номера вариантов
Номер варианта | Номер задания | Номер варианта | Номер здания |
1 | 111111 | 16 | 223122 |
2 | 122211 | 17 | 223322 |
3 | 113211 | 18 | 231123 |
4 | 113311 | 19 | 232223 |
5 | 121132 | 20 | 233323 |
6 | 121212 | 21 | 311111 |
7 | 123112 | 22 | 311211 |
8 | 123312 | 23 | 311311 |
9 | 131111 | 24 | 332211 |
10 | 132111 | 25 | 313311 |
11 | 211121 | 26 | 321122 |
12 | 213222 | 27 | 321222 |
13 | 213321 | 28 | 323122 |
14 | 221122 | 29 | 331133 |
15 | 222222 | 30 | 331233 |
6 Контрольные вопросы для самопроверки
1) Назовите основные способы описания синтаксиса языков программирования.
2) Дайте определение понятия «формальная грамматика».
3) Перечислите основные метасимволы, используемые в РБНФ.
4) Изобразите графические примитивы диаграмм Вирта.
5) Дайте определение понятию «компилятор».
6) Каждый ли компилятор является транслятором?
7) Назовите известные Вам компилируемые языки программирования.