Oberon-2 | |
---|---|
Kieliluokka | pakollinen , jäsennelty , modulaarinen , oliosuuntautunut |
Esiintyi | 1991 |
Tekijä | Niklaus Wirth , Hanspeter Mössenböck |
Tyyppijärjestelmä | staattinen , vahva |
Vaikutettu | Oberon |
vaikutti | Komponentti Pascal , Go |
Oberon-2 ( Oberon-2 ) - Oberon -ohjelmointikielen laajennus meta - ohjelmointielementeillä ( rajoitettu heijastus ) ja työkaluilla olio-ohjelmointiin, lisätty myös avoimet taulukot ja perusosoitintyypit, kentät vain luku -vientiin, FOR operaattori Modula-2 :sta .
Niklaus Wirth ja Hanspeter Mössenböck kehittivät sen vuonna 1991 ETH Zürichissä Object Oberonin uudistukseksi. Oberon-2 on laajennettu Oberon-sarja ja on täysin yhteensopiva sen kanssa.
Tärkeimmät lisäykset:
Oberon-2: lle on olemassa optimoiva kääntäjä XDS [3] ; on myös kielikääntäjä Java-tavukoodiin [4] .
Kieliperhe Algol - Pascal - Modula-2 - Oberon - Oberon-2 - Component Pascal on kehittynyt suuntaan, joka vähentää syntaksin monimutkaisuutta . Samaan aikaan kielen laajenemisesta huolimatta Oberon-2-syntaksin muodollisen kuvauksen tilavuus on pienempi kuin klassisen Oberonin kuvauksen optimoinnin vuoksi: koko syntaksi on kuvattu vain 33 lauseessa laajennettu Backus-Naur-muoto [5] :
Moduuli = MODULE ID ";" [ ImportList ] Viimeksi ilmoitettu [ BEGIN Viimeiset lausunnot ] END id "." . ImportList = TUO [ id ":=" ] id { "," [ id ":=" ] id } ";" . LastDeclared = { CONST { DeclaredConst ";" } | TYYPPI { Tyyppiilmoitus ";" } | VAR { DeclaredVar ";" }} { DeclaredProc ";" | Välitä Declared ";" }. DeclaredConst = IdentDef "=" ConstExpression . TypeDeclare = IdentDef "=" Tyyppi . DeclaredVar = ListIdentifier ":" Tyyppi . DeclaredProc = PROCEDURE [ Vastaanotin ] IdentDef [ FormalParam ] ";" Viimeksi ilmoitettu [ BEGIN Viimeiset lausunnot ] END Ident . ForwardDeclare = PROCEDURE "^" [ Vastaanotin ] IdentDef [ FormalParam ]. FormalParam = "(" [ FP Section { ";" FP Section }] ")" [ ":" SpecIdent ]. SectionFP = [ VAR ] id { "," id } ":" Tyyppi . Vastaanotin = "(" [ var ] id ":" id ")" . Tyyppi = QualID | ARRAY [ ConstExpression { "," ConstExpression }] OF Type | RECORD [ "(" QualIdent ")" ] FieldList { ";" FieldList } END | OSOITIN Tyyppi | _ MENETTELY [ FormalParam ]. FieldList = [ ListIdent ":" Type ]. AfterOperators = Operaattori { ";" }-operaattori . Operaattori = [ Merkintä ":=" Lauseke | Merkintä [ "(" [ ListExpression ] ")" ] | JOS Lausu THEN Lauseke Seq { ELSIF Laus THEN Lause Seq } [ ELSE Lause Seq ] END | CASE - lauseke OF Option { "|" Variantti } [ ELSE StatementSeq ] END | WHILE Express DO -lausunto Seq END | REPEAT StatementSeq UNTIL Lauseke | FOR ident ":=" Express TO Express [ BY Const Express ] DO StatementSeq END | LOOP AfterStatements END | WITH Guard DO StatementSequence { "|" Guard DO StatementSeq } [ ELSE StatementSeq ] END | POISTU | RETURN [ Express ] ]. Vaihtoehto = [ Variant Labels { "," Variant Labels } ":" StatementLast ]. VariantLabels = ConstExpression [ ".." ConstExpression ]. Vartija = SpecId ":" SpecId . ConstExpression = Express . Lauseke = SimpleExpression [ Relation SimpleExpression ]. SimpleExpression = [ "+" | "-" ] Termi { OperSlog Term }. Termi \ u003d - kerroin { OperMul- kerroin }. Kerroin = Merkintä [ "(" [ ListExpression ] ")" ] | numero | symboli | merkkijono | NIL | Aseta | "(" Lauseke ")" | "~" Kerroin . Set = "{" [ Element { "," Element }] "}" . Elementti = Express [ ".." Express ]. Suhde = "=" | "#" | "<" | "<=" | ">" | ">=" | IN | ON . OperSlog = "+" | "-" | TAI . OperUmn = "*" | "/" | DIV | MOD | "&" . Nimitys = Tarkenne { "." identt | "[" ListExpression "]" | "^" | "(" QualIdent ")" }. ListExpr = Lauseke { "," Express }. ListIdent = IdentDef { "," IdentDef }. QualID = [ tunniste "." ] ID . IdentDef = identt [ "*" | "-" ].
Ohjelmointikielet | |
---|---|
|