[antlr-interest] Parser and infinite recursion... ?
jbfraleigh
jbfraleigh at hotmail.com
Tue Apr 13 11:58:23 PDT 2004
Hello --
I was wondering if someone might be able to explain to me why code
example 1 works (doesn't produce any error/warning messages) while
code example 2 does not work (and hopefully how to fix it). The
output from code example 2 follows the code. Note that the only
difference occurs in "logic_1" where I've changed the definition
from: "logic_2" to "logic_2 | logic_3."
--- Code Example 1:
logic_1 : logic_2 ;
logic_2 : (LPAREN logic_3 RPAREN) ;
logic_3 : logic_4 ((AND|OR) logic_4)* ;
logic_4 : logic_1 | if_br ;
========================
--- Code Example 2:
logic_1 : logic_2 | logic 3;
logic_2 : (LPAREN logic_3 RPAREN) ;
logic_3 : logic_4 ((AND|OR) logic_4)* ;
logic_4 : logic_1 | if_br ;
========================
--- Output from Example 2:
ANTLR Parser Generator Version 2.7.2 1989-2003 jGuru.com
xx.g:14:21: infinite recursion to rule logic_3 from rule logic_1
xx.g:17:11: infinite recursion to rule logic_3 from rule logic_4
xx.g:16:11: infinite recursion to rule logic_3 from rule logic_3
xx.g:14:21: infinite recursion to rule logic_3 from rule logic_1
xx.g:14: warning:nondeterminism between alts 1 and 2 of block upon
xx.g:14: k==1:LPAREN
Exiting due to errors.
========================
This should be functionally equivalent to the following code, which
does work:
Code Example 3:
logic_1 : logic_2 ;
logic_2 : logic_3 ((AND|OR) logic_3)* ;
logic_3 : (LPAREN logic_1 RPAREN) | if_br ;
========================
Thanks in advance for any help.
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/antlr-interest/
<*> To unsubscribe from this group, send an email to:
antlr-interest-unsubscribe at yahoogroups.com
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
More information about the antlr-interest
mailing list