[英]JFlex with CUP compile errors
我正在嘗試運行 CUP 提供的示例: Parsing direct 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 個錯誤,格式為“..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.