跳转到主要内容

Python解析器

项目描述

GitHub Actions build status Coverage Status PyPI Downloads https://raw.githubusercontent.com/davidhalter/parso/master/docs/_static/logo_characters.png

Parso是一个支持错误恢复和往返解析的Python解析器,支持多种Python版本(在多个Python版本中)。Parso还能够列出Python文件中的多个语法错误。

Parso已通过jedi的实战测试。它从jedi中提取出来,以便其他项目也能使用。

Parso包含一个用于解析Python和分析语法树的简单API。

一个简单示例

>>> import parso
>>> module = parso.parse('hello + 1', version="3.9")
>>> expr = module.children[0]
>>> expr
PythonNode(arith_expr, [<Name: hello@1,0>, <Operator: +>, <Number: 1>])
>>> print(expr.get_code())
hello + 1
>>> name = expr.children[0]
>>> name
<Name: hello@1,0>
>>> name.end_pos
(1, 5)
>>> expr.end_pos
(1, 9)

列出多个问题

>>> grammar = parso.load_grammar()
>>> module = grammar.parse('foo +\nbar\ncontinue')
>>> error1, error2 = grammar.iter_errors(module)
>>> error1.message
'SyntaxError: invalid syntax'
>>> error2.message
"SyntaxError: 'continue' not properly in loop"

资源

安装

pip install parso

未来

  • 将提供更好的重构和注释支持。请保持关注。

  • 有一个正在进行的PEP8验证器。然而,它还没有处于良好的状态。

已知问题

  • async/await 已在Python3.6中用作关键字。

  • from __future__ import print_function 不会被忽略。

致谢

  • Guido van Rossum (@gvanrossum) 为创建解析生成器pgen2(最初用于lib2to3)。

  • Salome Schneider 为极好的parso标志。

变更日志

未发布

0.8.4 (2024-04-05)

  • 添加对Python 3.13的基本支持

0.8.3 (2021-11-30)

  • 添加对Python 3.11和3.12的基本支持

0.8.2 (2021-03-30)

  • 各种小错误修复

0.8.1 (2020-12-10)

  • 各种小错误修复

0.8.0 (2020-08-05)

  • 停止支持Python 2.7、3.4和3.5

  • 现在可以在API中使用pathlib.Path对象

  • 占位符已移除,我们现在使用注解

  • namedexpr_test节点现在是一个名为NamedExpr的正确类

  • 许多小重构

0.7.1 (2020-07-24)

  • 修复了一些小错误(主要是Grammar.iter_errors中的语法错误检测)

这将是我们支持Python 2.7、3.4和3.5的最后一个版本。

0.7.0 (2020-04-13)

  • 修复diff解析器中的许多讨厌的错误。模糊器运行超过24小时(500k测试)后未再发现问题。

  • 小的语法更改:套件现在可以在换行符后包含换行符。如果你不使用错误恢复,这实际上并不重要。它允许更优雅的错误恢复。

0.6.2 (2020-02-27)

  • 错误修复

  • 添加Grammar.refactor(可能直到0.7.0仍可能发生变化)

0.6.1 (2020-02-03)

  • 添加parso.normalizer.Issue.end_pos以使知道问题结束的位置

0.6.0 (2020-01-26)

  • 停止支持Python 2.6/Python 3.3

  • del_stmt名称现在被视为定义(对于name.is_definition()

  • 错误修复

0.5.2 (2019-12-15)

  • 添加include_setitem以获取定义/是定义和获取定义名称(#66)

  • 修复命名表达式错误列表(#89,#90)

  • 修复一些f-string分词器问题(#93)

0.5.1 (2019-07-13)

  • 修复:一些Unicode标识符未被正确分词

  • 修复:f-string中的行续现在工作

0.5.0 (2019-06-20)

  • 重大变更 comp_for现在在所有Python版本中称为sync_comp_for,以与Python 3.8 Grammar兼容

  • 为许多parso API添加.pyi占位符

  • 小的FileIO更改

0.4.0 (2019-04-05)

  • 支持Python 3.8

  • FileIO支持,现在可以使用抽象文件IO,支持为alpha

0.3.4 (2019-02-13)

  • 修复f-string分词器错误

0.3.3 (2019-02-06)

  • 修复diff解析器中的异步错误

  • iter_errors中的修复

  • 这是一个非常小的错误修复版本

0.3.2 (2019-01-24)

  • diff解析器中有20多个错误修复,分词器中有3个

  • 为diff解析器添加了一个模糊器,以提供diff解析器处于良好状态的信心。

  • 一些f-string的修复

0.3.1 (2018-07-09)

  • diff解析器和关键字仅参数的错误修复

0.3.0 (2018-06-30)

  • 重写了pgen2解析器生成器。

0.2.1 (2018-05-21)

  • diff解析器的错误修复。

  • 语法文件现在可以从特定的路径加载。

0.2.0 (2018-04-15)

  • f-strings现在作为正常Python语法的部分进行解析。这使得处理它们变得更容易。

0.1.1 (2017-11-05)

  • 修复了缓存层的一些错误

  • 添加了对Python 3.7的支持

0.1.0 (2017-09-04)

  • 将库从Jedi中分离出来。一些API肯定会发生变化。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

parso-0.8.4.tar.gz (400.6 kB 查看哈希值)

上传时间: 源代码

构建分发版

parso-0.8.4-py2.py3-none-any.whl (103.7 kB 查看哈希值)

上传时间: Python 2 Python 3

支持