// Create a scanner that reads from the input stream passed to us
CSLexer lexer = new CSLexer(new ANTLRFileStream(f));
tokens.TokenSource = lexer;
// Create a parser that reads from the scanner
CSParser parser = new CSParser(tokens);
// start parsing at the compilationUnit rule
CSParser.compilation_unit_return x = parser.compilation_unit();
object ast = x.Tree;
我能做些什么与作为compilation_unit_return类型,以提取其根,它的类,它的方法等的X? 我一定要提取其适配器呢? 我怎么做? 注意,compilation_unit_return在我CSParser定义为这样的(这是由ANTLR自动生成):
public class compilation_unit_return : ParserRuleReturnScope
{
private object tree;
override public object Tree
{
get { return tree; }
set { tree = (object) value; }
}
};
不过我正在树是对象的类型。 我运行使用调试器,似乎看到它的类型是BaseTree的。 但是BaseTree是一个接口! 我不知道它如何与BaseTree,不知道如何从这种树中提取出来的细节。
我需要写一个具有访问其类,方法,变量等。ParserRuleReturn类从RuleReturnScope延伸,并且具有启动访客和停止对象,我不知道它是什么。
此外,存在通过ANTLR提供了这个TreeVisitor类看起来混乱。 它需要一个适配器将作为参数传递给它的构造(如果不是会使用默认的CommonTreeAdaptor),TT就是为什么我问了一下如何获取适配器早期的教上。 和其他问题了。 对于API,你可以参考http://www.antlr.org/api/CSharp/annotated.html