Repolode
davidhalter

davidhalter/parso

Pythonのバージョンをまたいで、エラー回復とソースコードの完全な再現に対応する構文解析器。

スター
678
フォーク
131
未解決の Issue
11
最終コミット
4 日前

これは何?

ParsoはPythonのソースコードを構文木に変換し、シンプルなAPIで解析できます。標準ライブラリのastモジュールとは異なり、空白やコメントを保持するため、ノードに対してget_code()を呼び出すと元のテキストをそのまま再現できます。また、構文エラーがあっても最初のエラーで停止せずに解析を続け、1つのファイル内の複数の問題を報告できます。

Parsoは、指定したバージョンの文法を読み込むことで、異なるPythonバージョン向けのコードを解析できます。もともとはJediプロジェクトから切り出されたもので、ユーザーの入力中に未完成または不正なコードを扱う必要があるエディター向けツールの解析レイヤーとして使われています。

このプロジェクトはpipでインストールでき、構文木の操作やエラーの列挙に使えるparso.parse()やparso.load_grammar()などの関数を提供します。

主な機能

  • 01構文エラー後も解析を続けるエラー回復機能。
  • 02空白やコメントを保持し、解析前のテキストをそのまま再現。
  • 031つのファイル内にある複数の構文エラーを列挙。
  • 04特定のPythonバージョンの文法を選択可能。
  • 05構文木の走査や解析に使えるシンプルなAPI。

ユースケース

  • 未完成のコードも扱えるエディターやIDE向けツールの開発。
  • ソースコードを完全に再現する必要があるリファクタリング・変換ツールの開発。
  • Pythonファイル内の複数の構文エラーを一度に報告。
  • 異なるPythonバージョンの文法に基づくPythonコードの解析。

クイックスタート

  1. 1

    pipでPyPIからparsoをインストールします

    pip install parso

使う前に知っておきたいこと

  • Python 3.6でのasync/awaitキーワードと、from __future__ print_functionの処理に既知の問題があります。
  • まだ完成度が低い、開発中のPEP8バリデーターが記載されています。
  • メタデータでライセンスが明確に指定されていません。

トピック

よくある質問

parso とは?
Pythonのバージョンをまたいで、エラー回復とソースコードの完全な再現に対応する構文解析器。 ParsoはPythonのソースコードを構文木に変換し、シンプルなAPIで解析できます。標準ライブラリのastモジュールとは異なり、空白やコメントを保持するため、ノードに対してget_code()を呼び出すと元のテキストをそのまま再現できます。また、構文エラーがあっても最初のエラーで停止せずに解析を続け、1つのファイル内の複数の問題を報告できます。
parso は無料で使えますか?ライセンスは?
parso は Other ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
parso は今もメンテナンスされていますか?
活発にメンテナンス中。parso の最終コミットは 2026年11月2日 です。
parso は何に使えますか?
未完成のコードも扱えるエディターやIDE向けツールの開発。 ソースコードを完全に再現する必要があるリファクタリング・変換ツールの開発。 Pythonファイル内の複数の構文エラーを一度に報告。 異なるPythonバージョンの文法に基づくPythonコードの解析。
parso のインストール方法は?
pipでPyPIからparsoをインストールします: pip install parso
parso はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/davidhalter/parso

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト