jflex / 错误: 找不到符号 { 返回符号(sym.EQEQ);.



我正在尝试在以下位置运行示例: 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

使用jflex,您正在生成词法分析器

您还需要使用 cup(使用cup(生成解析器并将其添加到类路径中。

与其尝试手动编译,我建议您使用

  • 要么是Maven与jflex-maven-plugincup-maven-plugin. 见examples/simple/pom.xml
  • 或巴泽尔和jflex()cup()规则。 请参阅examples/simple/BUILD

PR 452 是将此特定示例(当前在回归测试套件中(移动到示例目录中的建议。

相关内容

  • 没有找到相关文章

最新更新