Oberon-2

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2021. március 17-én felülvizsgált verziótól ; az ellenőrzések 2 szerkesztést igényelnek .
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] .

Szintaxis

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

Jegyzetek

  1. Oberon-2 programozási nyelv archiválva : 2022. március 28., a Wayback Machine , H. Mössenböck, N. Wirth
  2. Paul Floyd Oberon-2 nyelvének leírása archiválva 2012. szeptember 5-én a Wayback Machine -nél 
  3. XDS termékcsalád (hivatkozás nem érhető el) . Letöltve: 2012. augusztus 18. Az eredetiből archiválva : 2011. augusztus 23.. 
  4. Oberon-2 fordító a Java Virtual Machine ([[Java Virtual Machine]]) bájtkódhoz . Letöltve: 2022. április 20. Az eredetiből archiválva : 2021. szeptember 30.
  5. H. Mössenböck, N. Wirth, 1993 (elérhetetlen link) . Letöltve: 2012. augusztus 21. Az eredetiből archiválva : 2010. március 2..