Как сопоставить что-то не определено - PullRequest
0 голосов
/ 31 мая 2018

если я определил что-то подобное

COMMAND         = "HI" | "HOW" | "ARE" | "YOU" 

Как я могу сказать "если ты сопоставляешь что-то, что не является КОМАНДОЙ"? ..

Я пробовал с этим

[^COMMAND]

Но не сработало ..

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Ну, вы можете просто сопоставить что-нибудь еще, тогда

COMMAND         = "HI" | "HOW" | "ARE" | "YOU" 
. {throw new RuntimeException("Illegal character: <" + yytext() + ">");}
0 голосов
/ 01 июня 2018

Насколько я могу судить, это невозможно при (текущем) JFlex.

Нам нужен эффективный закаленный отрицательный взгляд : ((?!bad).)*

ТамЕсть два способа сделать отрицательный прогноз в JFlex:

  • отрицание в прогнозе: x / !(y [^]*) (совпадать с x, если за ним не следует y в прогнозировании).
  • прогноз с отрицаниемэлементы: x / [^y]|y[^z] (совпадать, если за x следует что-то, что является! a или a! b.

В противном случае, вы можете получить некоторые идеи из этого ответа (в частности, альтернативные варианты): https://stackoverflow.com/a/37988661/8291949

...