Сводные синтаксические диаграммы языка...

60
Сводные синтаксические диаграммы языка Паскаль В данное пособие включены СД из приложения 1 ( стр. 361 ) учебника [2] ( опечатки исправлены ) . Каждая диаграмма дополнена соответствующей БНФ формулой (используются фигурные скобки { } ). [3] содержит описание метаязыков СД и БНФ. Оглавление может быть использовано как предметный указатель . Литература [ 1 ] Паскаль: руководство для пользователя. Йенсен К., Вирт Н. М.Финансы и статистика 1989 [ 2 ] Введение в язык Паскаль В.Г.Абрамов, Н.П.Трифонов, Г.Н.Трифонова М.КНОРУС 2011 [ 3 ] Металингвистические формулы и синтаксические диаграммы. А.А. Вылиток М.: МАКС Пресс, 2012. программа заголовок программы ; блок . < программа > ::= < заголовок программы > ; < блок > . Учебное пособие для групп преп. Матвеева Т.К. Стр 1 из 60

Upload: others

Post on 03-Feb-2020

30 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Сводные синтаксические диаграммы языка Паскаль

В данное пособие включены СД из приложения 1 ( стр. 361 ) учебника [2] ( опечатки исправлены ) . Каждая диаграмма дополнена соответствующей БНФ формулой (используются фигурные скобки { } ). [3] содержит описание метаязыков СД и БНФ. Оглавление может быть использовано как предметный указатель .

Литература [ 1 ] Паскаль: руководство для пользователя. Йенсен К., Вирт Н.

М.Финансы и статистика 1989 [ 2 ] Введение в язык Паскаль В.Г.Абрамов, Н.П.Трифонов, Г.Н.Трифонова М.КНОРУС 2011 [ 3 ] Металингвистические формулы и синтаксические диаграммы. А.А. Вылиток

М.: МАКС Пресс, 2012.

программа

заголовок программы ; блок .

< программа > ::= < заголовок программы > ; < блок > . Учебное пособие для групп преп. Матвеева Т.К. Стр 1 из 60

Page 2: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 2 из 60

< заголовок программы > ::= program < имя программы > ( < имя файла >{ , < имя файла >} )

блок

раздел описаний раздел операторов

program имя программы имя файла (

,

)

заголовок программы

< блок > ::= < раздел описаний > < раздел операторов >

Page 3: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

раздел описаний

раздел меток

раздел констант

раздел процедур и функций

раздел переменных

раздел типов

< раздел описаний > ::= < раздел меток > < раздел констант > < раздел типов > < раздел переменных > < раздел процедур и функций > Замечание. Отсутствие того или иного раздела включено в описание раздела далее.

Учебное пособие для групп преп. Матвеева Т.К. Стр 3 из 60

Page 4: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 4 из 60

< раздел меток > ::= | label< метка оператора >{ , < метка оператора >} ;

раздел констант

описание константы const ;

метка оператора ; label

,

раздел меток

< раздел констант > ::= | const< описание константы > ; {< описание константы> ; }

Page 5: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

< раздел типов > ::= | type<описание типа> ; {<описание типа> ; }

раздел переменных

; описание переменных var

; описание типа type

раздел типов

< раздел переменных > ::= | var<описание переменных> ; {<описание переменных> ; }

Учебное пособие для групп преп. Матвеева Т.К. Стр 5 из 60

Page 6: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 6 из 60

< раздел процедур и функций> ::= | <описание процедуры>; | <описание функции>; | <раздел процедур и функций> <описание процедуры>; | <раздел процедур и функций> <описание функции>;

раздел операторов

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

описание процедуры

описание функции

;

раздел процедур и функций

< раздел операторов > ::= <составной оператор>

Page 7: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

< оператор > ::= < основной оператор > | < производный оператор > | < метка оператора > : < основной оператор > | < метка оператора > : < производный оператор >

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

оператор присваивания

пустой оператор

оператор перехода

оператор процедуры

: метка оператора

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

производный оператор

оператор

