sumScalarOperator给了我这个错误,似乎antlr看起来像一个可能的无限递归循环。我怎么能避免它?
sumScalarOperator: function SUM_TOKEN function;
function :
| INTEGER_TOKEN
| NUMERIC_TOKEN
| sumScalarOperator
| ID;
ID : [A-Za-z_-] [a-zA-Z0-9_-]*;
INTEGER_TOKEN: [0-9]+;
NUMERIC_TOKEN: [0-9]+'.'[0-9]+ ;
答案 0 :(得分:0)
ANTLR4无法处理相互左递归规则,但它可以自动重写单个左递归规则以消除左递归,因此您可以使用以下内容来提供它:
function : function SUM_TOKEN function # sumScalarOperator
| INTEGER_TOKEN # value
| NUMERIC_TOKEN # value
| ID # value
;
将value
标签替换为您需要的任何内容。