[antlr-interest] How to solve = and . mutually left-recursive?
Tomasz Bąk
hellolinus at gmail.com
Mon Jun 18 04:57:42 PDT 2007
Hello!
I have small problem with quite common task (I think)
with "sets of rules that are mutually left-recursive".
$ java org.antlr.Tool SBQL.g
ANTLR Parser Generator Version 3.0 (May 17, 2007) 1989-2007
error(210): The following sets of rules are mutually left-recursive
[non_algebraic_expr, expr]
$
This is my grammar:
grammar SBQL;
options {
output = AST;
ASTLabelType = CommonTree;
backtrack=true;
}
// parser
program : (expr { System.out.println($expr.tree.toStringTree()); } )+ ;
expr : primary_expr
| name_expr
| algebraic_expr
| equality_expr
| non_algebraic_expr
;
primary_expr : STRING_LITERAL
| INTEGER_LITERAL
| BOOLEAN_LITERAL
| '(' expr ')'
;
name_expr : STRING_LITERAL
;
algebraic_expr
: primary_expr ('+'^ primary_expr)*
| primary_expr ('-'^ primary_expr)*
| primary_expr ('*'^ primary_expr)*
;
//algebraic_expr_old
// : expr '+' expr
// | expr '-' expr
// | expr '*' expr
// ;
equality_expr : expr '=' expr
;
non_algebraic_expr : expr '.' expr
| expr 'where' expr
;
// lexer
BOOLEAN_LITERAL : ('true'|'false')*;
INTEGER_LITERAL : ('0'..'9')*;
STRING_LITERAL : ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*;
WS : ( ' ' | '\t' | '\r' | '\n' )+ { $channel = HIDDEN; } ;
Any ideas how to solve this?
Thanks in advance,
Tomasz Bak
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20070618/313c9b96/attachment.html
More information about the antlr-interest
mailing list