É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...>
%};