【问题标题】:How to generate AST(abstract syntax tree) for Python source code using antlr如何使用 antlr 为 Python 源代码生成 AST(抽象语法树)
【发布时间】:2013-06-10 06:13:05
【问题描述】:

antlr 网站上给出了 python 的语法,但在使用它来生成 AST 时给出错误。我使用的程序与生成 AST 的 java 语法相同。

错误:

> C:\testpython>java -cp antlr-3.2.jar org.antlr.Tool Python.g

error(10): 内部错误: : java.lang.Error: 解析错误 Python.g:“类”不是预期的“语法” org.antlr.tool.GrammarSpelunker.match(GrammarSpelunker.java:74) org.antlr.tool.GrammarSpelunker.grammarHeader(GrammarSpelunker.java:112) org.antlr.tool.GrammarSpelunker.parse(GrammarSpelunker.java:84) org.antlr.Tool.sortGrammarFiles(Tool.java:552) org.antlr.Tool.process(Tool.java:408) org.antlr.Tool.main(Tool.java:91) 错误(100): Python.g:56:1: 语法 错误:antlr:Python.g:56:1:意外令牌:类错误(8):文件 Python.g 包含语法 PythonParser;名称必须相同 错误(100):Python.g:56:20:语法错误:antlr:Python.g:56:20: 期待 SEMI,发现“扩展”错误(100):语法错误:无效 字符文字:'\014' 错误(150):语法文件 Python.g 没有规则 错误(100):Python.g:0:0:语法错误:assign.types::0:0: 子树错误(100)的意外结束:Python.g:0:0:语法错误: 定义::0:0:子树的意外结束

有什么帮助吗?

【问题讨论】:

    标签: python antlr abstract-syntax-tree


    【解决方案1】:

    您正在尝试使用为 ANTLR v2 编写的语法生成具有 ANTLR v3 的解析器。要么找到 v3 的语法,要么保留语法并使用 ANTLR v2:http://www.antlr2.org/download.html

    以这样开头的语法是 v2 的目标:

    class FooParser extends Parser;
    

    这适用于 v3:

    grammar FooParser;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多