Учебное пособие для групп преп. Матвеева Т.К. Стр 7 из 60

Page 8: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 8 из 60

< основной оператор > ::= < оператор присваивания > | < пустой оператор > | < оператор перехода > | < оператор процедуры >

оператор присваивания

переменная

имя функции

выражение :=

< оператор присваивания > ::= < переменная > := < выражение > | < имя функции > := < выражение >

(там, где по синтаксису языка необходимо наличие оператора, а в соответствии с

семантикой никаких действий делать не нужно, используется пустой оператор (пусто))

пустой оператор

< пустой оператор > ::=

Page 9: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

< оператор перехода > ::= goto < метка оператора >

оператор процедуры

имя процедуры фактический параметр ( )

,

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

оператор перехода

< оператор процедуры > ::= < имя процедуры > | < имя процедуры > ( < фактический параметр > { , < фактический параметр > } )

Учебное пособие для групп преп. Матвеева Т.К. Стр 9 из 60

Page 10: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 10 из 60

фактический параметр

выражение

переменная

имя функции

имя процедуры

< фактический параметр > ::= < выражение > | < переменная > | < имя функции > | < имя процедуры >

Page 11: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

производный оператор

< производный оператор > ::= < составной оператор > | < выбирающий оператор > | < оператор цикла > | < оператор присоединения >

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

выбирающий оператор

оператор цикла

оператор присоединения

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

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

оператор begin end

;

::= begin < оператор > { ; < оператор > } end

Учебное пособие для групп преп. Матвеева Т.К. Стр 11 из 60

Page 12: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 12 из 60

< выбирающий оператор > ::= < условный оператор > | < оператор варианта >

условный оператор

логическое выражениеif then оператор

оператор else

условный оператор

оператор варианта

выбирающий оператор

< условный оператор > ::= if < логическое выражение > then < оператор > | if < логическое выражение > then < оператор > else < оператор >

Page 13: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

опер нтаатор вариа

селектор оператора of

метка варианта оператор :

;

end

,

;

case

< оператор варианта > ::= case <селектор оператора> of < элемент списка варианта > { ; < элемент списка варианта > } <конец > < элемент списка варианта > ::= < список меток варианта > : <оператор> < список меток варианта> ::= <метка варианта> { , <метка варианта>} < конец > ::= end | ; end

Учебное пособие для групп преп. Матвеева Т.К. Стр 13 из 60

Page 14: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 14 из 60

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

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

< селектор оператора > ::= <индексное выражение>

метка варианта

константа

( константа – целого, литерного, перечислимого или логического типа )

< метка варианта > ::= <константа>

Page 15: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

< оператор цикла > ::= <оператор цикла с параметром> | <оператор цикла с предусловием> | <оператор цикла с постусловием>

оператор цикла с параметром

параметр цикла for := выражение

выражение

to

do

downto

оператор

оператор цикла с параметром

оператор цикла с предусловием

оператор цикла с постусловием

оператор цикла

Учебное пособие для групп преп. Матвеева Т.К. Стр 15 из 60

Page 16: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 16 из 60

< оператор цикла с параметром > ::= for <параметр цикла> := <выражение> to <выражение> do <оператор> | for <параметр цикла> := <выражение> downto <выражение> do <оператор>

< параметр цикла > ::= <имя переменной>

оператор цикла с предусловием

оператор while doлогическое выражение

имя переменной

параметр цикла

< оператор цикла с предусловием > ::= while <логическое выражение> do <оператор>

Page 17: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

оператор цикла с постусловием

оператор repeat until логическое выражение

;

< оператор цикла с постусловием > ::= repeat <оператор> { ; <оператор> } until <логическое выражение>

оператор присоединения

переменная with do оператор

,

(переменная – комбинированного типа)

< оператор присоединения > ::= with <переменная> { , <переменная> } do <оператор>

Учебное пособие для групп преп. Матвеева Т.К. Стр 17 из 60

Page 18: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 18 из 60

выражение

< выражение >

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

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

логическое выражение

выражение перечислимого типа

