[antlr-interest] StackOverflowError exception due to long nested expression
Abdul Sami Siddiqui
abdulsamiku at yahoo.com
Thu May 26 00:35:18 PDT 2011
Hi,
I have grammar like this:
expr
: andExpr ( OR^ andExpr )*
;
andExpr
: relExpr ( AND^ relExpr )*
;
relExpr
: aexpr ( (EQUAL ^|NOTEQUAL ^| LESSTHANEQUAL ^| LESSTHAN ^| GREATERTHANEQUAL ^|
GREATERTHAN ^ ) aexpr )*
;
aexpr
: mexpr ( ( PLUS^ | MINUS^ ) mexpr)*
;
mexpr
: unaryExpr ( ( MULT ^ | DIVIDE^ )unaryExpr)*
;
unaryOperator
: PLUS
| MINUS
| NOT
;
unaryExpr
: unaryOperator? atom -> ^(ATOM unaryOperator? atom? )
;
atom
:UINT
| DBL
| ID
| STRING
| BOOL
| function
| LEFT_PAREN expr RIGHT_PAREN -> expr
;
If I try a long nested expression using the above binary operands, I get a
StackOverflowError exception.
How can I avoid StackOverflowError due to long nested expressions? Any ideas?
Thanks
More information about the antlr-interest
mailing list