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