выражение регулярного типа

выражение комбинированного типа

ссылочное выражение

множественное выражение

::= <арифметическое выражение> | <литерное выражение> | <логическое выражение> | <выражение перечислимого типа> | <выражение регулярного типа> | <выражение комбинированного типа> | <ссылочное выражение> | <множественное выражение>

Page 19: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

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

-

+

слагаемое

+ -

< арифметическое выражение > ::= <слагаемое> { < операции сложения > <слагаемое> } | < операция сложения > <слагаемое> { <операция сложения> <слагаемое>} < операция сложения > ::= + | –

Учебное пособие для групп преп. Матвеева Т.К. Стр 19 из 60

Page 20: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 20 из 60

слагаемое

множитель

* / mod div

< слагаемое > ::= <множитель> { < операция умножения > <множитель> } < операция умножения > ::= * | / | mod | div

Page 21: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

множитель

вещественное без знака

целое без знака

переменная

функция

арифметическое выражение( )

(переменная , функция – целого или вещественного типа)

< множитель > ::= <вещественное без знака> | <целое без знака> | <переменная> | <функция> | ( <арифметическое выражение> )

Учебное пособие для групп преп. Матвеева Т.К. Стр 21 из 60

Page 22: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 22 из 60

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

константа литерного типа

переменная литерного типа

функция литерного типа

< литерное выражение > ::= <константа литерного типа> | <переменная литерного типа> | <функция литерного типа>

Page 23: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

< выражение перечислимого типа > ::= <константа перечислимого типа> | <переменная перечислимого типа> | <функция перечислимого типа> выражение регулярного типа

переменная регулярного типа

строковая константа

константа перечислимого типа

переменная перечислимого типа

функция перечислимого типа

выражение перечислимого типа

< выражение регулярного типа > ::= <переменная регулярного типа> | <строковая константа>

Учебное пособие для групп преп. Матвеева Т.К. Стр 23 из 60

Page 24: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 24 из 60

выражение комбинированного типа

переменная комбинированного типа

< выражение комбинированного типа > ::= <переменная комбинированного типа>

ссылочное выражение

переменная ссылочного типа

функция ссылочного типа

nil

< ссылочное выражение > ::= nil | <переменная ссылочного типа> | <функция ссылочного типа>

Page 25: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

множественное выражение

конструктор множества

переменная множественного типа

множественное выражение ( )

* - +

< множественное выражение > ::= < простое множественное выражение > | < множественное выражение > < операция над множествами > < множественное выражение > < простое множественное выражение > ::= < конструктор множества > | < переменная множественного типа > | (< множественное выражение >) < операция над множествами > ::= * | + | –

Учебное пособие для групп преп. Матвеева Т.К. Стр 25 из 60

Page 26: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 26 из 60

конструктор множества

] индексное выражение

.. индексное выражение

,

