首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有CUP编译错误的JFlex

带有CUP编译错误的JFlex
EN

Stack Overflow用户
提问于 2016-04-20 00:15:23
回答 1查看 7.2K关注 0票数 2

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

我将'Minijava语法‘存储在一个名为minijava.cup的文件中,并将扫描仪存储到一个名为xml.flex的文件中。我运行JFlex来从xml.flex文件中获取Lexer.java。之后,在运行CUP示例中指定的命令之后,我获得了Parser.javasym.java

代码语言:javascript
复制
java -jar java-cup-11b.jar -locations -interface -parser Parser -xmlactions minijava.cup

我的目录如下所示:

代码语言:javascript
复制
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文件:

代码语言:javascript
复制
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文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-20 07:17:54

您丢失了类路径中的当前目录(源所在)。默认情况下它不包括在内,但是如果您将.放入%CLASSPATH% (或$CLASSPATH for unices)环境变量中。

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

代码语言:javascript
复制
javac -cp .;java-cup-11b-runtime.jar Lexer.java

如果您使用的是GNU/Linux、OS或任何类似UNIX的系统,则应该是

代码语言:javascript
复制
javac -cp .:java-cup-11b-runtime.jar Lexer.java

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36731648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档