本文介绍了ANTLR4 左递归错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在文件 power.g4 中的 ANTLR4 语法是这样的:
My ANTLR4 grammar in file power.g4 is this:
assign : id '=' expr ;
id : 'A' | 'B' | 'C' ;
expr : expr '+' term
| expr '-' term
| term ;
term : term '*' factor
| term '/' factor
| factor ;
factor : expr '**' factor
| '(' expr ')'
| id ;
WS : [ \t\r\n]+ -> skip ;
当我运行命令时
antlr4 power.g4
发生此错误:
error(119): power.g4::: 以下规则集相互左递归[expr, factor, term]
我能做什么?
推荐答案
为了避免左递归错误,将 expr
的所有形式放在一个规则中,按所需的优先级排序:
To avoid the left recursion error, put all forms of an expr
in one rule, ordered by desired precedence:
expr : '(' expr ')'
| expr '+' expr
| expr '-' expr
| expr '*' expr
| expr '/' expr
| expr '**' expr
| id
;
这篇关于ANTLR4 左递归错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!