2016-02-04 6 views
1

Я начинаю использовать JFlex, и сначала хочу попытаться написать лексер, а затем перейти к парсеру. Тем не менее, кажется, что нет никакого способа проверить ваш лексер JFlex без написания парсера в CUP.Можно ли проверить лексер, сделанный в JFlex, без написания парсера?

Все, что я хочу сделать, это написать лексер, дать ему входной файл, а затем вывести лексемы, чтобы проверить, правильно ли он прочитал все. Позже я хотел бы выпустить токены, но лексемы были бы хорошим началом.

+0

Вы посмотрели директиву '% debug'? – rici

ответ

0

Да Можно написать автономный сканер. Вы можете прочитать информацию на странице this. Если вы укажете директиву %standalone, она добавит метод main к сгенерированному классу. Вы можете указать входные файлы в качестве аргументов командной строки для запуска этой программы. jflex tar поставляется с каталогом примеров, вы можете найти один отдельный пример внутри каталога examples/standalone-maven/src/main/jflex. Для быстрой справки я размещаю здесь один пример кода

/** 
    This is a small example of a standalone text substitution scanner 
    It reads a name after the keyword name and substitutes all occurences 
    of "hello" with "hello <name>!". There is a sample input file 
    "sample.inp" provided in this directory 
*/ 
package de.jflex.example.standalone; 

%% 

%public 
%class Subst 
%standalone 

%unicode 

%{ 
    String name; 
%} 

%% 

"name " [a-zA-Z]+ { name = yytext().substring(5); } 
[Hh] "ello"  { System.out.print(yytext()+" "+name+"!"); }