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

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

Chapel
Chapel

11 May 15

GCC ARM Embedded
GCC ARM Embedded

17 Aug 18

IGCC
IGCC

14 Apr 15

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

YML
YML

11 May 15

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

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