Oberon-2

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 17 martie 2021; verificările necesită 2 modificări .
Oberon-2
Clasa de limba imperativ , structurat , modular , orientat pe obiecte
Aparut in 1991
Autor Niklaus Wirth , Hanspeter Mössenböck
Tip sistem static , puternic
A fost influențat Oberon
influențat Componenta Pascal , Go

Oberon-2 ( Oberon-2 ) - o extensie a limbajului de programare Oberon cu elemente de metaprogramare ( reflexie limitată ) și instrumente pentru programare orientată pe obiecte, a adăugat, de asemenea, matrice deschise și tipuri de pointer de bază, câmpuri disponibile pentru export numai în citire, FOR operator de la Modula- 2 .

Dezvoltat în 1991 la ETH Zurich de Niklaus Wirth și Hanspeter Mössenböck ca o reelaborare a obiectului Oberon. Oberon-2 este un set extins de Oberon și este pe deplin compatibil cu acesta.

Adăugări principale:

Există un compilator de optimizare XDS [3] pentru Oberon-2; există și un compilator de limbaj pentru codul de octeți Java [4] .

Sintaxă

Familia de limbi Algol  - Pascal  - Modula-2  - Oberon  - Oberon-2 - Componenta Pascal a evoluat în direcția reducerii complexității sintaxei . În același timp, în ciuda extinderii limbajului, volumul descrierii formale a sintaxei Oberon-2 este mai mic decât cel al Oberonului clasic datorită optimizării descrierii: sintaxa completă este descrisă în doar 33 de propoziții în forma extinsă Backus-Naur [5] :

Modul = ID MODUL ";" [ ImportList ] Ultima declarată [ BEGIN Ultimele declarații ] END id "." . ImportList = IMPORT [ id ":=" ] id { "," [ id ":=" ] id } ";" . LastDeclared = { CONST { DeclaredConst ";" } | TYPE { Declarație de tip ";" } | VAR { DeclaredVar ";" }} { DeclaredProc ";" | ForwardDeclared ";" }. DeclaredConst = IdentDef "=" ConstExpression . TypeDeclare = IdentDef "=" Tip . DeclaredVar = ListIdentifier „:” Tip . DeclaredProc = PROCEDURE [ Receiver ] IdentDef [ FormalParam ] ";" Ultima declarată [ BEGIN Ultimele declaraţii ] END Ident . ForwardDeclare = PROCEDURE "^" [ Receiver ] IdentDef [ FormalParam ]. FormalParam = "(" [ FP Section { ";" FP Section }] ")" [ ":" SpecIdent ]. SectionFP = [ VAR ] id { "," id } ":" Tip . Receiver = "(" [ var ] id ":" id ")" . Tip = QualID | ARRAY [ ConstExpression { "," ConstExpression }] OF Type | ÎNREGISTRARE [ "(" QualIdent ")" ] FieldList { ";" FieldList } END | POINTER TO Tastați | PROCEDURĂ [ FormalParam ]. FieldList = [ ListIdent ":" Type ]. AfterOperators = Operator { ";" Operatorul }. Operator = [ Notație ":=" Expresie | Notație [ "(" [ ListExpression ] ")" ] | IF Expr THEN Instrucțiune Seq { ELSIF Expr THEN Instrucțiune Seq } [ ELSE Instrucțiune Seq ] END | CASE Exprimarea Opțiunii { " |" Varianta } [ ELSE StatementSeq ] END | Instrucțiunea WHILE Express DO Seq END | REPEAT StatementSeq UNTIL Expresia | FOR ident ":=" Express TO Express [ BY Const Express ] DO StatementSeq END | LOOP AfterStatements END | WITH Guard DO StatementSequence { "|" Guard DO StatementSeq } [ ELSE StatementSeq ] END | EXIT | RETURN [ Express ] ]. Option = [ Option Labels { "," Option Labels } ":" StatementLast ]. VariantLabels = ConstExpression [ ".." ConstExpression ]. Guard = SpecId ":" SpecId . ConstExpression = Express . Expresie = SimpleExpression [ Relație SimpleExpression ]. SimpleExpression = [ „+” | "-" ] Termen { Termen OperSlog }. Termen \ u003d Multiplicator { OperMul Multiplier }. Multiplicator = Notație [ "(" [ ListExpression ] ")" ] | număr | simbol | șir | NIL | Set | "(" Expresie ")" | " ~ " Multiplicator . Set = "{" [ Element { "," Element }] "}" . Element = Express [ ".." Express ]. Relație = "=" | „#” | „<” | „<=" | „>” | ">=" | ÎN | ESTE . OperSlog = "+" | „-” | SAU . OperUmn = "*" | „/” | DIV | MOD | „&” . Desemnare = calificativ { "." ident | „[” ListExpression „]” | „^” | "(" QualIdent ")" }. ListExpr = Expresie { "," Express }. ListIdent = IdentDef { "," IdentDef }. QualID = [ identificator "." ] ID . IdentDef = ident [ "*" | „-” ].

Note

  1. Oberon-2 Programming Language Arhivat 28 martie 2022 la Wayback Machine , H. Mössenböck, N. Wirth
  2. A Description of the Oberon-2 Language de Paul Floyd Arhivat 5 septembrie 2012 la Wayback Machine 
  3. Familia de produse XDS (link indisponibil) . Preluat la 18 august 2012. Arhivat din original la 23 august 2011. 
  4. Compilatorul Oberon-2 la Java Virtual Machine ([[Java Virtual Machine]]) bytecode . Preluat la 20 aprilie 2022. Arhivat din original la 30 septembrie 2021.
  5. H. Mössenböck, N. Wirth, 1993 (link inaccesibil) . Preluat la 21 august 2012. Arhivat din original la 2 martie 2010.