我在 ANTLR 3 中有一个相当基本的语法,我希望执行以下操作: - 如果“术语”前面出现“+”,只需将其删除,因为它是多余的(完成)。- 如果“术语”前面出现“-”,请保留它,但是在第一个子节点中添加“0”,这样我就可以有效地从“-2”变为“0-2”。
expression:
unaryterm ((ADD^ | MINUS^) term)*
;
unaryterm:
(ADD! | MINUS^)? term
;
我尝试过重写树,但在匹配可能的“-”时似乎卡住了。
注:ADD 代表“+”,MINUS 代表“-”。