【问题标题】:Which tool is proper for extracting information from ANTLR outputs?哪种工具适合从 ANTLR 输出中提取信息?
【发布时间】:2014-07-02 10:15:10
【问题描述】:

我是 ANTLR 的新手。我在 antlr 中解析了一个语法,得到了 lexer.javaparser.java 文件。我用简单的示例对其进行了测试,它在 inerpreter 选项卡中显示了正确的树,在调试器选项卡中显示了 pars 树现在我想从中提取特定信息。我想知道我是否需要 ast,是否有任何与 ANTLR 兼容的工具来提取数据? 谢谢。

【问题讨论】:

    标签: java antlr abstract-syntax-tree information-extraction


    【解决方案1】:

    根据 ANTLR4 Wiki,ANTLR 生成的解析器会生成解析树数据结构,并且它提供了一个可用于遍历它的 tree walker 类。您可以使用此机制来提取信息。请注意,您需要在 Java 中编写一个“侦听器”类来提取信息并将其输出(或其他)。

    更多详情;见https://theantlrguy.atlassian.net/wiki/display/ANTLR4/Parse+Tree+Listeners

    更新

    由于您使用的是 ANTLR3,因此这些链接与您更相关:

    我强烈建议您花时间阅读可用的文档。

    【讨论】:

    • 虽然问题未能指定版本,但我猜这涉及 ANTLR 3,因为 ANTLR 4 的 IDE 不包含名为“解释器”和“调试器”的选项卡。 ANTLR 3 不提供 ANTLR 4 的解析树、侦听器和访问者功能。当然,我对新用户的建议是在继续之前升级到 ANTLR 4。
    • 谢谢。如果我必须使用 ANTLR 3 (ANTLRWorks 1.4.3),我还有一个问题,你能告诉我你对提取数据的建议吗?我必须使用 AST 还是操作代码?
    • Sara - 如果您使用的是不支持自动分析树生成等的旧版本 ANTLR,那么您需要使用操作代码。
    • 再问一个问题,我在 debuggaer 选项卡中有一个很好的解析树,为什么我不能从中提取数据?为什么我必须定义 AST?我需要解析树中的所有信息,如果我编写 AST,它将与我的解析树完全相似。解析树中几乎没有额外的数据或语法。 .
    • 斯蒂芬-那些链接真的很有用,感谢您分享您的知识。
    猜你喜欢
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 2019-06-10
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 2010-09-16
    • 2011-10-15
    相关资源
    最近更新 更多