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