Repolode
davidhalter

davidhalter/parso

一个 Python 解析器,可构建语法树,支持错误恢复并能无损还原源代码。

Star
678
Fork
131
未关闭 Issue
11
最近提交
5天前

这是什么?

Parso 将 Python 源代码解析为语法树,并提供一套精简的 API 用于分析。与标准库的 ast 模块不同,它会保留空白和注释,因此对节点调用 get_code() 可以原样还原源文本。解析时遇到语法错误也能继续恢复,而不是在第一个错误处停止,并且可以一次列出文件中的多个问题。

通过为指定的 Python 版本加载对应语法,Parso 能够解析不同版本的 Python 代码。该项目最初从 Jedi 中独立出来,适用于需要处理编辑过程中不完整或有错误代码的编辑器工具。

项目可通过 pip 安装,提供 parso.parse()、parso.load_grammar() 等函数,用于构建语法树和列出错误。

核心功能

  • 01语法错误后仍能继续解析的错误恢复能力。
  • 02保留空白和注释的无损往返解析。
  • 03可一次列出单个文件中的多个语法错误。
  • 04支持选择指定 Python 版本的语法。
  • 05提供简洁的 API 用于遍历和分析语法树。

适用场景

  • 开发需要处理不完整代码的编辑器或 IDE 工具。
  • 编写需要精确还原源文本的代码重构或转换工具。
  • 一次性报告 Python 文件中的多个语法错误。
  • 基于不同 Python 版本语法分析代码。

快速上手

  1. 1

    用 pip 从 PyPI 安装 parso

    pip install parso

使用前须知

  • 在 Python 3.6 上 async/await 关键字及 from __future__ print_function 的处理存在已知问题。
  • README 中提到的 PEP8 校验器仍处于开发中,尚不成熟。
  • 元数据中未明确说明许可证。

标签

常见问题

parso 是什么?
一个 Python 解析器,可构建语法树,支持错误恢复并能无损还原源代码。 Parso 将 Python 源代码解析为语法树,并提供一套精简的 API 用于分析。与标准库的 ast 模块不同,它会保留空白和注释,因此对节点调用 get_code() 可以原样还原源文本。解析时遇到语法错误也能继续恢复,而不是在第一个错误处停止,并且可以一次列出文件中的多个问题。
parso 可以免费使用吗?用的什么许可证?
parso 以 Other 许可证开源。用于商业产品前,请先确认许可证条款。
parso 还在维护吗?
活跃维护中。parso 最近一次提交是在 2026年11月2日。
parso 适合用来做什么?
开发需要处理不完整代码的编辑器或 IDE 工具。 编写需要精确还原源文本的代码重构或转换工具。 一次性报告 Python 文件中的多个语法错误。 基于不同 Python 版本语法分析代码。
parso 怎么安装和运行?
用 pip 从 PyPI 安装 parso: pip install parso
在哪里获取 parso?
源代码和安装说明在 GitHub 上:https://github.com/davidhalter/parso

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目