带有CUP编译错误的JFlex



我正在尝试运行CUP提供的一个示例:直接解析到XML。

我将"Minijava Grammar"存储在一个名为Minijava.cup的文件中,并将扫描仪存储在名为xml.flex。我运行JFlex从xml.flex文件中获取Lexer.java。之后,在运行CUP上指定的命令后,我获得了Parser.javasym.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。找不到常量。

java:17:错误:找不到符号

公共类Lexer实现java_cup.runtime.Scanner,sym,minijava。常数{

^符号:类符号

java:17:错误:包minijava不存在

公共类Lexer实现java_cup.runtime.Scanner,sym,minijava。常数{

^Lexer.java:679:错误:找不到符号

{return symbolFactory.newSymbol("EOF",EOF,新位置(yyline+1,yycolumn+1,yychar),新位置

我不明白为什么sym.java文件对Lexer不可见,也不明白在哪里可以获得minijava。常量文件。

类路径中缺少当前目录(源所在的目录)。默认情况下,它不包括在内,但如果将.放入%CLASSPATH%(对于unices,则为$CLASSPATH)环境变量中。

尝试更改-cp设置以添加当前目录.

javac -cp .;java-cup-11b-runtime.jar Lexer.java

如果你在GNU/Linux、OSX或任何类似UNIX的系统上,它将是

javac -cp .:java-cup-11b-runtime.jar Lexer.java

同样,在使用java命令运行时,将当前目录添加到-cp参数中。

最新更新