Oberon-2 | |
---|---|
Nyelvóra | kötelező , strukturált , moduláris , objektumorientált |
Megjelent | 1991 |
Szerző | Niklaus Wirth , Hanspeter Mössenböck |
Típusrendszer | statikus , erős |
Befolyásolt | Oberon |
befolyásolta | Pascal komponens , Go |
Oberon-2 ( Oberon-2 ) - az Oberon programozási nyelv kiterjesztése metaprogramozási elemekkel ( korlátozott visszaverődés ) és objektum-orientált programozási eszközökkel, nyílt tömbök és alapvető mutatótípusok hozzáadásával, írásvédett exportáláshoz elérhető mezők, a FOR operátor a Modula- 2 -ből .
Niklaus Wirth és Hanspeter Mössenböck fejlesztette ki 1991-ben az ETH Zürichben az Object Oberon átdolgozásaként . Az Oberon-2 az Oberon kiterjesztett készlete, és teljesen kompatibilis vele.
Főbb kiegészítések:
Létezik egy optimalizáló XDS fordító [3] az Oberon-2 számára; van egy nyelvi fordító is a Java bájtkódhoz [4] .
Az Algol - Pascal - Modula-2 - Oberon - Oberon-2 - Component Pascal nyelvcsalád a szintaxis összetettségének csökkentése irányába fejlődött . Ugyanakkor a nyelv bővítése ellenére az Oberon-2 szintaxis formális leírásának volumene a leírás optimalizálása miatt kisebb, mint a klasszikus Oberoné: a teljes szintaxis mindössze 33 mondatban van leírva a a kiterjesztett Backus-Naur forma [5] :
Modul = MODUL azonosítója ";" [ ImportList ] Utoljára deklarált [ BEGIN Last Statements ] END id "." . ImportList = IMPORTÁLÁS [ id ":=" ] id { "," [ id ":=" ] id } ";" . LastDeclared = { CONST { DeclaredConst ";" } | TYPE { Típusdeklaráció ";" } | VAR { DeclaredVar ";" }} { DeclaredProc ";" | TovábbításDeclared ";" }. DeclaredConst = IdentDef "=" ConstExpression . TypeDeclare = IdentDef "=" Típus . DeclaredVar = ListIdentifier ":" Típus . DeclaredProc = PROCEDURE [ Receiver ] IdentDef [ FormalParam ] ";" Utoljára deklarált [ BEGIN Utolsó nyilatkozatok ] END Ident . ForwardDeclare = PROCEDURE "^" [ Receiver ] IdentDef [ FormalParam ]. FormalParam = "(" [ FP Section { ";" FP Section }] ")" [ ":" SpecIdent ]. SectionFP = [ VAR ] id { "," id } ":" Típus . Receiver = "(" [ var ] id ":" id ")" . Típus = QualID | ARRAY [ ConstExpression { "," ConstExpression }] OF Type | RECORD [ "(" QualIdent ")" ] FieldList { ";" FieldList } END | POINTER TO Típus | ELJÁRÁS [ FormalParam ]. FieldList = [ ListIdent ":" Type ]. AfterOperators = Operátor { ";" A } operátor. Operátor = [ Jelölés ":=" Kifejezés | Jelölés [ "(" [ ListExpression ] ")" ] | IF Expr THEN utasítás Seq { ELSIF Expr THEN utasítás Seq } [ ELSE Statement Seq ] END | CASE OF Option { " |" Változat } [ ELSE StatementSeq ] END | WHILE Express DO nyilatkozat Seq END | REPEAT StatementSeq UNTIL Kifejezés | FOR ident ":=" Express TO Express [ BY Const Express ] DO StatementSeq END | LOOP AfterStatements VÉGE | WITH Guard DO StatementSequence { "|" Guard DO StatementSeq } [ ELSE StatementSeq ] END | KILÉPÉS | RETURN [ Express ] ]. Opció = [ Változatos címkék { "," Variant Labels } ":" StatementLast ]. VariantLabels = ConstExpression [ ".." ConstExpression ]. Guard = SpecId ":" SpecId . ConstExpression = Expressz . Kifejezés = SimpleExpression [ Relation SimpleExpression ]. SimpleExpression = [ "+" | "-" ] Term { OperSlog Term }. Term \ u003d szorzó { OperMul szorzó }. Szorzó = Jelölés [ "(" [ ListExpression ] ")" ] | szám | szimbólum | húr | NIL | Állítsa be | "(" Kifejezés ")" | " ~ " Szorzó . Set = "{" [ Element { "," Element }] "}" . Elem = Express [ ".." Express ]. Reláció = "=" | "#" | "<" | "<=" | ">" | ">=" | IN | VAN . OperSlog = "+" | "-" | VAGY . OperUmn = "*" | "/" | DIV | MOD | "&" . Megnevezés = Minősítő { "." ident | "[" ListExpression "]" | "^" | "(" QualIdent ")" }. ListExpr = { "," Express } kifejezés . ListIdent = IdentDef { "," IdentDef }. QualID = [ azonosító "." ] ID . IdentDef = ident [ "*" | "-" ].
Programozási nyelvek | |
---|---|
|