Antlr4: 修改语法规则更接近普通BNF格式
经 @沈默 在上文Antlr4添加中文变量赋求值,括号,各种问题评论中指出, 语法规则描述依赖于Antlr4生成的语法分析器的默认分析方法, 比如运算符的左联系, 以及优先级处理等等. 于是将语法修改为下面(源码版本号: program-in-chinese/quan5): 表达式: 求积表达式 (('+'|'-') 求积表达式)*; 求积表达式: 最小表达式 (('*'|'/'|'×'|'÷') 最小表达式)*; 最小表达式 : 字面量 | '(' 表达式 ')' ; 字面量 : T数 | T变量名 ; 这样做的结果是, Antlr4会分析生成一个多叉树. 比如 1+2-3, 生成树如下: 于是在生成抽象语法树时手动转换为二叉树. 代码如下: private 节点 构建二叉树(List<ParseTree> 子节点) { if (子节点.isEmpty()) { return null; } else if (子节点.size() == 1) { return visit(子节点.get(0)); } else { ParseTree 最后运算符节点 = 子节点.get(...