jflex 1.6.1 (ОС SimplyLinux 8.2). Возникла проблема с созданием парсера: он определяет только самый первый токен из начала файла, а остальные игнорит (не видит). "Error: could not match input" (см. ниже) - это стандартное сообщение, когда больше ничего не нашёл.
Пример.
Конфиг - файл test.flex:
%%
/*для вывода в консоль используем опцию %debug*/
%debug
%class Test
%public
%final
%unicode
%char
%line
%column
%integer
%%
/*эти два токена будем парсить*/
"bool" {return 1;}
"value" {return 2;}
Входной файл input.txt:
bool value = boolean_t<true>::value;
bool value = boolean_t<false>::value;
bool value = boolean_t<true>::value;
Кидаем оба файла в дир., например, test, и там из консоли генерим парсер test.jar:
jflex test.flex
javac Test.java
jar cf test.jar Test.class
Запускаем:
java -cp test.jar Test input.txt
Вывод:
line: 1 col: 1 match: --bool--
action [17] { return 1; }
1
Exception in thread "main" java.lang.Error: Error: could not match input
at Test.zzScanError(Test.java:445)
at Test.yylex(Test.java:627)
at Test.main(Test.java:667)
(первый bool нашёлся, остальные bool и value - нет)
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости