Swiftソースコードをソース位置に忠実な構文木として解析・検査・生成・変換するためのSwiftライブラリ群。
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
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 の数値は毎日更新されます。
関連プロジェクト
Markdown ASTなどの構文木でノードを巡回・訪問するためのunistユーティリティ。テストによる絞り込みとenter/exit visitorに対応します。
ソースファイルの編集に合わせて構文木を更新する、インクリメンタルパーサージェネレーター兼パーシングライブラリ。
外部依存なしの純粋なPythonで書かれたC99/C11パーサー。CソースからASTを生成します。
プラグインでCSSを変換し、Lint、ベンダープレフィックスの付与、ネスト、圧縮などを行うJavaScriptツール。
PHPで書かれたPHPパーサー。PHPのソースコードをASTに変換し、静的解析やコード操作に活用できます。