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]+ ;
ANTLR4 无法处理相互左递归的规则,但它可以自动重写单个左递归规则以消除左递归,因此您可以为其提供如下内容:
function : function SUM_TOKEN function # sumScalarOperator
| INTEGER_TOKEN # value
| NUMERIC_TOKEN # value
| ID # value
;
将value
标签替换为您需要的任何内容。