ANTLR4左递归错误 [英] ANTLR4 left-recursive error
本文介绍了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
antlr4 power.g4
发生此错误:
error(119):power.g4 :::以下几套规则是相互左递归的[expr,factor,term]
error(119): power.g4::: The following sets of rules are mutually left-recursive [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左递归错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文