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] .
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 [ "*" | "-" ].
Programovací jazyky | |
---|---|
|