Ho un grammatica molto semplice test come segue:AnTLR4 strano comportamento in precedenza
grammar Test;
statement: expression EOF;
expression
: Identifier
| expression binary_op expression
| expression assignment_operator expression
| expression '.' Identifier
;
binary_op: '+';
assignment_operator : '=' ;
Identifier : [a-zA-Z]+ ;
WS : [ \n\r\t]+ -> channel(HIDDEN) ;
Con questa versione della grammatica ho ottenuto il comportamento previsto se scrivo il seguente codice:
b.x + b.y
ottengo un albero come (+ (. b x) (. b y))
Tuttavia, se sostituisco expression binary_op expression
da expression '+' expression
ho un albero molto diverso: (. (+ (. b x) b) y)
C'è qualche spiegazione per questo?
Grazie
Non fa differenza spostare i valori letterali dalle regole del parser alle regole del lexer. Ho provato :) – pinker