Oberon-2

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 17 mars 2021; kontroller kräver 2 redigeringar .
Oberon-2
Språkklass imperativ , strukturerad , modulär , objektorienterad
Framträdde i 1991
Författare Niklaus Wirth , Hanspeter Mössenböck
Typ system statisk , stark
Blivit påverkad Oberon
påverkas Komponent Pascal , Go

Oberon-2 ( Oberon-2 ) - en förlängning av programmeringsspråket Oberon med metaprogrammeringselement ( begränsad reflektion ) och verktyg för objektorienterad programmering, även lagt till öppna arrayer och grundläggande pekartyper, fält tillgängliga för skrivskyddad export, FOR operatör från Modula-2 .

Utvecklad 1991 vid ETH Zürich av Niklaus Wirth och Hanspeter Mössenböck som en omarbetning av Object Oberon. Oberon-2 är en utökad uppsättning av Oberon och är helt kompatibel med den.

Huvudsakliga tillägg:

Det finns en optimerande kompilator XDS [3] för Oberon-2; det finns också en språkkompilator till Java bytecode [4] .

Syntax

Språkfamiljen Algol  - Pascal  - Modula-2  - Oberon  - Oberon-2 - Komponent Pascal har utvecklats i riktning mot att minska komplexiteten i syntaxen . Samtidigt, trots expansionen av språket, är volymen av den formella beskrivningen av Oberon-2-syntaxen mindre än den för den klassiska Oberon på grund av optimeringen av beskrivningen: den fullständiga syntaxen beskrivs i endast 33 meningar i den utökade Backus-Naur-formen [5] :

Modul = MODUL- id ";" [ ImportList ] Senast deklarerad [ BEGIN Senaste uttalanden ] END id "." . ImportList = IMPORTERA [ id ":=" ] id { "," [ id ":=" ] id } ";" . LastDeclared = { CONST { DeclaredConst ";" } | TYPE { Typedeclaration ";" } | VAR { DeclaredVar ";" }} { DeclaredProc ";" | ForwardDeclared ";" }. DeclaredConst = IdentDef "=" ConstExpression . TypeDeclare = IdentDef "=" Typ . DeclaredVar = ListIdentifier ":" Typ . DeclaredProc = PROCEDUR [ Mottagare ] IdentDef [ FormalParam ] ";" Senaste deklarerade [ BEGIN Senaste uttalanden ] END Ident . ForwardDeclare = PROCEDUR "^" [ Mottagare ] IdentDef [ FormalParam ]. FormalParam = "(" [ FP Section { ";" FP Section }] ")" [ ":" SpecIdent ]. SektionFP = [ VAR ] id { "," id } ":" Typ . Mottagare = "(" [ var ] id ":" id ")" . Typ = QualID | ARRAY [ ConstExpression { "," ConstExpression }] AV Typ | RECORD [ "(" QualIdent ")" ] FieldList { ";" Fältlista } END | PEKARE TILL Typ | PROCEDUR [ FormalParam ]. FieldList = [ ListIdent ":" Typ ]. AfterOperators = Operatör { ";" Operatorn }. Operator = [ Notation ":=" Uttryck | Notation [ "(" [ ListExpression ] ")" ] | IF Expr THEN Statement Seq { ELSIF Expr THEN Statement Seq } [ ELSE Statement Seq ] END | CASE- uttryck för alternativ { "|" Variant } [ ELSE StatementSeq ] END | WHILE Express DO Statement Seq END | REPEAT StatementSeq TILL Uttryck | FÖR ident ":=" Express TO Express [ AV Const Express ] DO StatementSeq END | LOOP AfterStatements END | WITH Guard DO StatementSequence { "|" Guard DO StatementSeq } [ ELSE StatementSeq ] END | AVSLUTA | RETURN [ Express ] ]. Alternativ = [ Variantetiketter { "," Variantetiketter } ":" StatementLast ]. VariantLabels = ConstExpression [ ".." ConstExpression ]. Guard = SpecId ":" SpecId . ConstExpression = Express . Expression = SimpleExpression [ Relation SimpleExpression ]. SimpleExpression = [ "+" | "-" ] Term { OperSlog Term }. Term \ u003d Multiplikator { OperMul Multiplier }. Multiplikator = Notation [ "(" [ ListExpression ] ")" ] | nummer | symbol | sträng | NIL | Ställ in | "(" Uttryck ")" | " ~ " Multiplikator . Set = "{" [ Element { "," Element }] "}" . Element = Express [ ".." Express ]. Relation = "=" | "#" | "<" | "<=" | ">" | ">=" | IN | IS . OperSlog = "+" | "-" | ELLER . OperUmn = "*" | "/" | DIV | MOD | "&" . Designation = Qualifier { "." ident | "[" ListExpression "]" | "^" | "(" QualIdent ")" }. ListExpr = Uttryck { "," Express }. ListIdent = IdentDef { "," IdentDef }. QualID = [ identifierare "." ] ID . IdentDef = ident [ "*" | "-" ].

Anteckningar

  1. Oberon-2 programmeringsspråk arkiverad 28 mars 2022 på Wayback Machine , H. Mössenböck, N. Wirth
  2. En beskrivning av Oberon-2-språket av Paul Floyd Arkiverad 5 september 2012 på Wayback Machine 
  3. XDS produktfamilj (länk ej tillgänglig) . Hämtad 18 augusti 2012. Arkiverad från originalet 23 augusti 2011. 
  4. Oberon-2-kompilator till Java Virtual Machine ([[Java Virtual Machine]]) bytekod . Hämtad 20 april 2022. Arkiverad från originalet 30 september 2021.
  5. H. Mössenböck, N. Wirth, 1993 (otillgänglig länk) . Hämtad 21 augusti 2012. Arkiverad från originalet 2 mars 2010.