Я пытаюсь использовать более одной команды лексера в правиле лексера. Мой код выглядит примерно так:
LEXER_RULE: something->mode(NUMBER);
mode NUMBER;
NU: [0-9]+ ->mode(ANOTHER_MODE); //Going into another mode in case the NU rule is used
//now leaving the NUMBER mode, in case there is no number written
NO_NUM: ~[0-9]->mode(DEFAULT_MODE);
Правило лексера NU является необязательным, поэтому я должен рассмотреть случай, когда он не используется. Однако я бы также хотел пропустить все, что находится внутри NO_NUM. Что-то вроде
NO_NUM:~[0-9]->skip ->mode(DEFAULT_MODE);
Я знаю, что мне нельзя использовать более одной команды лексера в одном правиле лексера. Кто-нибудь знает другой подход? Мне нужно как-то выйти из режима. Кстати, мне не разрешено использовать предикаты semanti c. Спасибо!