pyPEG

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

Rating: 1.5/5 (Total Votes: 2)

Python е приятно скриптов език. Той дори ви дава достъп до собствен анализатор и компилатор. Той също така ви дава достъп до различни други парсери за специални цели като XML и струнни шаблони.
Но понякога може да искате да имате собствен анализатор. Това е това, което е pyPEG за.
За да получите бърз поглед върху това, което се случва, моля, прочетете тази статия за това как да се направи разбор на произволен език за XML с pyPEG в моя блог.
<Силен> Какво е PEG?
PEG означава разбор Expression граматика. Това е нещо като идеята за регулярни изрази за контекстно свободните езици; много ясно обяснение, които ще намерите в статията в Уикипедия за PEG.
С PEGs ще може да опишете същите езици като с БНФ (и те са дори нещо подобно).
<Силен> Какво е Parser-Interpreter?
Общи парсери не използват PEG, и отгоре-надолу разбор, но LR (п) или LL (п) и разбор отдолу нагоре. Това води до идеята за прилагане на инструмента за синтактичен генератори.
Защото с LR (п) или LL (п) парсери трябва първо да се изчисли по една DFA, обикновено ви пусне генератор анализатор направи това за вас. Резултатът е изпълнението анализатор за вашия БНФ граматика, която е на входа. Човек може да се обадите на анализатор Генератор компилатор от БНФ до изпълнение на анализатор.
A Parser-Interpreter върши работа като преводач, вместо да бъде такъв компилатор. Просто даде своя граматика като вход, и го прави разбор на описана език от текст. Няма да има програма, генерирани.
<Силен> Използване pyPEG
Това означава: използване pyPEG е много лесно;-) Ако знаете регулярни изрази вече, ще се научите да използвате pyPEG бързо.
Малка проба
Един пример: сетя за по-прост език, като този:
функция FAK (п) {
& Nbsp; ако (п == 0) {// 0! е 1 по дефиниция
& Nbsp; върне 1;
& Nbsp;} още {
& Nbsp; връщане п * FAK (п - 1);
& Nbsp;};
}
A pyPEG за този език прилича следния код (виж също примерен скрипт):
Def коментар (): връщане [re.compile (R "//.*"), re.compile ("/*.*?*/", re.S)]
Def буквалното (): връщане re.compile (".? *" r'd * .d * | | г + ")
символ Def (): връщане re.compile (R "w +")
Операторът Def (): връщане re.compile (R "+ | - | * | / | ==")
операция Def (): връщане символ, оператор, [буквално, functioncall]
Def изразяване (): връщане [буквално, работа, functioncall]
Def expressionlist (): върнете изразяване, -1, (",", израз)
Def returnstatement (): връщане ключова дума ("Изход"), израз
Def ifstatement (): връщане ключова дума ("ако"), "(", израз, ")", блок, ключови думи ("друго"), блок
Декларация Def (): връщане [ifstatement, returnstatement], ";"
Def блок (): завръщане "{", -2, изявление, "}"
Def parameterlist (): завръщане "(", символ, -1, (",", символ), ")"
Def functioncall (): върнете символ, "(", expressionlist, ")"
Def функция (): връщане ключова дума ("функция"), символ, parameterlist, блок
Def simpleLanguage (): връщане функция

Какво ново в тази версия:

  • Това е освобождаване почистване. Кодът на разбор () и композира () е фиксиран.

Какво ново във версия 1.4:.

  • Тази версия определя някои бъгове с packrat разбор

Какво ново във версия 1.3:

  • Подмяна на кортеж за имена в pyAST със символа (списък ) клас, което е доста съвместими, но поддържа по-описателно код в компилатора Неуспех, също.

Какво ново във версия 1.2:.

  • Bugs с Unicode в обработка на грешки са фиксирани

Какво ново във версия 1.1:.

  • е добавен подкрепа Unicode

Какво ново във версия 0.46:.

  • pyPEG.print_trace да True
  • Конвертиране pyPEG да Python 3.x сега работи безпроблемно използване 2to3
  • според езиковите правила, които се прилагат може да бъде по избор проследено чрез създаването
  • pyPEG ще изведе тази следа да STDERR.

Какво ново във версия 0.45:.

  • Фиксирани бъгове

Какво ново във версия 0.44:

  • pyPEG сега украсява всяка pyAST обект с името на файла източник и ред номер.

<силни> Изисквания :

  • Python

Подобен софтуер

GNU Smalltalk
GNU Smalltalk

11 May 15

GCC ARM Embedded
GCC ARM Embedded

17 Aug 18

Stratego/XT
Stratego/XT

3 Jun 15

Друг софтуер на разработчика Volker Birk

YML
YML

11 May 15

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

Коментари не е намерена
добавите коментар
Включете на изображения!
Търсене по категория