JFlex — как протестировать сканер

Я только начал изучать JFlex. Я изучаю один из официальных примеров Jflex, который представляет собой сканер для языка Java. В файле Readme написано:

The scanner (without parser attached) can be test with:
java TestLexer <inputfiles>

Но когда я попробовал это в cmd, вместо этого я получил сообщение об ошибке: «Не удалось найти или загрузить основной класс TestLexer». Кто-нибудь знает, почему? Заранее спасибо.


person phil    schedule 24.01.2014    source источник


Ответы (1)


Чтобы протестировать лексер для Java, JFlex имеет зависимость от генератора парсера CUP, сделал ты его установил?

Затем нужно выполнить несколько команд, прежде чем можно будет запустить лексер:

jflex unicode.flex
jflex java.flex
java java_cup.Main -interface < java12.cup
javac JavaParser.java TestLexer.java

Для третьей команды вам нужно иметь java-cup-11a.jar где-то в пути к классам.

Только тогда вы сможете протестировать парсер:

java JavaParser <inputfiles>

или сканер:

java TestLexer <inputfiles>
person Seki    schedule 25.01.2014
comment
Я попробовал еще раз, но при выполнении третьей строки я все еще получал «Не удалось найти или загрузить основной класс java_cup.Main. - person phil; 28.01.2014
comment
Попробуйте с java -cp path_to_your_java-cup.jar java_cup.Main -interface < java12.cup лучше? - person Seki; 28.01.2014
comment
Нет, я получил "Система не может найти указанный файл". Но я добавил каталог файла java cup в переменную PATH. - person phil; 28.01.2014
comment
как называется файл jar java-cup? для файла jar вам нужно добавить каталог в переменную CLASSPATH, а не PATH, тогда вы можете опустить -cp parameter - person Seki; 28.01.2014