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] .
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 [ "*" | „-” ].
Limbaje de programare | |
---|---|
|