我正在尝试运行一个由CUP提供的示例:直接解析到XML。
我将'Minijava语法‘存储在一个名为minijava.cup的文件中,并将扫描仪存储到一个名为xml.flex的文件中。我运行JFlex来从xml.flex文件中获取Lexer.java。之后,在运行CUP示例中指定的命令之后,我获得了Parser.java和sym.java:
java -jar java-cup-11b.jar -locations -interface -parser Parser -xmlactions minijava.cup我的目录如下所示:
input.xml
java-cup-11b.jar
java-cup-11b-runtime.jar
jflex-1.6.1.jar
Lexer.java
minyjava.cup
Parser.java
sym.java
xml.flex我试图使用以下命令编译Lexer.java文件:
javac -cp java-cup-11b-runtime.jar Lexer.java但我得到了47个错误的格式"..cannot查找符号.“。第一种方法指定找不到sym和minijava.Constants类。
Lexer.java:17:错误:找不到符号 公共类Lexer实现java_cup.runtime.Scanner、sym、minijava.Constants{ ^符号:类sym Lexer.java:17:错误:包minijava不存在 公共类Lexer实现java_cup.runtime.Scanner、sym、minijava.Constants { ^ Lexer.java:679:错误:找不到符号 {返回symbolFactory.newSymbol("EOF",EOF,新位置(yyline+ 1,yycolumn+1,yychar),新位置(yyline+1,yycolumn+1,yychar+1));
我不明白为什么sym.java文件在Lexer中不可见,也不明白在哪里可以获得minijava.Constants文件。
发布于 2016-04-20 07:17:54
您丢失了类路径中的当前目录(源所在)。默认情况下它不包括在内,但是如果您将.放入%CLASSPATH% (或$CLASSPATH for unices)环境变量中。
尝试更改-cp设置以添加当前目录.。
javac -cp .;java-cup-11b-runtime.jar Lexer.java如果您使用的是GNU/Linux、OS或任何类似UNIX的系统,则应该是
javac -cp .:java-cup-11b-runtime.jar Lexer.java同样,在使用-cp命令运行时,将当前目录添加到java参数。
https://stackoverflow.com/questions/36731648
复制相似问题