Набор библиотек Swift для разбора, анализа, генерации и преобразования исходного кода Swift в синтаксическое дерево, точно соответствующее исходному тексту.
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
Установите 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 обновляется ежедневно.
Похожие проекты
Утилита unist для обхода узлов синтаксических деревьев, например AST Markdown, с фильтром и обработчиками входа и выхода.
Генератор инкрементальных парсеров и библиотека для построения конкретных синтаксических деревьев и их обновления при редактировании исходного кода.
Полноценный парсер C99/C11 на чистом Python: строит AST исходного кода на C и не требует внешних зависимостей.
Инструмент на JavaScript для преобразования CSS с помощью плагинов: проверки, добавления префиксов, вложенных правил, минификации и расширения таблиц стилей.
Парсер PHP, написанный на PHP: преобразует исходный код в абстрактное синтаксическое дерево для статического анализа и обработки кода.