Using lex/yacc I can do a more or less complex things in .yacc semantic actions, such complex as bytecode compilation or real CPU assembly.
Playing with pegged
, I can't figure out how to move from ParseTree
to such like semantic actions. I even can't parse numbers from strings in lexer-like rules because it looks like every rule runs on any token parse, or sumething like this.
Also, I use attribute object trees resemble attribute grammar both for parsing and internal code representation:
class Object {
string value; // or `int value` and `float value` for numbers
map<string, Object*> attr;
vector<Object*> nested;
}
And I also can't figure out how to inherit ParseTree
with all my script language objects to get AST right from pegged parser. Should I use some superloop with lot of matches to process parsed pt
tree into something I need myself, to drop all unneeded parsing meta info and get clean semantic AST?