Предположим, что ID1 может соответствовать некоторым дополнительным символам, которые недопустимы в ID2. Предположим, @. В этом случае identifier2 будет соответствовать этому также. Я не хочу, чтобы identifier2 соответствовал этому.
я есть правила лексера в Antlr3 как:
HYPHEN : '-';
TOKEN : HYPHEN CHARS;
CHARS : 'a' ..'z';
Правило парсера таково:
exp : CHARS | some complex expression;
parser_rule : exp HYPHEN exp;
Если я попытаюсь сопоставить 'abc-abc' с parser_rule, произойдет сбой. Потому что лексер создает TOKEN для HYPHEN exp. Как я могу сопоставить его правильно с parser_rule.