2015-04-30 153 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 
    ;