[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