Mam bardzo prostą gramatykę testu w następujący sposób:AnTLR4 dziwne zachowanie w pierwszeństwa
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) ;
Z tej wersji gramatyki dostałem oczekiwane zachowanie jeśli piszę następujący kod:
b.x + b.y
dostaję drzewa jako (+ (. b x) (. b y))
Jednakże, jeśli mogę wymienić expression binary_op expression
przez expression '+' expression
uzyskać bardzo różne drzewa: (. (+ (. b x) b) y)
Czy są jakieś wyjaśnienia?
Dzięki
Nie powoduje różnic w przesuwaniu literałów z reguł parsera do reguł leksykalnych. Testowałem. :) – pinker