簡體   English   中英

帶有 CUP 編譯錯誤的 JFlex

[英]JFlex with CUP compile errors

我正在嘗試運行 CUP 提供的示例: Parsing direct to XML

我存儲在“Minijava語法”在一個文件名為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 個錯誤,格式為“..cannot find symbol...”。 第一個指定無法找到 sym 和 minijava.Constants 類。

Lexer.java:17: 錯誤:找不到符號

公共類詞法分析器實現 java_cup.runtime.Scanner、sym、minijava.Constants{

^ 符號:類符號

Lexer.java:17: 錯誤:包 minijava 不存在

公共類詞法分析器實現 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));

我不明白為什么 sym.java 文件對 Lexer 不可見,也不明白從哪里獲取 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參數中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM