在antlr 3中左移递归

时间:2016-05-29 17:59:34

标签: recursion antlr grammar antlr3

我尝试解析 antlr 3 中的语法,但我的左递归有问题,而且我是解析语法的初学者。

1 个答案:

答案 0 :(得分:2)

问题是轮次 b,e,t,f 相互引用而不消耗任何输入 - 例如一个数字可以被多个序列接受:

b -> NUM
b -> e -> t -> f -> b -> NUM
...

你在那里的周期可能是为了表达一个子表达式 - 那里有什么是括号:

start   : e;
e       : t (a t)*;
t       : f (m f)*;
f       : ID | NUM | '-'NUM | '(' e ')';
a       : '+' | '-';
m       : '*' | '/';

(我还将e : t | t a t更改为e : t | e a t以允许1 + 2 + 3