[antlr-interest] could not even do k=1 for decision xx; reason: timed out
Tomasz Jastrzebski
tdjastrzebski at yahoo.com
Fri Aug 7 10:38:02 PDT 2009
Hello all,
I have several rules "chained" like this:
additiveExpression
: multiplicativeExpression ('+' | '-') multiplicativeExpression
| multiplicativeExpression
;
multiplicativeExpression
: exponentiationExpression ('*' | '/') exponentiationExpression
| exponentiationExpression
;
and eventually the tool complains: could not even do k=1 for decision XX; reason: timed out (>1000ms)
Nothing unseen - such rules could be easily left-factored:
additiveExpression
: multiplicativeExpression (('+' | '-') multiplicativeExpression)*
;
multiplicativeExpression
: exponentiationExpression (('*' | '/') exponentiationExpression)*
;
But the problem is that I cannot do that since I need to catch reference to each expression and operator to build nice AST tree. The real code looks more like this:
additiveExpression
: e1=multiplicativeExpression (o='+' | o='-') e2=multiplicativeExpression -> BINARY_EXPRESSION<BinaryExpression>[$o.text, $e1.tree, $e2.tree]
| multiplicativeExpression
;
multiplicativeExpression
: e1=exponentiationExpression (o='*' | o='/') e2=exponentiationExpression -> BINARY_EXPRESSION<BinaryExpression>[$o.text, $e1.tree, $e2.tree]
| exponentiationExpression
;
Any ideas?
Thanks,
Tomasz
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20090807/c032c950/attachment.html
More information about the antlr-interest
mailing list