我无法在CMD中生成杯解析器和JFLEX扫描仪



我是编译器的新手。我读到我可以通过此代码在CMD中生成xxx.flex文件:

java jflex.main xxx.flex

但是我有一个错误:

错误:找不到或加载主类JFLEX.MAIN

并且为了生成yyy.cup,我输入了:

java java_cup.main yyy.cup

,但我也有这个错误:

错误:找不到或加载主类Java_cup.main

我感到困惑...我该怎么办?

当您调用

java JFlex.Main xxx.flex

您要求Java加载JFlex.Main类并将xxx.flex作为参数传递。因为您不告诉Java JFlex.Main类在哪里,Java在其classPath中搜索它,如果您不将JFLEX JAR文件添加到类路径,则会导致错误消息

Error: Could not find or load main class JFlex.Main

btw,班级名称和名称空间对病例敏感:在JFLEX JAR文件中,Main类在jflex目录中,而不是JFlex,因此您需要调用jflex.Main类...除非您使用的是JFLEX版本在1.5之前JFlex是合法的。

让Java找到类:

  • 要么更改系统类路径(带有环境变量$CLASSPATH-或Windows中的%CLASSPATH%
  • 或仅提供JAR文件的位置,即java命令使用-cp参数

例如:

java -cp path/to/jflex-1.6.0.jar jflex.Main xxx.jflex 

如果罐子在当前目录中,则可以使用

java -cp jflex-1.6.0.jar jflex.Main xxx.jflex 

或更简单,因为它是可执行的jar,您可以省略主类

java -jar jflex-1.6.0.jar xxx.jflex 

同样,似乎Java在处理您的yyy.cup文件时缺少Cup Jar文件,您可以像JFLEX一样使用

来修复它
java -cp java-cup-11a.jar java_cup.Main yyy.cup

java -jar java-cup-11a.jar java_cup.Main yyy.cup

相关内容

  • 没有找到相关文章

最新更新