Oberon-2

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 17. marts 2021; checks kræver 2 redigeringer .
Oberon-2
Sprog klasse imperativ , struktureret , modulær , objektorienteret
Dukkede op i 1991
Forfatter Niklaus Wirth , Hanspeter Mössenböck
Type system statisk , stærk
Blev påvirket Oberon
påvirket Komponent Pascal , Go

Oberon-2 ( Oberon-2 ) - en udvidelse af programmeringssproget Oberon med metaprogrammeringselementer ( begrænset refleksion ) og værktøjer til objektorienteret programmering, også tilføjede åbne arrays og grundlæggende pointertyper, felter tilgængelige for skrivebeskyttet eksport , FOR operatør fra Modula-2 .

Udviklet i 1991 ved ETH Zürich af Niklaus Wirth og Hanspeter Mössenböck som en omarbejdning af Object Oberon. Oberon-2 er et udvidet sæt af Oberon og er fuldt kompatibel med det.

Vigtigste tilføjelser:

Der er en optimeringskompiler XDS [3] til Oberon-2; der er også en sprogkompiler til Java bytecode [4] .

Syntaks

Familien af ​​sprog Algol  - Pascal  - Modula-2  - Oberon  - Oberon-2 - Component Pascal har udviklet sig i retning af at reducere kompleksiteten af ​​syntaksen . På samme tid, på trods af udvidelsen af ​​sproget, er volumen af ​​den formelle beskrivelse af Oberon-2-syntaksen mindre end den klassiske Oberon på grund af optimeringen af ​​beskrivelsen: den fulde syntaks er kun beskrevet i 33 sætninger i den udvidede Backus-Naur-form [5] :

Modul = MODULE id ";" [ ImportList ] Last Declared [ BEGIN Last Statements ] END id "." . ImportList = IMPORTER [ id ":=" ] id { "," [ id ":=" ] id } ";" . LastDeclared = { CONST { DeclaredConst ";" } | TYPE { Typedeclaration ";" } | VAR { DeclaredVar ";" }} { DeclaredProc ";" | ForwardDeclared ";" }. DeclaredConst = IdentDef "=" ConstExpression . TypeDeclare = IdentDef "=" Type . DeclaredVar = ListIdentifier ":" Type . DeclaredProc = PROCEDURE [ Receiver ] IdentDef [ FormalParam ] ";" Sidst erklæret [ BEGIN Sidste udsagn ] SLUT Ident . ForwardDeclare = PROCEDURE "^" [ Receiver ] IdentDef [ FormalParam ]. FormalParam = "(" [ FP Section { ";" FP Section }] ")" [ ":" SpecIdent ]. SectionFP = [ VAR ] id { "," id } ":" Type . Modtager = "(" [ var ] id ":" id ")" . Type = QualID | ARRAY [ ConstExpression { "," ConstExpression }] AF Type | OPTAG [ "(" QualIdent ")" ] FieldList { ";" Feltliste } END | PÅGØR TIL Type | PROCEDURE [ FormalParam ]. FieldList = [ ListIdent ":" Type ]. AfterOperators = Operatør { ";" Operatoren }. Operator = [ Notation ":=" Udtryk | Notation [ "(" [ ListExpression ] ")" ] | IF Expr THEN Statement Seq { ELSIF Expr THEN Statement Seq } [ ELSE Statement Seq ] END | CASE -udtryk for valgmulighed { "|" Variant } [ ELSE StatementSeq ] END | WHILE Express DO Statement Seq END | REPEAT StatementSeq INNTIL Udtryk | FOR ident ":=" Express TO Express [ BY Const Express ] DO StatementSeq END | LOOP AfterStatements END | WITH Guard DO StatementSequence { "|" Guard DO StatementSeq } [ ELSE StatementSeq ] END | AFSLUT | TILBAGE [ Express ] ]. Option = [ Option Labels { "," Option Labels } ":" StatementLast ]. VariantLabels = ConstExpression [ ".." ConstExpression ]. Guard = SpecId ":" SpecId . ConstExpression = Express . Udtryk = SimpleExpression [ Relation SimpleExpression ]. SimpleExpression = [ "+" | "-" ] Term { OperSlog Term }. Term \ u003d Multiplikator { OperMul Multiplikator }. Multiplikator = Notation [ "(" [ Listeudtryk ] ")" ] | nummer | symbol | streng | NIL | Sæt | "(" Udtryk ")" | " ~ " Multiplikator . Set = "{" [ Element { "," Element }] "}" . Element = Express [ ".." Express ]. Relation = "=" | "#" | "<" | "<=" | ">" | ">=" | IN | IS . OperSlog = "+" | "-" | ELLER . OperUmn = "*" | "/" | DIV | MOD | "&" . Designation = Qualifier { "." ident | "[" Listeudtryk "]" | "^" | "(" QualIdent ")" }. ListExpr = Udtryk { "," Express }. ListIdent = IdentDef { "," IdentDef }. QualID = [ identifikator "." ] ID . IdentDef = ident [ "*" | "-" ].

Noter

  1. Oberon-2 programmeringssprog arkiveret 28. marts 2022 på Wayback Machine , H. Mössenböck, N. Wirth
  2. En beskrivelse af Oberon-2-sproget af Paul Floyd Arkiveret 5. september 2012 på Wayback Machine 
  3. XDS familie af produkter (link utilgængeligt) . Hentet 18. august 2012. Arkiveret fra originalen 23. august 2011. 
  4. Oberon-2-kompiler til Java Virtual Machine ([[Java Virtual Machine]]) bytekode . Hentet 20. april 2022. Arkiveret fra originalen 30. september 2021.
  5. H. Mössenböck, N. Wirth, 1993 (utilgængeligt link) . Hentet 21. august 2012. Arkiveret fra originalen 2. marts 2010.