Допустим, у меня есть правила Lexer, подобные этим:
EMPTY_LITERAL: '\'' '\'';
LITERAL: '\'' (ESCAPED_SEQ|.)*? '\'' ;
fragment ESCAPED_SEQ: '\\\'' | '\\\\'
и правило синтаксического анализатора, подобное этому:
literal: EMPTY_LITERAL #EmptyLiteral | LITERAL #LiteralWithContent;
Я хочу получить содержимое LITERAL без кавычек в парсере. Конечно, я могу удалить кавычки, но мне интересно получить эту строку без кавычек.
Если я переместу внутреннее правило в LITERAL, правило не будет соответствовать должным образом (будет соответствовать только 1 символу). Если я перевожу LITERAL как правило синтаксического анализа, я могу сопоставить ESCAPED_SEQ, но это не то, что я хочу. Есть ли способ назвать внутреннее правило в лексере?