pyPEG

Скриншот программы:
pyPEG
Детали программы:
Версия: 2.4.1
Дата загрузки: 14 Apr 15
Разработчик: Volker Birk
Тип распространения: Бесплатная
Популярность: 29

Rating: 1.5/5 (Total Votes: 2)

Python хороший язык сценариев. Он даже дает вам доступ к своим собственным анализатором и компилятором. Это также дает вам доступ к различным других анализаторов для специальных целей, таких как XML и струнных шаблонов.
Но иногда вы можете иметь свой собственный парсер. Это то, что pyPEG для.
Чтобы получить быстрый взгляд на то, что происходит, пожалуйста, прочитайте эту статью о том, как разобрать произвольную язык XML с pyPEG на моем блоге.
Что такое ПЭГ?
ПЭГ означает Разбор выражений Грамматика. Это что-то вроде идеи регулярных выражений для контекстно-свободных языков; очень четкое объяснение вы найдете в Википедии статью о ПЭГ.
С ПЭГ вы можете описать те же языки, как с БНФ (и они даже похожи).
Что такое анализатор-переводчик?
Общие анализаторы не используют ПЭГ и нисходящий синтаксический анализ, но LR (п) или LL (п) и восходящий анализ. Это приводит к идее реализации анализатора генераторы.
Потому что с LR (п) или LL (п) анализаторов необходимо рассчитать из ДКА-первых, как правило, вы позволяете генератор парсер сделать это за вас. В результате реализация парсер для вашего БНФ грамматики, которая была входного сигнала. Можно назвать генератор парсеров компилятор от БНФ в реализации анализатора.
Парсер-переводчик работает в качестве переводчика, а не то, что такой компилятор. Просто дайте свою грамматику в качестве входных данных, и он анализирует, описанный язык из текста. Там не будет программа выдала.
Использование pyPEG
Это означает, что: с помощью pyPEG очень легко ;-) Если вы знаете, регулярные выражения уже, вы узнаете, быстро использовать pyPEG.
Небольшой образец
Пример: думать о простом языке, как этот:
Функция фак (п) {
& NBSP; если (п == 0) {// 0! 1, по определению
& NBSP; возвращает 1;
& NBSP;} еще {
& NBSP; возвращение п * фак (п - 1);
& NBSP;};
}
PyPEG для данного языка выглядит следующим кодом (см также пример сценария):
Def комментарий (): возвращение [re.compile (г "//.*"), re.compile ("/*.*?*/", re.S)]
Def буквальное (): возвращение re.compile (".? *" * r'd .d * | | D + ")
символ четкости (): возвращение re.compile (г "W +")
Def оператор (): возвращение re.compile (г "+ | - | * | / | ==")
Операция четкости (): Символ возврата, оператор, [буквально, FunctionCall]
Def выражение (): возвращение [буквально, эксплуатация, FunctionCall]
Def ExpressionList (): возвращает выражение, -1, (",", выражение)
Def returnstatement (): Ключевое слово возвращения ("Возвращение"), выражение
Def ifstatement (): Ключевое слово возвращения ("если"), "(", выражение, ")", блок, ключевое слово ("еще"), блок
Def заявление (): возвращение [ifstatement, returnstatement], ";"
Def блок (): возвращение "{", -2, заявление, "}"
Def ParameterList (): возвращение "(" символ, -1, (",", символ), ")"
Def FunctionCall (): возвращает символ, "(", ExpressionList, ")"
Функция четкости (): Ключевое слово возвращения ("функция"), символ, ParameterList, блок
Def simpleLanguage (): Функция возврата

Что нового В этом выпуске:

  • Это релиз очистки. Код разбора () и составляют () была зафиксирована.

Что нового в версии 1.4:.

  • Эта версия исправляет некоторые ошибки с Packrat разбора

Что нового в версии 1.3:

  • Замена кортеж для имен в Пяст символом (список ) класс, который является довольно совместимы, но поддерживает более описательный код компилятора бэкэндов тоже.

Что нового в версии 1.2:.

  • Ошибки с Unicode в обработке ошибок были исправлены

Что нового в версии 1.1:.

  • Добавлена ​​поддержка Unicode

Что нового в версии 0.46:.

  • pyPEG.print_trace Истина
  • Преобразование pyPEG для Python 3.x теперь работает плавно, используя 2to3
  • Правила грамматики, которые применяются при необходимости можно проследить по установке
  • pyPEG выведет этот след в стандартный поток ошибок.

Что нового в версии 0.45:.

  • Исправления

Что нового в версии 0.44:

  • pyPEG Теперь украшает каждый объект Пяст с именем исходного файла и линии число.

Требования

  • Python

Похожие программы

SMOP
SMOP

11 May 15

Box
Box

19 Feb 15

Yazoo
Yazoo

20 Feb 15

Другие программы разработчика Volker Birk

YML
YML

11 May 15

Комментарии к pyPEG

Комментарии не найдены
добавить комментарий
Включите картинки!