[

< конструктор множества > ::= [ < пусто > | < список элементов > ] < список элементов > ::= < элемент > | < элемент >{ ,< элемент > } < элемент > ::= <индексное выражение> | <индексное выражение > .. < индексное выражение >

Page 27: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

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

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

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

логическое выражение

выражение перечислимого типа

< индексное выражение> ::= < арифметическое выражение типа integer >|< литерное выражение > | < логическое выражение > | < выражение перечислимого типа >

Учебное пособие для групп преп. Матвеева Т.К. Стр 27 из 60

Page 28: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 28 из 60

логическое выражение

простое логическое выражение

отношение

< логическое выражение > ::= <простое логическое выражение> | < отношение> простое логическое выражение

логическое слагаемое

or

< простое логическое выражение > ::= < логическое слагаемое > | < простое логическое выражение > or < логическое слагаемое >

или с использованием { } фигурных скобок <простое логическое выражение> ::= <логическое слагаемое> { or <логическое слагаемое> }

Page 29: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

< логическое слагаемое > ожитель > |

< логический множитель >

логическое слагаемое

логический множитель

and

::= < логический мн < логическое слагаемое > and

Учебное пособие для групп преп. Матвеева Т.К. Стр 29 из 60

Page 30: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 30 из 60

логический множитель

константа логического типа

переменная логического типа

функция логического типа

логический множитель not

( логическое выражение )

< логический множитель > ::= < константа логического типа > | < переменная логического типа > | < функция логического типа > | not < логический множитель > | ( < логическое выражение > )

Page 31: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

отношение

скалярное отношение

строковое отношение

множественное отношение

< отношение > ::= < скалярное отношение > | < строковое отношение > | < множественное отношение >

Учебное пособие для групп преп. Матвеева Т.К. Стр 31 из 60

Page 32: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 32 из 60

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

простое логическое выражение

выражение перечислимого типа

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

ссылочное выражение

операция сравнения арифметическое выражение

операция сравнения

простое логическое выражение

операция сравнения

выражение перечислимого типа

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

=

<>

ссылочное выражение

скалярное отношение

Page 33: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

< скалярное отношение > ::= < арифметическое выражение >< операция сравнения >< арифметическое выражение > | < простое логическое выражение >< операция сравнения > < простое логическое выражение > | < выражение перечислимого типа > < операция сравнения >< выражение перечислимого типа >|< литерное выражение >< операция сравнения > < литерное выражение > | <ссылочное выражение> = <ссылочное выражение> | <ссылочное выражение> <> <ссылочное выражение>

строковое отношение

строковая константа

переменная

строковая константа

переменная

операция сравнения

< строковое отношение > ::= < строковая константа >< операция сравнения > < строковая константа > | < переменная >< операция сравнения > < строковая константа > | < строковая константа >< операция сравнения >< переменная > | < переменная >< операция сравнения >< переменная >

Учебное пособие для групп преп. Матвеева Т.К. Стр 33 из 60

Page 34: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 34 из 60

операция сравнения

>

>=

<

<=

<>

=

< операция сравнения > ::= = | <> | <= | < | >= | >

Page 35: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

множественное отношение

=

<>

<=

>=

множественное выражение

множественное выражение индексное выражение in

< множественное отношение > ::= < множественное выражение > < операция> < множественное выражение > | < индексное выражение > in < множественное выражение > < операция > ::= = | <> | <= | >=

Учебное пособие для групп преп. Матвеева Т.К. Стр 35 из 60

Page 36: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 36 из 60

индекс

< индекс > ::= <индексное выражение>

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

переменная

имя переменной

имя поля [ ]индекс

,

. имя поля

Page 37: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

< переменная > ::= < полная переменная > | < индексированная переменная > | < обозначение поля > | < переменная с указателем > | < буферная переменная > < полная переменная > ::= < имя переменной > < индексированная переменная > ::= < переменная-массив > [< индекс > { , < индекс > }] < обозначение поля > ::= < переменная-запись > . < имя поля > | < имя поля > *) < переменная с указателем > ::= < ссылочная переменная > ↑ < буферная переменная > ::= < переменная-файл > ↑ < переменная-массив > ::= < переменная > < переменная-запись > ::= < переменная > < переменная-файл > ::= < переменная > < ссылочная переменная > ::= < переменная > < имя переменной > ::= < имя > < имя поля > ::= < имя > _____________________________________________________________

пособие для групп преп. Матвеева Т.К. Стр 37 из 60 *) конструкция < имя поля >возможна только внутри оператора with Учебное

Page 38: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 38 из 60

< описание переменных > ::= <список имен переменных> : <тип> <список имен переменных> ::= <имя переменной> | <список имен переменных> , <имя переменной>

описание константы

имя константы = константа

имя переменной :

,

тип

описание переменных

< описание константы > ::= <имя константы> = <константа>

Page 39: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

константа

имя арифметической константы

число без знака

имя

литерная константа

строковая константа

+

-

< константа > ::= <знак><имя арифметической константы> | <знак><число без знака> | <имя> | <литерная константа> | <строковая константа> < знак > ::= | + | –

Учебное пособие для групп преп. Матвеева Т.К. Стр 39 из 60

