Python как инструмент синтаксического анализа

python kak instrument sintaksicheskogo analiza Текст и язык

В большинстве приложений сам язык Python способен заменить нестандартные языки и парсеры — программный код, введенный пользователем, может быть передан интерпретатору Python для выполнения с помощью таких инструментов, как функции eval и exec. При расширении системы с помощью собственных модулей пользовательский программный код получает доступ не только ко всему богатству языка Python, но и к любым другим специфическим расширениям, необходимым приложению. В некотором смысле, такие системы встраивают Python в Python. Поскольку это вполне обычная роль языка Python, мы рассмотрим данный подход далее в этой главе.

Собст вен ные пар серы: соз дан ные вруч ную или с при вле че ни ем других инструментов

Однако для решения некоторых сложных задач анализа синтаксиса языков все еще может потребоваться использовать полноценные парсеры. Такие парсеры всегда можно написать вручную, но так как Python поддерживает интеграцию с инструментами на языке C, можно написать инструмент интеграции с традиционными генераторами парсеров, такими как yacc и bison, создающими парсеры на основе определения грамматики языка. Но еще лучше использовать уже существующие инструменты интеграции — интерфейсы к таким распространенным генераторам парсеров свободно доступны в мире открытого программного обеспечения (воспользуйтесь поисковой системой, чтобы найти более свежую информацию и ссылки).

Кроме того, в Интернете можно найти множество систем синтаксического анализа специально для языка Python. Среди них: PLY — реализация инструментов синтаксического анализа lex и yacc на Python и для Python; система kwParsing — генератор парсеров, написанный на языке Python; PyParsing — библиотека классов на языке Python, которая позволяет быстро создавать парсеры, действующие по алгоритму рекурсивного спуска; и инструментальный набор SPARK — легковесная система, использующая алгоритм Earley для решения технических проблем, связанных с генерированием парсеров LALR (если вы не знаете, что это такое, то вам, вероятно, не стоит и беспокоиться). Особый интерес для данной главы представляет YAPPS (Yet Another Python Parser System — еще одна система синтаксического анализа Python) — генератор парсеров, написанный на языке Python. С помощью заданных правил грамматики он генерирует программный код Python в доступном для чтения виде, реализующий парсер, использующий метод рекурсивного спуска. Парсеры, генерируемые системой YAPPS, весьма похожи на парсеры выражений, реализованные вручную и представленные в следующем разделе (которыми они и инспирированы). YAPPS создает парсеры LL(1), не такие мощные, как парсеры LALR, но достаточные для многих задач синтаксического анализа языков. Для получения подробной информации о YAPPS смотрите страницу http://theory.stanford.edu/~amitp/Yapps или ищите дополнительную информацию в Интернете.

Использованная литература:

Марк Лутц — Программирование на Python, 4-е издание, II том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий