我正在尝试在以下示例上运行该示例: http://jflex.de/manual.html#Example 我复制了示例,仅更改了文件/类名。
运行jflex似乎可以正常工作。
$ jflex -v -d output/ grammer/scanner.flex
Reading "grammer/scanner.flex"
Constructing NFA : 148 states in NFA
Converting NFA to DFA :
.........................................
45 states before minimization, 26 states in minimized DFA
下一步,我尝试编译输出。无论我做什么,都会遇到这些错误。
$ javac -cp .*:dependancies/java-cup-11b.jar output/scanner.java
output/scanner.java:788: error: cannot find symbol
{ return symbol(sym.IDENTIFIER);
^
symbol: variable IDENTIFIER
location: interface sym
output/scanner.java:793: error: cannot find symbol
{ return symbol(sym.INTEGER_LITERAL);
^
symbol: variable INTEGER_LITERAL
location: interface sym
output/scanner.java:803: error: cannot find symbol
{ return symbol(sym.EQ);
^
symbol: variable EQ
location: interface sym
output/scanner.java:808: error: cannot find symbol
{ return symbol(sym.PLUS);
^
symbol: variable PLUS
location: interface sym
output/scanner.java:819: error: cannot find symbol
return symbol(sym.STRING_LITERAL,
^
symbol: variable STRING_LITERAL
location: interface sym
output/scanner.java:830: error: cannot find symbol
{ return symbol(sym.EQEQ);
^
symbol: variable EQEQ
location: interface sym
6 errors
我忘记了什么?
http://czt.sourceforge.net/dev/java-cup-runtime/apidocs/java_cup/runtime/Symbol.html
答案 0 :(得分:0)
使用 jflex ,您将生成 lexer 。
您还需要使用 cup 生成 parser 并将其添加到您的类路径中。
建议您使用
,而不要尝试手动编译内容jflex-maven-plugin
和cup-maven-plugin
的Maven。
参见examples/simple/pom.xml
jflex()
和cup()
规则。
参见examples/simple/BUILD
PR 452是将这个特定示例(当前在回归测试套件中)移至示例目录的建议。