带有 CUP 编译错误的 JFlex
JFlex with CUP compile errors
我正在尝试 运行 CUP 提供的示例:Parsing directly to XML。
我将 'Minijava Grammar' 存储在名为 minijava.cup 的文件中,将扫描仪存储在名为 xml.flex[ 的文件中=32=]。我 运行 JFlex 从 xml.flex 文件中获取 Lexer.java。之后,我在 运行ning 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: error: cannot find symbol
public class Lexer implements java_cup.runtime.Scanner, sym, minijava.Constants{
^ symbol: class sym
Lexer.java:17: error: package minijava does not exist
public class Lexer implements java_cup.runtime.Scanner, sym, minijava.Constants {
^ Lexer.java:679: error: cannot find symbol
{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 文件。
您缺少类路径中的当前目录(您的源代码所在的位置)。默认情况下不包含它,但是如果您将 .
放入 %CLASSPATH%
(或 $CLASSPATH
for unices)环境变量中。
尝试更改 -cp
设置以添加当前目录 .
。
javac -cp .;java-cup-11b-runtime.jar Lexer.java
如果您在 GNU/Linux、OS X 或任何类 UNIX 系统上,它将是
javac -cp .:java-cup-11b-runtime.jar Lexer.java
同理,在运行java
命令的-cp
参数中加入当前目录。
我正在尝试 运行 CUP 提供的示例:Parsing directly to XML。
我将 'Minijava Grammar' 存储在名为 minijava.cup 的文件中,将扫描仪存储在名为 xml.flex[ 的文件中=32=]。我 运行 JFlex 从 xml.flex 文件中获取 Lexer.java。之后,我在 运行ning 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: error: cannot find symbol
public class Lexer implements java_cup.runtime.Scanner, sym, minijava.Constants{
^ symbol: class sym
Lexer.java:17: error: package minijava does not exist
public class Lexer implements java_cup.runtime.Scanner, sym, minijava.Constants {
^ Lexer.java:679: error: cannot find symbol
{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 文件。
您缺少类路径中的当前目录(您的源代码所在的位置)。默认情况下不包含它,但是如果您将 .
放入 %CLASSPATH%
(或 $CLASSPATH
for unices)环境变量中。
尝试更改 -cp
设置以添加当前目录 .
。
javac -cp .;java-cup-11b-runtime.jar Lexer.java
如果您在 GNU/Linux、OS X 或任何类 UNIX 系统上,它将是
javac -cp .:java-cup-11b-runtime.jar Lexer.java
同理,在运行java
命令的-cp
参数中加入当前目录。