Page 40: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 40 из 60

= тип имя типа

описание типа

< описание типа > ::= <имя типа> = <тип>

< тип > ::= < имя типа > | < задание перечислимого типа > | < задание ограниченного типа> | <задание ссылочного типа> | <структурированный тип> | packed <структурированный тип> < структурированный тип > ::= < задание регулярного типа > | < задание комбинированного типа > | < задание множественного типа > | < задание файлового типа >

Page 41: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

тип

имя типа

задание перечислимого типа

задание ограниченного типа

задание ссылочного типа

задание регулярного типа

задание комбинированного типа

задание множественного типа

задание файлового типа

packed

Учебное пособие для групп преп. Матвеева Т.К. Стр 41 из 60

Page 42: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 42 из 60

< задание перечислимого типа > ::= ( < список идентификаторов > ) < список идентификаторов > ::= < идентификатор > | < список идентификаторов > , < идентификатор > задание ограниченного типа

константа константа ..

идентификатор ( )

,

задание перечислимого типа

(константа – типа , который является базовым для данного ограниченного типа)

< задание ограниченного типа > ::= < константа > .. < константа >

Page 43: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

задание ссылочного типа

имя типа ↑

< задание ссылочного типа > ::= ↑ < имя типа >

задание регулярного типа

< задание регулярного типа >

array [ ]тип индекса

,

of тип

( тип индекса – любой скалярный тип, кроме real )

::= array [< список индексов >] of < тип > < список индексов > ::=< тип индекса >|< список индексов > , < тип индекса >

Учебное пособие для групп преп. Матвеева Т.К. Стр 43 из 60

Page 44: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 44 из 60

< задание комбинированного типа > ::= record < список полей > end | record < список полей > ; end

список полей

секция записи

;

список полей end ;

record

задание комбинированного типа

< список полей > ::= < секция записи > | < список полей > ; < секция записи >

Page 45: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

секция записи

имя поля

,

тип :

< секция записи > ::=< список имен полей > : < тип > < список имен полей > ::= < имя поля > | < список имен полей > , < имя поля >

задание множественного типа

set of тип

( тип – любой скалярный тип, кроме real )

< задание множественного типа > ::= set of<тип>

Учебное пособие для групп преп. Матвеева Т.К. Стр 45 из 60

Page 46: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 46 из 60

< задание файлового типа > ::= file of <тип>

описание функции

заголовок функции  ; блок

file of тип

(тип – любой тип, не содержащий файловый тип)

задание файлового типа

< описание функции > ::= <заголовок функции> ; <блок>

Page 47: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

< заголовок функции > ::= function <имя функции> <совокупность формальных параметров> : <имя типа>

опис дуры ание проце

заголовок процедуры  ; блок

function имя функции

совокупность формальных параметров : имя типа

(имя типа - имя простого или ссылочного типа)

заголовок функции

< описание процедуры > ::= <заголовок процедуры> ; <блок>

Учебное пособие для групп преп. Матвеева Т.К. Стр 47 из 60

Page 48: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 48 из 60

< заголовок процедуры > ::= procedure <имя процедуры><совокупность формальных параметров>

совокупность формальных параметров

секция формальных параметров ( )

;

procedure имя процедуры

совокупность формальных параметров

заголовок процедуры

< совокупность формальных параметров > ::= <пусто> | (< список параметров>) <список параметров> ::= <секция формальных параметров> | <список параметров> ; <секция формальных параметров>

Page 49: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

секция формальных параметров

параметры-значения

параметры-переменные

параметр-функция

парметр-процедура

< секция формальных параметров > ::= <параметры-значения> | <параметры-переменные> | <параметр-функция> | <параметр-процедура>

Учебное пособие для групп преп. Матвеева Т.К. Стр 49 из 60

Page 50: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 50 из 60

< параметры-значения > ::= <список идентификаторов> : <имя типа>

параметры-переменные

идентификатор : имя типа

,

var

идентификатор : имя типа

,

параметры-значения

