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
时,我该怎么知道该怎么办?它是一个附加或子系统吗?