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 | "&". |
| Обозначение | = | УточнИдент {"." идент | "[" СписокВыраж "]" | "^" | "(" УточнИдент ")"}. |
| СписокВыраж | = | Выраж {"," Выраж}. СписокИдент = ИдентОпр {"," ИдентОпр}. |
| УточнИдент | = | [идент "."] идент. ИдентОпр = идент [ "*" | "-" ]. |