[antlr-interest] Conditional tree parsing
VAUCHER Laurent
VAUCHER at fermat.eu
Tue Oct 31 07:47:19 PST 2006
Hi.
I'm currently implementing an expression evaluator as a TreeParser,
so,
for correct evaluation semantic, I need to conditionnally evaluate some
parts of the parse tree.
For instance my parse tree for the equivalent of Java's
(testexpr ? expr1 : expr2) is something like
#(IF_TOKEN testexprAST expr1AST expr2AST)
When evaluating, I need to direct the tree parser to only walk the
correct branch of the tree (expr1AST is testexpr is true, expr2Ast
otherwise).
My first try was to write:
#(IF_TOKEN t=expression v1=expression v2=expression)
but then both expression are evaluated (wrong!)
My second try was:
#(IF_TOKEN t=expression e1:expression e2:expression)
{ if (t) { result = eval(e1); } else { result = eval(e2); }}
Well, it works, but expressions are still evaluated first.
Is there a way to extract 'any' AST at a given position?
Something like:
#(IF_TOKEN t=expression e1:? e2:?)
Laurent.
More information about the antlr-interest
mailing list