Oberon-2

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 17. maaliskuuta 2021 tarkistetusta versiosta . tarkastukset vaativat 2 muokkausta .
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] .

Syntaksi

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

Muistiinpanot

  1. Oberon-2 ohjelmointikieli arkistoitu 28. maaliskuuta 2022 Wayback Machinessa , H. Mössenböck, N. Wirth
  2. Paul Floydin Oberon-2-kielen kuvaus Arkistoitu 5. syyskuuta 2012 Wayback Machinessa 
  3. XDS-tuoteperhe (linkki ei ole käytettävissä) . Haettu 18. elokuuta 2012. Arkistoitu alkuperäisestä 23. elokuuta 2011. 
  4. Oberon-2-kääntäjä Java Virtual Machine ([[Java Virtual Machine]]) tavukoodiin . Haettu 20. huhtikuuta 2022. Arkistoitu alkuperäisestä 30. syyskuuta 2021.
  5. H. Mössenböck, N. Wirth, 1993 (pääsemätön linkki) . Haettu 21. elokuuta 2012. Arkistoitu alkuperäisestä 2. maaliskuuta 2010.