我正在尝试运行 CUP 提供的示例:Parsing directly to 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 个错误。第一个指定找不到类 sym 和 minijava.Constants。
Lexer.java:17:错误:找不到符号
公共类 Lexer 实现 java_cup.runtime.Scanner、sym、minijava.Constants{
^ 符号:类符号
Lexer.java:17:错误:minijava 包不存在
公共类 Lexer 实现 java_cup.runtime.Scanner、sym、minijava.Constants {
^ Lexer.java:679:错误:找不到符号
{return symbolFactory.newSymbol("EOF", EOF, new Location(yyline+ 1,yycolumn+1,yychar), new Location(yyline+1,yycolumn+1,yychar+1));
我不明白为什么 Lexer 看不到 sym.java 文件或从哪里获取 minijava.Constants 文件。