Существует правило о полете no (например, CZ3102), в котором есть 2 символа, а затем 3-4 цифры. И его регулярное выражение должно быть: [A-Z] {2} [0-9] {3,4}.Как описать строку, содержащую символы с подсчетом диапазона в соответствии с правилами lexer ANTLR4?
Затем, как написать правило lexer под ANTLR4?
Одно правило лексира: [A-Z] [A-Z] [0-9] [0-9] [0-9] [0-9]?
Но это не так элегантно, и если диапазон большой, например 1-255, это не так просто правило lexer.
Благодаря
За крышкой ANTLR4 использует Java регулярное выражение. Возможно, что-то вроде [этого] (http://www.regular-expressions.info/repeat.html) будет работать. –
@GiovanniBotta Ваше утверждение не могло быть дальше от истины. ANTLR 4 использует пользовательскую реализацию моделирования NFA с кэшированием DFA по требованию. Нет ссылок на реализацию регулярного выражения Java в любом месте ANTLR 4, а тем более в самой реализации lexer. –
Ничего себе, я не мог в это поверить, и я проверил репозиторий github. В основном нет ссылки на java.util.regex. Хороший улов! К сожалению, я не смог найти ссылку для регулярного выражения ANTLR4. Раньше у меня была книга, но я больше не делаю этого, я не могу подтвердить, что она там. –