Разработка компиляторов. Ишакова Е.Н. - 7 стр.

UptoLike

Составители: 

7
then | else | while | do | true | false
<разделитель> ::= ( | ) | , | ; | : | := | . | { | } |+ | - | * | / | | | ¬ | = | < | >
<программа> ::=
program <описание> ; <тело>.
<описание> ::=
var <идентификатор> {, <идентификатор>}: (int | bool)
<тело> ::=
begin {<оператор>; } end
<оператор> ::= <присваивания> | <условный> | <цикла> | <составной> |
<ввода> | <вывода>
<присваивания> ::= <идентификатор> := <выражение>
<условный> ::=
if <выражение> then <оператор> else <оператор>
<цикла> ::=
while <выражение> do <оператор>
<составной>:: =
begin {<оператор> ;} end
<ввода>:: =
read(<идентификатор>)
<вывода>:: =
write(<выражение>)
<выражение>:: = <сумма> | <сумма> ( = | < | >) <сумма>
<сумма> ::= <произведение> { (+ | - | ) <произведение>}
<произведение>:: = <множитель> { (* | / | ) <множитель>}
<множитель>:: = <идентификатор> | <число> | <логическая_константа> |
¬ <множитель> | (<выражение>)
<логическая_константа>:: =
true | false
Диаграммы Вирта
В метаязыке диаграмм Вирта используются графические примитивы,
представленные на рисунке 2.1.
При построении диаграмм учитывают следующие правила:
-
каждый графический элемент, соответствующий терминалу или не-
терминалу, имеет по одному входу и выходу, которые обычно изображаются на
противоположных сторонах;
-
каждому правилу соответствует своя графическая диаграмма, на кото-
рой терминалы и нетерминалы соединяются посредством дуг;
-
альтернативы в правилах задаются ветвлением дуг, а итерации - их
слиянием;
-
должна быть одна входная дуга (располагается обычно слева или свер-
ху), задающая начало правила и помеченная именем определяемого нетермина-
ла, и одна выходная, задающая его конец (обычно располагается справа и сни-
зу);
-
стрелки на дугах диаграмм обычно не ставятся, а направления связей
отслеживаются движением от начальной дуги в соответствии с плавными изги-
бами промежуточных дуг и ветвлений.
                                   then | else | while | do | true | false
     <разделитель> ::= ( | ) | , | ; | : | := | . | { | } |+ | - | * | / | ∨ | ∧ | ¬ | = | < | >
     <программа> ::= program <описание> ; <тело>.
     <описание> ::= var <идентификатор> {, <идентификатор>}: (int | bool)
     <тело> ::= begin {<оператор>; } end
     <оператор> ::= <присваивания> | <условный> | <цикла> | <составной> |
                             <ввода> | <вывода>
     <присваивания> ::= <идентификатор> := <выражение>
     <условный> ::= if <выражение> then <оператор> else <оператор>
     <цикла> ::= while <выражение> do <оператор>
     <составной>:: = begin {<оператор> ;} end
     <ввода>:: = read(<идентификатор>)
     <вывода>:: = write(<выражение>)
     <выражение>:: = <сумма> | <сумма> ( = | < | >) <сумма>
     <сумма> ::= <произведение> { (+ | - | ∨) <произведение>}
     <произведение>:: = <множитель> { (* | / | ∧) <множитель>}
     <множитель>:: = <идентификатор> | <число> | <логическая_константа> |
                         ¬ <множитель> | (<выражение>)
     <логическая_константа>:: = true | false
                                       Диаграммы Вирта
       В метаязыке диаграмм Вирта используются графические примитивы,
представленные на рисунке 2.1.
       При построении диаграмм учитывают следующие правила:
       - каждый графический элемент, соответствующий терминалу или не-
терминалу, имеет по одному входу и выходу, которые обычно изображаются на
противоположных сторонах;
       - каждому правилу соответствует своя графическая диаграмма, на кото-
рой терминалы и нетерминалы соединяются посредством дуг;
       - альтернативы в правилах задаются ветвлением дуг, а итерации - их
слиянием;
       - должна быть одна входная дуга (располагается обычно слева или свер-
ху), задающая начало правила и помеченная именем определяемого нетермина-
ла, и одна выходная, задающая его конец (обычно располагается справа и сни-
зу);
       - стрелки на дугах диаграмм обычно не ставятся, а направления связей
отслеживаются движением от начальной дуги в соответствии с плавными изги-
бами промежуточных дуг и ветвлений.




                                                                                                   7