у меня есть эта грамматикаМой Antlr4 Грамматика не понимает математические выражения
grammar Arith;
exp : LPAREN exp RPAREN
| fun
| num
| exp (OP exp)+
;
num : LPAREN num RPAREN
| LESS num
| INT
| INT 'b'
| '0x' INT
;
fun : LPAREN fun RPAREN
| LESS fun
| FUN_TXT LPAREN exp RPAREN
| 'pow' LPAREN exp ',' exp RPAREN
;
INT : ('0'..'9')+ ;
LPAREN : '(' ;
RPAREN : ')' ;
FUN_TXT : 'log' | 'acos' | 'asin' | 'atan' | 'cos' | 'abs' | 'sin' | 'sqrt' | 'tan' ;
OP : ADD | LESS | MUL | DIV | MOD ;
ADD : '+' ;
LESS : '-' ;
MUL : '*' ;
DIV: '/' ;
MOD: '%' ;
WS : [ \t\r\n] -> skip ;
Я пытаюсь вставить грех (-1) но лексер сказал мне «нет реальной альтернативы на входе„-“».
Я думаю, что программа перевести его в "ехре ->ехра (OP ехре) +" вместо "ехра ->забавных (NUM) ->весело (МЕНЬШЕ Num)"
Может кто-нибудь помочь мне понять, что я забыл, и как правильно изменить мои правила? Благодаря
Я раньше не видел этот пример, это прекрасно. благодаря – Tirrel