WHILE Выраж DO ПослОператоров END
Приложение B: Синтаксис Оберона-2
Модуль | = | MODULE идент ";" [СписокИмпорта] ПослОбъявл [BEGIN ПослОператоров] END идент ".". |
СписокИмпорта | = | IMPORT [идент ":="] идент {"," [идент ":="] идент} ";". |
ПослОбъявл | = | { CONST {ОбъявлКонст ";" } | TYPE {ОбъявлТипа ";" } | VAR {ОбъявлПерем ";" }} {ОбъявлПроц ";" | ОпережающееОбъяв";"}. |
ОбъявлКонст | = | ИдентОпр "=" КонстВыраж. |
ОбъявлТипа | = | ИдентОпр "=" Тип. |
ОбъявлПерем | = | СписокИдент ":" Тип. |
ОбъявлПроц | = | PROCEDURE [Приемник] ИдентОпр [ФормальныеПарам]";" ПослОбъявл [BEGIN ПослОператоров] END идент. |
ОпережающееОбъяв | = | PROCEDURE "^" [Приемник] ИдентОпр [ФормальныеПарам]. |
ФормальныеПарам | = | "(" [СекцияФП {";" СекцияФП}] ")" [":" УточнИдент]. |
СекцияФП | = | [VAR] идент {"," идент} ":" Тип. |
Приемник | = | "(" [VAR] идент ":" идент ")". |
Тип | = | УточнИдент | ARRAY [КонстВыраж {"," КонстВыраж}] OF Тип | RECORD ["("УточнИдент")"] СписокПолей {";" СписокПолей} END | POINTER TO Тип | PROCEDURE [ФормальныеПарам]. |
СписокПолей | = | [СписокИдент ":" Тип]. |
ПослОператоров | = | Оператор {";" Оператор}. |
Оператор | = | [ Обозначение ":=" Выраж | Обозначение ["(" [СписокВыраж] ")"] | IF Выраж THEN ПослОператоров {ELSIF Выраж THEN ПослОператоров} [ELSE ПослОператоров] END | CASE Выраж OF Вариант {"|" Вариант} [ELSE ПослОператоров] END | WHILE Выраж DO ПослОператоров END | REPEAT ПослОператоров UNTIL Выраж | FOR идент ":=" Выраж TO Выраж [BY КонстВыраж] DO ПослОператоров END | LOOP ПослОператоров END | WITH Охрана DO ПослОператоров {"|" Охрана DO ПослОператоров} [ELSE ПослОператоров] END | EXIT | RETURN [Выраж] ]. |
Вариант | = | [МеткиВарианта {"," МеткиВарианта} ":" ПослОператоров]. |
МеткиВарианта | = | КонстВыраж [".." КонстВыраж]. |
Охрана | = | УточнИдент ":" УточнИдент. |
КонстВыраж | = | Выраж. |
Выраж | = | ПростоеВыраж [Отношение ПростоеВыраж]. |
ПростоеВыраж | = | ["+" | "-"] Слагаемое {ОперСлож Слагаемое}. |
Слагаемое | = | Множитель {ОперУмн Множитель}. |
Множитель | = | Обозначение ["(" [СписокВыраж] ")"] | число | символ | строка | NIL | Множество | "(" Выраж ")" | " ~ " Множитель. |
Множество | = | "{" [Элемент {"," Элемент}] "}". |
Элемент | = | Выраж [".." Выраж]. |
Отношение | = | "=" | "#" | "<" | "<=" | ">" | ">=" | IN | IS. |
ОперСлож | = | "+" | "-" | OR. |
ОперУмн | = | "*" | "/" | DIV | MOD | "&". |
Обозначение | = | УточнИдент {"." идент | "[" СписокВыраж "]" | "^" | "(" УточнИдент ")"}. |
СписокВыраж | = | Выраж {"," Выраж}. СписокИдент = ИдентОпр {"," ИдентОпр}. |
УточнИдент | = | [идент "."] идент. ИдентОпр = идент [ "*" | "-" ]. |