使用ANTLR v3编译Java Source时出现问题

use*_*127 6 java parsing antlr

我试图从命令行运行ANTLR C语法文件(DummyC.g)来解析C源文件和头文件(啊).当我使用antlr.jar文件运行它时,它会生成解析器和词法分析器文件.但是当我编译测试文件Main.java时.它给出了缺少ANTLR包的错误,如下所示.

C:\ antlr-2.7.6\test> javac Main.java

Main.java:1:package org.antlr.tool不存在import org.antlr.tool.;
^ Main.java:2:包org.antlr.runtime不存在import org.antlr.runtime.
;
^ Main.java:3:包org.antlr.runtime.tree不存在import org.antlr.runtime.tree.;
^ Main.java:4:包org.antlr.stringtemplate不存在import org.antlr.stringtemplate.
;
^ Main.java:8:找不到符号符号:class CommonTree location:class Main CommonTree tree = DummyCParser.start("ah");

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);   
      }  
}  
Run Code Online (Sandbox Code Playgroud)

可能是什么问题呢?

nos*_*nos 6

您正在使用antlr运行时,因此您必须将antlr jar文件指定为类路径的一部分,以便编译器可以找到您使用的antlr类,例如

   javac -classpath c:\java\antlr-3.3\lib\antlr-3.3-complete.jar Main.java 
Run Code Online (Sandbox Code Playgroud)