Értelmezők

Értelmezők (parser)

Két hasonló célú és felépítésű értelmező létezik. Mindkettő szöveges adatokból szintaxis fát (AST) hoz létre. Az első a System::Parser nevű értelmezőt meglévő nyelven definiáló értelmező (főként DSL nyelvekhez). Ez a típus beépül a Modema/System rendszerbe, és csak speciális nyelvtanok adhatók meg, amikhez létezik belső feldolgozás.

Beépített értelmezők:

  • LL(k): Modema/Lang kódot használó LL(k) típusú általános értelmező

  • LALR(1): Modema/Lang kódot használó LALR(1) típusú általános értelmező

Általános részei:

  • token generátor

  • szabály motor

  • belső változók

  • AST generátor

Tartomány specifikus adatok

A második értelmező szöveges adatot definiál, amit az előzőek szerint megadott értelmezővel csomópontokká lehet alakítani (Group::ParserData). Lényegében egy korábban definiált értelmező nyelvtanát használó értelmező.

Beépített értelmezők:

  • modema-runtime: komplex szintaxis

  • code: kódtöredékhez osztályok és magasabb rendű elemek nélkül

  • path: típusok és tagok sorrendjét definiáló kulcsokhoz

  • dataserialize: értékekkel feltöltött adathalmazhoz (példányosított típusokat hoz létre)

  • LL(k): Modema/Lang kódot használó LL(k) típusú általános értelmező

  • LALR(1): Modema/Lang kódot használó LALR(1) típusú általános értelmező

Metódusok

Két beépített metódusa van:

  • parse(): a megadott sztring típusú tartalmat alalítja át csomópontokká (AST).

  • parseFromFile(string): először beolvassa egy fájl tartalmát és utána hívja meg a parse() metódust. Nincs szintaxis hozzá.

Szintaxis

    *parserdata Name: "ParserType" %{
        <text data...>
    %};