Repolode
davidhalter

davidhalter/parso

Парсер Python, который строит синтаксические деревья, восстанавливается после ошибок и сохраняет исходный код без изменений для разных версий Python.

Звёзды
678
Форки
131
Открытые issues
11
Последний коммит
4 дня назад

Что это?

Parso разбирает исходный код Python в синтаксическое дерево и позволяет анализировать его через небольшой API. В отличие от модуля ast из стандартной библиотеки, он сохраняет пробелы и комментарии, поэтому вызов get_code() для узла в точности воспроизводит исходный текст. Кроме того, парсер восстанавливается после синтаксических ошибок, а не останавливается на первой, и может сообщить о нескольких проблемах в одном файле.

Parso поддерживает разбор кода для разных версий Python, загружая грамматику для выбранной версии. Изначально проект был выделен из Jedi и используется как слой парсинга для инструментов редакторов, которым нужно работать с незавершённым или некорректным кодом, пока пользователь печатает.

Проект устанавливается с помощью pip и предоставляет такие функции, как parso.parse() и parso.load_grammar(), для работы с деревьями и получения списка ошибок.

Ключевые возможности

  • 01Восстанавливается после синтаксических ошибок и продолжает разбор.
  • 02При разборе с точным обратным преобразованием сохраняет пробелы и комментарии.
  • 03Выводит список нескольких синтаксических ошибок в одном файле.
  • 04Позволяет выбрать грамматику для конкретной версии Python.
  • 05Предоставляет небольшой API для навигации по синтаксическому дереву и его анализа.

Сценарии использования

  • Разработка инструментов для редакторов и IDE, которые должны обрабатывать незавершённый код.
  • Создание инструментов для рефакторинга и преобразования исходного кода, которым нужно точно сохранять текст при обратном преобразовании.
  • Одновременный вывод нескольких синтаксических ошибок в файле Python.
  • Анализ кода Python с использованием грамматик для разных версий языка.

Быстрый старт

  1. 1

    Установите parso из PyPI с помощью pip

    pip install parso

Что важно знать

  • Известны проблемы с ключевыми словами async/await в Python 3.6 и обработкой from __future__ print_function.
  • Указан находящийся в разработке валидатор PEP8, который пока работает неудовлетворительно.
  • Лицензия в метаданных явно не указана.

Темы

Частые вопросы

Что такое parso?
Парсер Python, который строит синтаксические деревья, восстанавливается после ошибок и сохраняет исходный код без изменений для разных версий Python. Parso разбирает исходный код Python в синтаксическое дерево и позволяет анализировать его через небольшой API. В отличие от модуля ast из стандартной библиотеки, он сохраняет пробелы и комментарии, поэтому вызов get_code() для узла в точности воспроизводит исходный текст. Кроме того, парсер восстанавливается после синтаксических ошибок, а не останавливается на первой, и может сообщить о нескольких проблемах в одном файле.
parso можно использовать бесплатно? Какая у него лицензия?
parso распространяется с открытым исходным кодом под лицензией Other. Перед использованием в коммерческих продуктах проверьте условия лицензии.
parso всё ещё поддерживается?
Активно поддерживается. Последний коммит в parso — 2 нояб. 2026 г..
Для чего можно использовать parso?
Разработка инструментов для редакторов и IDE, которые должны обрабатывать незавершённый код. Создание инструментов для рефакторинга и преобразования исходного кода, которым нужно точно сохранять текст при обратном преобразовании. Одновременный вывод нескольких синтаксических ошибок в файле Python. Анализ кода Python с использованием грамматик для разных версий языка.
Как установить parso?
Установите parso из PyPI с помощью pip: pip install parso
Где скачать parso?
Исходный код и инструкции по установке — на GitHub: https://github.com/davidhalter/parso

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Набор библиотек Swift для разбора, анализа, генерации и преобразования исходного кода Swift в синтаксическое дерево, точно соответствующее исходному тексту.

3,7 тыс.+4 за неделю566SwiftApache-2.0Активно поддерживаетсяОбновлён 16 часов назад

Генератор инкрементальных парсеров и библиотека для построения конкретных синтаксических деревьев и их обновления при редактировании исходного кода.

27,4 тыс.+56 за неделю3 тыс.RustMITАктивно поддерживаетсяОбновлён 16 часов назад

Инструмент на JavaScript для преобразования CSS с помощью плагинов: проверки, добавления префиксов, вложенных правил, минификации и расширения таблиц стилей.

29 тыс.1,7 тыс.TypeScriptMITАктивно поддерживаетсяОбновлён 4 дня назад