Я пишу грамматику ANTLR для SAS и сталкиваюсь с проблемой, когда лексер не может различить однострочный комментарий и операцию умножения.
К сожалению, синтаксис SAS для комментариев:
*message;
or
/*message*/
Я написал простую тестовую грамматику, чтобы проиллюстрировать проблему:
grammar TEST;
prog: expr* EOF;
expr
: VAR #base
| expr '*' expr #mult
;
VAR: ALPHA+;
fragment ALPHA : [a-zA-Z]+ ;
COMMENT: '*' ~[\r\n];
WS: [ \t\r\n] -> skip;
Я не уверен, как я могу квалифицировать лексера, чтобы различать эти две ситуации.Я новичок в ANTLR, поэтому, возможно, я упустил что-то очевидное.