Сводные синтаксические диаграммы языка Паскаль В данное пособие включены СД из приложения 1 ( стр. 361 ) учебника [2] ( опечатки исправлены ) . Каждая диаграмма дополнена соответствующей БНФ формулой (используются фигурные скобки { } ). [3] содержит описание метаязыков СД и БНФ. Оглавление может быть использовано как предметный указатель . Литература [ 1 ] Паскаль: руководство для пользователя. Йенсен К., Вирт Н. М.Финансы и статистика 1989 [ 2 ] Введение в язык Паскаль В.Г.Абрамов, Н.П.Трифонов, Г.Н.Трифонова М.КНОРУС 2011 [ 3 ] Металингвистические формулы и синтаксические диаграммы. А.А. Вылиток М.: МАКС Пресс, 2012. программа заголовок программы ; блок . < программа > ::= < заголовок программы > ; < блок > . Учебное пособие для групп преп. Матвеева Т.К. Стр 1 из 60
60
Embed
Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Сводные синтаксические диаграммы языка Паскаль
В данное пособие включены СД из приложения 1 ( стр. 361 ) учебника [2] ( опечатки исправлены ) . Каждая диаграмма дополнена соответствующей БНФ формулой (используются фигурные скобки { } ). [3] содержит описание метаязыков СД и БНФ. Оглавление может быть использовано как предметный указатель .
Литература [ 1 ] Паскаль: руководство для пользователя. Йенсен К., Вирт Н.
М.Финансы и статистика 1989 [ 2 ] Введение в язык Паскаль В.Г.Абрамов, Н.П.Трифонов, Г.Н.Трифонова М.КНОРУС 2011 [ 3 ] Металингвистические формулы и синтаксические диаграммы. А.А. Вылиток
М.: МАКС Пресс, 2012.
программа
заголовок программы ; блок .
< программа > ::= < заголовок программы > ; < блок > . Учебное пособие для групп преп. Матвеева Т.К. Стр 1 из 60
Синтаксические диаграммы языка Паскаль Стр 2 из 60
< заголовок программы > ::= program < имя программы > ( < имя файла >{ , < имя файла >} )
блок
раздел описаний раздел операторов
program имя программы имя файла (
,
)
заголовок программы
< блок > ::= < раздел описаний > < раздел операторов >
раздел описаний
раздел меток
раздел констант
раздел процедур и функций
раздел переменных
раздел типов
< раздел описаний > ::= < раздел меток > < раздел констант > < раздел типов > < раздел переменных > < раздел процедур и функций > Замечание. Отсутствие того или иного раздела включено в описание раздела далее.
Учебное пособие для групп преп. Матвеева Т.К. Стр 3 из 60
Синтаксические диаграммы языка Паскаль Стр 4 из 60
< условный оператор > ::= if < логическое выражение > then < оператор > | if < логическое выражение > then < оператор > else < оператор >
опер нтаатор вариа
селектор оператора of
метка варианта оператор :
;
end
,
;
case
< оператор варианта > ::= case <селектор оператора> of < элемент списка варианта > { ; < элемент списка варианта > } <конец > < элемент списка варианта > ::= < список меток варианта > : <оператор> < список меток варианта> ::= <метка варианта> { , <метка варианта>} < конец > ::= end | ; end
Учебное пособие для групп преп. Матвеева Т.К. Стр 13 из 60
Синтаксические диаграммы языка Паскаль Стр 14 из 60
селектор оператора
индексное выражение
< селектор оператора > ::= <индексное выражение>
метка варианта
константа
( константа – целого, литерного, перечислимого или логического типа )
< метка варианта > ::= <константа>
< оператор цикла > ::= <оператор цикла с параметром> | <оператор цикла с предусловием> | <оператор цикла с постусловием>
оператор цикла с параметром
параметр цикла for := выражение
выражение
to
do
downto
оператор
оператор цикла с параметром
оператор цикла с предусловием
оператор цикла с постусловием
оператор цикла
Учебное пособие для групп преп. Матвеева Т.К. Стр 15 из 60
Синтаксические диаграммы языка Паскаль Стр 16 из 60
< оператор цикла с параметром > ::= for <параметр цикла> := <выражение> to <выражение> do <оператор> | for <параметр цикла> := <выражение> downto <выражение> do <оператор>
< параметр цикла > ::= <имя переменной>
оператор цикла с предусловием
оператор while doлогическое выражение
имя переменной
параметр цикла
< оператор цикла с предусловием > ::= while <логическое выражение> do <оператор>
оператор цикла с постусловием
оператор repeat until логическое выражение
;
< оператор цикла с постусловием > ::= repeat <оператор> { ; <оператор> } until <логическое выражение>
оператор присоединения
переменная with do оператор
,
(переменная – комбинированного типа)
< оператор присоединения > ::= with <переменная> { , <переменная> } do <оператор>
Учебное пособие для групп преп. Матвеева Т.К. Стр 17 из 60
Синтаксические диаграммы языка Паскаль Стр 18 из 60
< выражение перечислимого типа > ::= <константа перечислимого типа> | <переменная перечислимого типа> | <функция перечислимого типа> выражение регулярного типа
переменная регулярного типа
строковая константа
константа перечислимого типа
переменная перечислимого типа
функция перечислимого типа
выражение перечислимого типа
< выражение регулярного типа > ::= <переменная регулярного типа> | <строковая константа>
Учебное пособие для групп преп. Матвеева Т.К. Стр 23 из 60
Синтаксические диаграммы языка Паскаль Стр 24 из 60
выражение комбинированного типа
переменная комбинированного типа
< выражение комбинированного типа > ::= <переменная комбинированного типа>
< множественное выражение > ::= < простое множественное выражение > | < множественное выражение > < операция над множествами > < множественное выражение > < простое множественное выражение > ::= < конструктор множества > | < переменная множественного типа > | (< множественное выражение >) < операция над множествами > ::= * | + | –
Учебное пособие для групп преп. Матвеева Т.К. Стр 25 из 60
Синтаксические диаграммы языка Паскаль Стр 26 из 60
конструктор множества
] индексное выражение
.. индексное выражение
,
[
< конструктор множества > ::= [ < пусто > | < список элементов > ] < список элементов > ::= < элемент > | < элемент >{ ,< элемент > } < элемент > ::= <индексное выражение> | <индексное выражение > .. < индексное выражение >
индексное выражение
арифметическое выражение типа integer
литерное выражение
логическое выражение
выражение перечислимого типа
< индексное выражение> ::= < арифметическое выражение типа integer >|< литерное выражение > | < логическое выражение > | < выражение перечислимого типа >
Учебное пособие для групп преп. Матвеева Т.К. Стр 27 из 60
Синтаксические диаграммы языка Паскаль Стр 28 из 60
логическое выражение
простое логическое выражение
отношение
< логическое выражение > ::= <простое логическое выражение> | < отношение> простое логическое выражение
логическое слагаемое
or
< простое логическое выражение > ::= < логическое слагаемое > | < простое логическое выражение > or < логическое слагаемое >
или с использованием { } фигурных скобок <простое логическое выражение> ::= <логическое слагаемое> { or <логическое слагаемое> }
< логическое слагаемое > ожитель > |
< логический множитель >
логическое слагаемое
логический множитель
and
::= < логический мн < логическое слагаемое > and
Учебное пособие для групп преп. Матвеева Т.К. Стр 29 из 60
Синтаксические диаграммы языка Паскаль Стр 30 из 60
логический множитель
константа логического типа
переменная логического типа
функция логического типа
логический множитель not
( логическое выражение )
< логический множитель > ::= < константа логического типа > | < переменная логического типа > | < функция логического типа > | not < логический множитель > | ( < логическое выражение > )
отношение
скалярное отношение
строковое отношение
множественное отношение
< отношение > ::= < скалярное отношение > | < строковое отношение > | < множественное отношение >
Учебное пособие для групп преп. Матвеева Т.К. Стр 31 из 60
Синтаксические диаграммы языка Паскаль Стр 32 из 60
арифметическое выражение
простое логическое выражение
выражение перечислимого типа
литерное выражение
ссылочное выражение
операция сравнения арифметическое выражение
операция сравнения
простое логическое выражение
операция сравнения
выражение перечислимого типа
операция сравнения литерное выражение
=
<>
ссылочное выражение
скалярное отношение
< скалярное отношение > ::= < арифметическое выражение >< операция сравнения >< арифметическое выражение > | < простое логическое выражение >< операция сравнения > < простое логическое выражение > | < выражение перечислимого типа > < операция сравнения >< выражение перечислимого типа >|< литерное выражение >< операция сравнения > < литерное выражение > | <ссылочное выражение> = <ссылочное выражение> | <ссылочное выражение> <> <ссылочное выражение>
строковое отношение
строковая константа
переменная
строковая константа
переменная
операция сравнения
< строковое отношение > ::= < строковая константа >< операция сравнения > < строковая константа > | < переменная >< операция сравнения > < строковая константа > | < строковая константа >< операция сравнения >< переменная > | < переменная >< операция сравнения >< переменная >
Учебное пособие для групп преп. Матвеева Т.К. Стр 33 из 60
Синтаксические диаграммы языка Паскаль Стр 34 из 60
< параметры-переменные > ::= var <список идентификаторов> : <имя типа>
< параметр-функция > ::= <заголовок функции>
параметр-процедура
заголовок процедуры
заголовок функции
параметр-функция
< параметр-процедура > ::= <заголовок процедуры>
Учебное пособие для групп преп. Матвеева Т.К. Стр 51 из 60
Синтаксические диаграммы языка Паскаль Стр 52 из 60
функция
< функция > ::= < имя функции > | < имя функции >(< список фактических параметров >) < список фактических параметров > ::= < фактический параметр > | <список фактических параметров> , <фактический параметр>
< элемент списка варианта > 13 < список меток варианта> 13 < конец > 13
< селектор оператора > 14 < метка варианта > 14 < оператор цикла > 15 < оператор цикла с параметром > 16 < параметр цикла > 16 < оператор цикла с предусловием > 16 < оператор цикла с постусловием > 17 < оператор присоединения > 17 < выражение > 18 < арифметическое выражение > 19
< операция сложения > 19 < слагаемое > 20
< операция умножения > 20 < множитель > 21
< литерное выражение > 22 < выражение перечислимого типа > 23 < выражение регулярного типа > 23 < выражение комбинированного типа > 24 < ссылочное выражение > 24 < множественное выражение > 25
< простое множественное выражение > 25 < операция над множествами > 25
< конструктор множества > 26 < список элементов > 26 < элемент > 26
< индексное выражение> 27 < логическое выражение > 28 < простое логическое выражение > 28 < логическое слагаемое > 29 < логический множитель > 30 < отношение > 31 < скалярное отношение > 33 < строковое отношение > 33 < операция сравнения > 34 < множественное отношение > 35
< операция > 35
< индекс > 36 < переменная > 37
< полная переменная > 37 < индексированная переменная > 37 < обозначение поля > 37 < переменная с указателем > 37 < буферная переменная > 37 < переменная-массив > 37 < переменная-запись > 37 < переменная-файл > 37 < ссылочная переменная > 37 < имя переменной > 37 < имя поля > 37
< описание переменных > 38 <список имен переменных> 38
< описание константы > 38 < константа > 39
< знак > 39 < описание типа > 40 < тип > 40
< структурированный тип > 40 < задание перечислимого типа > 42
< список идентификаторов > 42 < задание ограниченного типа > 42
Учебное пособие для групп преп. Матвеева Т.К. Стр 59 из 60
Синтаксические диаграммы языка Паскаль Стр 60 из 60
< задание ссылочного типа > 43 < параметр-функция > 51 < задание регулярного типа > 43 < параметр-процедура > 51
< список индексов > 43 < функция > 52 < задание комбинированного типа > 44 < список полей > 44
< список фактических параметров > 52
< секция записи > 45 < имя > 52 < идентификатор > 53
< список имен полей > 45 < метка оператора > 53 < задание множественного типа > 45 < задание файлового типа > 46
< число без знака > 54
< описание функции > 46 < целое без знака > 54
< заголовок функции > 47 < вещественное без знака > 55
< описание процедуры > 47 < число с фиксированное точкой > 55
< заголовок процедуры > 48 < число с плавающей точкой > 56 < литерная константа > 56