< параметры-переменные > ::= var <список идентификаторов> : <имя типа>

Page 51: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

< параметр-функция > ::= <заголовок функции>

параметр-процедура

заголовок процедуры

заголовок функции

параметр-функция

< параметр-процедура > ::= <заголовок процедуры>

Учебное пособие для групп преп. Матвеева Т.К. Стр 51 из 60

Page 52: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 52 из 60

функция

< функция > ::= < имя функции > | < имя функции >(< список фактических параметров >) < список фактических параметров > ::= < фактический параметр > | <список фактических параметров> , <фактический параметр>

имя функции ( фактический параметр )

,

имя

идентификатор

< имя > ::= <идентификатор>

Page 53: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

идентификатор

буква

буква

цифра

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

метка оператора

< метка оператора >

целое без знака

(целое без знака из диапазона от 0 до 9999)

::= < целое без знака >

Учебное пособие для групп преп. Матвеева Т.К. Стр 53 из 60

Page 54: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 54 из 60

< число без знака > ::= < целое без знака > | < вещественное без знака >

целое без знака

цифра

целое без знака

вещественное без знака

число без знака

< целое без знака > ::= < цифра > | < целое без знака >< цифра >

Page 55: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

< вещественное без знака > ::= < число с фиксированной точкой > | < число с плавающей точкой >

число с фиксированное точкой

цифра . цифра

число с фиксированное точкой

число с плавающей точкой

вещественное без знака

< число с фиксированное точкой > ::= <целое без знака> . <целое без знака >

Учебное пособие для групп преп. Матвеева Т.К. Стр 55 из 60

Page 56: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 56 из 60

< число с плавающей точкой > ::= <целое без знака> E <знак><целое без знака> | <число с фиксированной точкой> E <знак><целое без знака>

литерная константа

литера '

'

'

'

+

-

Е целое без знака целое без знака

число с фиксированной точкой

число с плавающей точкой

< литерная константа > ::= ’ <литера> ’ | ’’’’

Page 57: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

строковая константа

' ' литера

'

литера

' ' '

< строковая константа > ::= ’ < группа литер > ’ < группа литер > ::= < два символа > { < литера или кавычка > } < два символа > ::= < литера или кавычка > < литера или кавычка > < литера или кавычка > ::= < литера > | ’ ’’ ’

Учебное пособие для групп преп. Матвеева Т.К. Стр 57 из 60

Page 58: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 58 из 60

Оглавление

< программа > 1 < заголовок программы > 2 < блок > 2 < раздел описаний > 3 < раздел меток > 4 < раздел констант > 4 < раздел типов > 5 < раздел переменных > 5 < раздел процедур и функций> 6 < раздел операторов > 6 < оператор > 7 < основной оператор > 8 < оператор присваивания > 8 < пустой оператор > ::= 8 < оператор перехода > 9 < оператор процедуры > 9 < фактический параметр > 10 < производный оператор > 11 < составной оператор > 11

< выбирающий оператор > 12 < условный оператор > 12 < оператор варианта > 13

< элемент списка варианта > 13 < список меток варианта> 13 < конец > 13

< селектор оператора > 14 < метка варианта > 14 < оператор цикла > 15 < оператор цикла с параметром > 16 < параметр цикла > 16 < оператор цикла с предусловием > 16 < оператор цикла с постусловием > 17 < оператор присоединения > 17 < выражение > 18 < арифметическое выражение > 19

< операция сложения > 19 < слагаемое > 20

< операция умножения > 20 < множитель > 21

Page 59: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

< литерное выражение > 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

Page 60: Сводные синтаксические диаграммы языка …al.cs.msu.ru/system/files/Diag-BNF_Pascal.pdfСводные синтаксические диаграммы

Синтаксические диаграммы языка Паскаль Стр 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

< совокупность формальных параметров > 48

< строковая константа > 57 < группа литер > 57

<список параметров> 48 < два символа > 57 < секция формальных параметров > 49 < параметры-значения > 50

< литера или кавычка > 57

< параметры-переменные > 50