【问题标题】:Python ast parsing exceptionPython ast解析异常
【发布时间】:2015-03-13 14:47:12
【问题描述】:

我使用 python3.4 的 ast 模块来获取文件中的导入和函数调用。

如果我在具有 python3.4 语法的文件上运行代码,它可以正常工作,但如果我尝试解析较旧的 python2.7 版本的文件(对于打印语句,除了具有“,”的语句除外ETC)。

有没有办法强制 ast 在处理旧文件时使用 python2.7 编译器并在处理 python3.4 文件时使用 python3.4 编译器? 有没有其他方法可以解决这个问题??

【问题讨论】:

  • Python3 解释器不包含 Python2 解析器(反之亦然)。如果我很难做到这一点,我会运行 Python 2 解释器的下属 multiprocessing 实例。我很确定这两个版本之间的 AST 不一致,因此您必须编写 v3.x AST 提取代码的 v2.7 版本。
  • 有什么例子可以说明如何做到这一点?我已经测试了我的 AST 代码,它分别适用于两个版本。目前我正在尝试从 v2.7 运行代码,并希望以某种方式使用 v3.4 ast 解析器创建树。

标签: python-2.7 abstract-syntax-tree python-3.4


【解决方案1】:

事实证明,据我所知,在 python 中使用不同版本的 AST 解析器是不可能的。 (仍然可以通过每次使用不同版本的 AST 进行多次迭代来分别解析它们)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 2023-01-25
    • 2013-04-13
    • 2020-08-31
    • 2016-05-24
    • 2012-07-02
    • 1970-01-01
    相关资源
    最近更新 更多