если я определил что-то подобное
COMMAND = "HI" | "HOW" | "ARE" | "YOU"
Как я могу сказать "если ты сопоставляешь что-то, что не является КОМАНДОЙ"? ..
Я пробовал с этим
[^COMMAND]
Но не сработало ..
Ну, вы можете просто сопоставить что-нибудь еще, тогда
COMMAND = "HI" | "HOW" | "ARE" | "YOU" . {throw new RuntimeException("Illegal character: <" + yytext() + ">");}
Насколько я могу судить, это невозможно при (текущем) JFlex.
Нам нужен эффективный закаленный отрицательный взгляд : ((?!bad).)*
((?!bad).)*
ТамЕсть два способа сделать отрицательный прогноз в JFlex:
x / !(y [^]*)
x / [^y]|y[^z]
В противном случае, вы можете получить некоторые идеи из этого ответа (в частности, альтернативные варианты): https://stackoverflow.com/a/37988661/8291949