【发布时间】:2016-02-17 00:52:07
【问题描述】:
以下语法规则旨在识别语法中的“a-b”等表达式,该语法生成 AST 以评估线性方程:
tokens {
PLUS = '+' ;
MINUS = '-' ;
DIV = '/' ;
EQUAL = '=' ;
MULT = '*' ;
}
minusExpr: (a=multExpr -> $a) (MINUS b=multExpr -> ^(PLUS $a ^(MINUS $b)))*;
语法工作正常。我唯一的问题是在输出 AST 中,标记的文本设置为“PLUS”而不是“+”。
例如,对于等式:x-1=11
它会生成以下树(语法还有其他规则我这里没有复制):
(= (PLUS x (- 1)) 11)
而不是树:
(= (+ x (- 1)) 11)
我想知道如何重写规则,以便将 AST 节点标签设置为“+”而不是“PLUS”。谢谢!
【问题讨论】:
标签: abstract-syntax-tree antlr3 rule