2010-08-29 46 views
1

创建解析树请帮我这个问题: 我做网页上的例子:http://www.antlr.org/wiki/pages/viewpage.action?pageId=1760请帮我从Java和ANTLR

为了使用这个例子中,我已经建立了语法P于ANTLRWork 1.4和生成代码以获得类PLexerPParser。 但是,当我在Java的运行这段代码在Jcreator 4.5

import org.antlr.runtime.*; 
import org.antlr.runtime.tree.*; 
import org.antlr.runtime.debug.*; 
import org.antlr.runtime.ANTLRStringStream; 
import org.antlr.runtime.CharStream; 
import ParserAndLexer.*; 

public class TestP { 
    public static void main (String[] args) throws Exception{ 
     ANTLRInputStream input=new ANTLRInputStream(System.in); 
     PLexer lexer=new PLexer(input); 
     CommonTokenStream tokens=new CommonTokenStream(lexer); 
     ParseTreeBuilder builder=new ParseTreeBuilder("prog"); 
     PParser parser=new PParser(tokens,builder); 
     parser.prog(); 
     System.out.println(builder.getTree().toStringTree());  
    } 
} 

错误出现:

D:\CAO HOC\TAI LIEU THAM KHAO\ANTLR-EBNF\CREATE PARSTREE\TestP.java:14: 
cannot find symbol 
symbol : constructor PParser(org.antlr.runtime.CommonTokenStream,org.antlr.runtime.debug.ParseTreeBuilder) 
location: class ParserAndLexer.PParser 
    PParser parser=new PParser(tokens,builder); 

当我在PParser(tokens,builder)下降一个参数builder那么这个错误不找到。但我不知道该怎么办好有以下结果:

java TestP 
int i; 
i=4; 
(<grammar prog> (prog (decl (type int) i ;) (stat i = (expr 4)))) 

回答

3

阮,

为了使这项工作,我发现,当你生成解析器和词法分析器,你需要包括“ - 调试”的说法,像这样:

Java的罐子ANTLR-3.2.jar yourGrammar.g -debug

这样,额外的构造函数将被构建。