Оберон-2
Описание подготовлено С. Свердловым
Буква = "A"| "B"| "C"| "D"| "E"| "F"| "G"| "H"| "I"| "J"| "K"| "L"| "M"|
"N"| "O"| "P"| "Q"| "R"| "S"| "T"| "U"| "V"| "W"| "X"| "Y"| "Z"| "a"| "b"|
"c"| "d"| "e"| "f"| "g"| "h"| "i"| "j"| "k"| "l"| "m"| "n"| "o"| "p"| "q"|
"r"| "s"| "t"| "u"| "v"| "w"| "x"| "y"| "z".
Идент = Буква {Буква | Цифра}.
Число = Целое | Вещественное.
Целое = Цифра {Цифра} | Цифра {ШестнЦифра} "H".
Вещественное = Цифра {Цифра} "." {Цифра} [Порядок].
Порядок = ("E" | "D") ["+" | "-"] Цифра {Цифра}.
ШестнЦифра = Цифра | "A" | "B" | "C" | "D" | "E" | "F".
Цифра = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9".
Символ = Цифра {ШестнЦифра} "X".
Строка = '"' {символ} '"' | "'" {символ} "'".
Модуль
=
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 | "&".
Обозначение
=
УточнИдент {"." Идент | "[" СписокВыраж "]" | "^"
| "(" УточнИдент ")"}.
СписокВыраж
=
Выраж {"," Выраж}.
СписокИдент
=
ИдентОпр {"," ИдентОпр}.
УточнИдент
=
[Идент "."] Идент.
ИдентОпр
=
Идент [ "*" | "-" ].