ANTLR4 左递归错误



我在文件power.g4中的ANTLR4语法是这样的:

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         : [ trn]+ -> skip ;

当我运行命令时

ANTLR4 Power.G4

发生此错误:

错误(119): power.g4::: 以下规则集是相互左递归的 [expr, factor, term]

我能做什么?

为避免左递归错误,请将所有形式的expr放在一个规则中,按所需的优先级排序:

expr       : '(' expr ')'
           | expr '+'  expr 
           | expr '-'  expr 
           | expr '*'  expr 
           | expr '/'  expr 
           | expr '**' expr 
           | id 
           ;

相关内容

  • 没有找到相关文章

最新更新