我正在使用ANTLRWorks创建ANTLR语法。我有一个有效的语法,解析器和词法分析器的源文件也是生成的。我还尝试了调试生成的代码,结果与调试器输出中的预期一致。
但是,当我尝试调用调试器生成的__Test__类时,控制台中没有任何内容。我已经正确地设置了类路径,因为我可以使用相同的类路径成功编译__Test__.java。
会有什么问题呢?有没有用antlr和antlrworks编写和编译示例解析器的明确教程?
发布于 2008-12-02 22:03:21
你期望控制台上会出现什么?
看看this project吧。ANTLRWorks生成的解析器是here。正如您从POM中的依赖关系中看到的,您需要确保antlr位于类路径中。然后使用解析器,如this class所示。
final DriftLexer lexer = new DriftLexer(new ANTLRInputStream(inputStream));
final CommonTokenStream tokens = new CommonTokenStream(lexer);
final DriftParser parser = new DriftParser(tokens);
parser.file();这应该足以让你的东西也能正常工作。
发布于 2010-05-01 05:58:24
ANTLRWorks生成用于创建回ANTLRWorks的套接字连接的测试类,因此无法从控制台使用它们。您可以编辑生成的测试类,使其不使用调试端口(套接字连接)选项。
要编辑的行为:
FormalSpecParser g = new FormalSpecParser(tokens, 49100, null);您可以将其更改为:
FormalSpecParser g = new FormalSpecParser(tokens, null);它使用调试侦听器对象而不是端口,"null“表示您没有为它提供调试侦听器,因此调试输出将被忽略。您可以编写自己的调试侦听器,以便将消息输出到控制台。
有关更多信息,请参阅ANTLR文档:http://www.antlr.org/api/Java/namespaces.html
https://stackoverflow.com/questions/308845
复制相似问题