[antlr-interest] infinite recursion
Alexey Demakov
demakov at ispras.ru
Sun Feb 27 23:05:52 PST 2005
> Hi,
> Is it possible to resolve the infinite recursion to rule expression
> from rule6?
>
> expression
> : LPAREN rule1 RPAREN
> | IDENTIFIER
> | rule2
> | rule3
> | rule4
> | rule5
> | rule6
> ;
>
> rule6
> : "first" LPAREN rule1 RPAREN
> | "last" LPAREN rule1 RPAREN
> | expression LBRACKET rule1 RBRACKET
> | expression rule7 IDENTIFIER
> | expression rule7 IDENTIFIER LPAREN RPAREN
> | expression rule7 IDENTIFIER LPAREN rule8 RPAREN
> ;
1. Substitute rule6 in expression:
expression
: LPAREN rule1 RPAREN
| IDENTIFIER
| rule2
| rule3
| rule4
| rule5
| "first" LPAREN rule1 RPAREN
| "last" LPAREN rule1 RPAREN
| expression LBRACKET rule1 RBRACKET
| expression rule7 IDENTIFIER
| expression rule7 IDENTIFIER LPAREN RPAREN
| expression rule7 IDENTIFIER LPAREN rule8 RPAREN
;
2. Last 4 alternatives mean that expression can end with
( LBRACKET rule1 RBRACKET
| rule7 IDENTIFIER
| rule7 IDENTIFIER LPAREN RPAREN
| rule7 IDENTIFIER LPAREN rule8 RPAREN
)*
3. The final rules:
expression
: ( LPAREN rule1 RPAREN
| IDENTIFIER
| rule2
| rule3
| rule4
| rule5
| "first" LPAREN rule1 RPAREN
| "last" LPAREN rule1 RPAREN
)
( LBRACKET rule1 RBRACKET
| rule7 IDENTIFIER
| rule7 IDENTIFIER LPAREN RPAREN
| rule7 IDENTIFIER LPAREN rule8 RPAREN
)*
If rule6 is not referenced anymore, it can be removed.
Regards,
Alexey
-----
Alexey Demakov
TreeDL: Tree Description Language: http://treedl.sourceforge.net
RedVerst Group: http://www.unitesk.com
More information about the antlr-interest
mailing list