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 означає Розбір граматиці виразів. Це щось на зразок ідеї регулярних виразів для контекстно вільних мов; дуже чітке пояснення ви знайдете в статті Вікіпедії про PEG.
З кілочками ви можете описати ті ж мови, як з БНФ (і вони навіть схожі).
Що таке аналізатор-перекладач?
Загальні парсери не використовуєте кілочків і зверху вниз розбору, але LR (N) або LL (п) і висхідний аналіз. Це призводить до ідеї реалізації генераторів аналізаторів.
Тому що з LR (п) або LL (п) аналізаторів необхідно розрахувати з ДКА-перше, як правило, ви дозволяєте генератор синтаксичних аналізаторів зробити це за вас. Результатом є реалізація парсер для вашого граматики БНФ, який був вхід. Можна назвати генератор синтаксичних аналізаторів компілятор від БНФ у реалізації аналізатора.
Parser-перекладач працює в якості перекладача, а не бути такою компілятор. Просто дайте свою граматику в якості вхідних даних, і він аналізує описану мову з тексту. Там не буде програма видала.
Використання 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 (г "+ | - | * | / | ==")
робота Def (): повертає символ, оператор, [буквально, 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 в True
  • Перетворення pyPEG для Python 3.x тепер працює плавно, використовуючи 2to3
  • Правила граматики, які застосовуються при необхідності можна простежити по установці
  • pyPEG виведе цей слід в стандартний потік помилок.

Що нового у версії 0.45 :.

  • Виправлені помилки

Що нового у версії 0.44:

  • pyPEG тепер прикрашає кожен об'єкт Пяст з ім'ям вихідного файлу і лінії число.

Вимоги

  • Python

Схожі програми

Інші програми розробника Volker Birk

YML
YML

11 May 15

pyPEG

Коментар не знайдено
додати коментар
Включіть картинки!
Пошук за категоріями