# É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" %{ %}; ```