Следующая версия
|
Предыдущая версия
|
ob:oberon2 [2016/03/31 09:58] иван_денисов создано |
ob:oberon2 [2020/10/29 07:08] (текущий) |
Оберон-2 является расширением языка программирования [[ob:oberon|Оберон]] в котором добавлены открытые массивы, базовые типы указателей, поля доступные при экспорте только для чтения, восстановлен упраздненный ранее оператор FOR. элементы метапрограммирования (ограниченная рефлексия) и удобства для объектно-ориентированного программирования, | ====== Oberon-2 ====== |
| |
| |
Модуль = MODULE идент ";" [СписокИмпорта] ПослОбъявл [BEGIN ПослОператоров] END идент ".". | **Оберон-2** является расширением языка программирования [[ob:oberon|Оберон]] в котором добавлены //открытые массивы//, //базовые типы указателей//, поля доступные при экспорте //только для чтения//, восстановлен упраздненный ранее оператор **FOR**. |
СписокИмпорта = IMPORT [идент ":="] идент {"," [идент ":="] идент} ";". | |
ПослОбъявл = { CONST {ОбъявлКонст ";" } | TYPE {ОбъявлТипа ";" } | VAR {ОбъявлПерем ";" }} {ОбъявлПроц ";" | ОпережающееОбъяв";"}. | |
ОбъявлКонст = ИдентОпр "=" КонстВыраж. | ==== Компиляторы и среды разработки ==== |
ОбъявлТипа = ИдентОпр "=" Тип. | |
ОбъявлПерем = СписокИдент ":" Тип. | * [[ob:freeoberon|Free Oberon от Артура Ефимова]] |
ОбъявлПроц = PROCEDURE [Приемник] ИдентОпр [ФормальныеПарам]";" ПослОбъявл [BEGIN ПослОператоров] END идент. | * [[ob:voc|VOC from Norayr Chilingarian]] |
ОпережающееОбъяв = PROCEDURE "^" [Приемник] ИдентОпр [ФормальныеПарам]. | * [[ob:ofront|Ofront]] |
ФормальныеПарам = "(" [СекцияФП {";" СекцияФП}] ")" [":" УточнИдент]. | * [[ob:ofrontplus|Ofront+]] |
СекцияФП = [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 | "&". | |
Обозначение = УточнИдент {"." идент | "[" СписокВыраж "]" | "^" | "(" УточнИдент ")"}. | |
СписокВыраж = Выраж {"," Выраж}. СписокИдент = ИдентОпр {"," ИдентОпр}. | |
УточнИдент = [идент "."] идент. ИдентОпр = идент [ "*" | "-" ]. | |