Следующего правила грамматики направлено на признание таких выражений «AB» в грамматике, который генерирует AST для оценки линейного уравнения:ANTLR: как правило перезаписи, чтобы установить lexema в виде текста в АСТЕ узел
tokens {
PLUS = '+' ;
MINUS = '-' ;
DIV = '/' ;
EQUAL = '=' ;
MULT = '*' ;
}
minusExpr: (a=multExpr -> $a) (MINUS b=multExpr -> ^(PLUS $a ^(MINUS $b)))*;
Грамматика работает правильно. Единственная проблема, с которой я столкнулся, заключается в том, что в выходе AST текст токена установлен на «PLUS» вместо «+».
Например, для уравнения: х-1 = 11
он генерирует следующее дерево (грамматика имеет другие правила, которые я не копировать здесь):
(= (плюс х (- 1)) 11)
Вместо дерева:
(= (+ х (- 1)) 11)
Я хотел бы знать, как переписать правила так, чтобы узел AST метка установлена t o "+" вместо "PLUS". Благодаря!