2011-02-26 66 views
6

我想從命令行運行ANTLR C語法文件(DummyC.g)來解析C源文件和頭文件(a.h)。當我用antlr.jar文件運行它時,它會生成解析器和詞法分析器文件。但是當我編譯測試文件Main.java。它會給出錯誤的ANTLR包,如下所示。使用ANTLR v3編譯Java源代碼問題

C:\ ANTLR-2.7.6 \測試>的javac Main.java

Main.java:1:包org.antlr.tool不存在 進口org.antlr.tool。 ;
^ Main.java:2:package org.antlr.runtime不存在 import org.antlr.runtime。
;
^ Main.java:3:package org.antlr.runtime.tree不存在 import org.antlr.runtime.tree。 ;
^ Main.java:4:package org.antlr.stringtemplate不存在 import org.antlr.stringtemplate。
;
^ Main.java:8:找不到符號 符號:class CommonTree location:class Main CommonTree tree = DummyCParser.start(「a.h」);

Main.java

import org.antlr.tool.*; 
import org.antlr.runtime.*; 
import org.antlr.runtime.tree.*; 
import org.antlr.stringtemplate.*; 

public class Main { 
    public static void main(String[] args) throws Exception { 
     CommonTree tree = DummyCParser.start("a.h");  
     DOTTreeGenerator gen = new DOTTreeGenerator(); 
     StringTemplate st = gen.toDOT(tree);  
     System.out.println(st); 
     } 
} 

可能是什麼問題呢?

+0

爲什麼不下載免費的IDE,比如Eclipse或intelliJ?它會幫助您直觀地看到哪裏出現問題。在這種情況下,編譯時可能需要引用類路徑上相關jar的位置。 – 2011-02-26 14:36:35

+0

'antlr-2.7.6' ??? – 2011-02-27 10:08:35

+0

此外,我以前建議你通過我的其他ANTLR答案來看看如何編譯類,但我沒有建議像現在你想要做的那樣編譯它。 – 2011-02-27 11:02:03

回答

6

您正在使用antlr運行時,因此您必須將antlr jar文件指定爲類路徑的一部分,以便編譯器可以找到您使用的antlr類,

javac -classpath c:\java\antlr-3.3\lib\antlr-3.3-complete.jar Main.java 
+0

我在具有源文件和測試文件的相同文件夾中有jar文件。它不應該工作嗎?我認爲只需要jar文件。或者是否需要包含類路徑? – user628127 2011-02-26 15:18:13

+0

你仍然需要指定antlr jar的路徑。更好的方法 - 瞭解maven並使用ide。甚至只是從命令行來的maven。 http://www.sonatype.com/books/maven-book/另外:www.eclipse.org – 2011-02-26 15:26:46

+0

我給了類路徑但仍然是相同的錯誤C:\ antlr-2.7.6 \ test> javac -classpath c:\ ANTLR -3.2 \ antlr-3.2.jar Main.java Main.java:1:package org.antlr.tool不存在 import org.antlr.tool。*; ^ Main.java:2:package org.antlr。運行時不存在 import org.antlr.runtime。*; ^ – user628127 2011-02-26 15:32:53