2015-04-30 120 views
0

我想解析像ANTLR的相互左递归

f()[3]()[3] ...() or [] 

这意味着返回数组,可以被引用,并且可以包含函数本身类函数。

我试图

functionCall: (ID | arrayReference) '(' expressionList? ')'; 
arrayReference: (ID | functionCall) '[' arithmeticExpression ']'; 

,但得到相互递归误差。有没有简单的方法来解决这个问题?

回答

0

像这样:

value 
    : value '[' arithmeticExpression ']' # arrayReference 
    | value '(' expressionList? ')' # functionCall 
    | ID #id 
    ;