Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Правила, определяющие идентификатор, букву и цифру:



 

<идентификатор>::= <буква> {<буква> | <цифра>}

<буква>::= A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T |

               U | V | W | X | Y | Z | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p

                q | r | s | t | u | v | w | x | y | z

<цифра>::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

 

Правила, определяющие целые числа:

 

<целое>::= <двоичное> | <восьмеричное> | <десятичное> |

              <шестнадцатеричное>

<двоичное>::= {/ 0 | 1 /} (B | b)

<восьмеричное>::= {/ 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) Назовите известные Вам компилируемые языки программирования.

8) Перечислите основные функции компилятора.

9) Назовите этапы компиляции.

10) Охарактеризуйте общую схему работы компилятора.

11) Что называется проходом компилятора?

12) Что называется лексемой языка программирования?

13) Какие задачи выполняет лексический анализатор программы?

14) Какой тип грамматик по классификации Хомского лежит в основе лексического анализа программы?

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

16) Что представляет собой диаграмма состояний с действиями?

17) Расскажите алгоритм разбора цепочек по ДС с действиями.

18) Составьте диаграмму состояний с действиями для модельного языка.

19) Напишите функцию сканирования текста программы на модельном языке по ДС с действиями.

20) Каково назначение синтаксического анализатора программы?

21) Какой тип грамматик по классификации Хомского лежит в основе синтаксического анализа программы?

22) В чем сущность метода рекурсивного спуска?

23) Назовите необходимые условия применимости метода рекурсивного спуска.

24) Какие эквивалентные преобразования КС-грамматик Вам известны?

25) Расскажите алгоритм построения дерева нисходящего разбора для цепочек грамматики.

26) Какой вывод цепочки грамматики называется левосторонним?

27) В чем заключается специфика синтаксически управляемого перевода?

28) Перечислите основные задачи семантического анализатора.

29) Предложите один из возможных способов обработки описаний программы.

30) Запишите синтаксические правила модельного языка, дополненные процедурами семантического анализа программы.

31) Дайте сравнительную характеристику известных форм внутреннего представления программы.

32) Запишите правила перевода в ПОЛИЗ выражений и операторов модельного языка.

 


Поделиться:



Последнее изменение этой страницы: 2019-06-09; Просмотров: 294; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.024 с.)
Главная | Случайная страница | Обратная связь