Oberon-2

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 17. března 2021; kontroly vyžadují 2 úpravy .
Oberon-2
Jazyková třída imperativní , strukturovaný , modulární , objektově orientovaný
Objevil se v 1991
Autor Niklaus Wirth , Hanspeter Mössenböck
Typový systém statický , silný
Byl ovlivněn Oberon
ovlivnil Komponenta Pascal , Go

Oberon-2 ( Oberon-2 ) - rozšíření programovacího jazyka Oberon o prvky metaprogramování ( omezená reflexe ) a nástroje pro objektově orientované programování, přidána také otevřená pole a základní typy ukazatelů, pole dostupná pro export pouze pro čtení, FOR operátor od Modula- 2 .

Vyvinutý v roce 1991 na ETH Zurich Niklausem Wirthem a Hanspeterem Mössenböckem jako přepracování Object Oberon. Oberon-2 je rozšířená sada Oberonu a je s ním plně kompatibilní.

Hlavní doplňky:

Pro Oberon-2 existuje optimalizační kompilátor XDS [3] ; existuje také jazykový kompilátor do bytecode Java [4] .

Syntaxe

Rodina jazyků Algol  - Pascal  - Modula-2  - Oberon  - Oberon-2 - Component Pascal se vyvinula směrem ke snížení složitosti syntaxe . Zároveň i přes rozšíření jazyka je objem formálního popisu syntaxe Oberon-2 menší než u klasického Oberonu kvůli optimalizaci popisu: plná syntaxe je popsána pouze ve 33 větách v rozšířená Backus-Naurova forma [5] :

Modul = MODULE id ";" [ ImportList ] Poslední deklarováno [ BEGIN Last Statements ] END id "." . ImportList = IMPORT [ id ":=" ] id { "," [ id ":=" ] id } ";" . LastDeclared = { CONST { DeclaredConst ";" } | TYPE { Typedeclaration ";" } | VAR { DeclaredVar ";" }} { DeclaredProc ";" | ForwardDeclared ";" }. DeclaredConst = IdentDef "=" ConstExpression . TypeDeclare = IdentDef "=" Typ . DeclaredVar = ListIdentifier ":" Typ . DeclaredProc = PROCEDURE [ Receiver ] IdentDef [ FormalParam ] ";" Naposledy deklarováno [ ZAČÁTEK Poslední prohlášení ] END Ident . ForwardDeclare = PROCEDURE "^" [ Receiver ] IdentDef [ FormalParam ]. FormalParam = "(" [ Sekce FP { ";" Sekce FP }] ")" [ ":" SpecIdent ]. SectionFP = [ VAR ] id { "," id } ":" Typ . Receiver = "(" [ var ] id ":" id ")" . Typ = QualID | ARRAY [ ConstExpression { "," ConstExpression }] OF Type | RECORD [ "(" QualIdent ")" ] FieldList { ";" FieldList } END | Ukazatel na typ | POSTUP [ FormalParam ]. FieldList = [ ListIdent ":" Typ ]. AfterOperators = Operátor { ";" Operátor }. Operátor = [ Zápis ":=" Výraz | Zápis [ "(" [ ListExpression ] ")" ] | IF Expr THEN Příkaz Seq { ELSIF Expr THEN Příkaz Seq } [ ELSE Příkaz Seq ] END | CASE výraz možnosti { " | " Varianta } [ ELSE StatementSeq ] END | WHILE Express DO Statement Seq END | REPEAT StatementSeq UNTIL Expression | FOR ident ":=" Express TO Express [ BY Const Express ] DO StatementSeq END | LOOP AfterStatements KONEC | WITH Guard DO StatementSequence { "|" Guard DO StatementSeq } [ ELSE StatementSeq ] END | EXIT | RETURN [ Expresní ] ]. Možnost = [ Štítky variant { "," Štítky variant } ":" StatementLast ]. VariantLabels = ConstExpression [ ".." ConstExpression ]. Stráž = SpecId ":" SpecId . ConstExpression = Express . Výraz = SimpleExpression [ Relation SimpleExpression ]. SimpleExpression = [ "+" | "-" ] Termín { Termín OperSlog }. Termín \ u003d Multiplikátor { OperMul Multiplier }. Násobitel = Zápis [ "(" [ ListExpression ] ")" ] | číslo | symbol | řetězec | NIL | Set | "(" Výraz ")" | " ~ " Násobitel . Set = "{" [ Element { "," Element }] "}" . Element = Express [ ".." Express ]. Vztah = "=" | "#" | "<" | "<=" | ">" | ">=" | V | IS . OperaSlog = "+" | "-" | NEBO . OperaUmn = "*" | "/" | DIV | MOD | "&" . Označení = kvalifikátor { "." ident | "[" ListExpression "]" | "^" | "(" Kvalifikovaný ")" }. ListExpr = Výraz { "," Express }. ListIdent = IdentDef { "," IdentDef }. QualID = [ identifikátor "." ] ID . IdentDef = ident [ "*" | "-" ].

Poznámky

  1. Oberon-2 Programming Language Archived 28. března 2022 na Wayback Machine , H. Mössenböck, N. Wirth
  2. Popis jazyka Oberon-2 od Paula Floyda Archivováno 5. září 2012 na Wayback Machine 
  3. XDS Family of Products (odkaz není k dispozici) . Získáno 18. srpna 2012. Archivováno z originálu dne 23. srpna 2011. 
  4. Bytecode kompilátor Oberon-2 do Java Virtual Machine ([[Java Virtual Machine]]) . Získáno 20. dubna 2022. Archivováno z originálu dne 30. září 2021.
  5. H. Mössenböck, N. Wirth, 1993 (nepřístupný odkaz) . Získáno 21. srpna 2012. Archivováno z originálu dne 2. března 2010.