3
我不明白ANTLR4如何能夠使用直接let-recursion實際上幫助我們。好吧,你可以寫一個能識別語言的語法,沒關係。但你很少停留在這裏。通常你想用分析樹做一些事情。爲了得到一個直接的左遞歸而必須摺疊一些規則在這裏沒有幫助。ANTLR4中的相互左遞歸規則
一個例子。假設我想定義+和 - 運算符並希望它們具有相同的優先級。黃金我會寫這樣的事:
expression
: binaryExpression
| unaryExpression
;
binaryExpression
: plusExpression
| minusExpression
;
plusExpression
: expression '+' unaryExpression
minusExpression
: expression '-' unaryExpression
當然在ANTLR4我可以做
expression
: expression '+' unaryExpression
| expression '-' unaryExpression
| unaryExpression
;
但當生成的訪問者,我將只對expression
和unaryExpression
方法。當我訪問ExpressionContext
時,我該怎麼知道該怎麼辦?它是一個附加或子系統嗎?