LINUX.ORG.RU

Вышла версия 2.5 модуля грамматического анализа PLY для языка Python

 , , ,


0

0

28 мая 2008 года вышла версия 2.5 модуля грамматического анализа PLY. Модуль предназначен для лексического и синтаксического анализа текстов, описываемых LALR(1)- и SLR-грамматиками (синтаксис которых задан в форме Бэкуса-Науэра, БНФ).

Автор PLY, Python Lex-Yacc, — знаменитый Дэвид Бизли, написавший также генератор интерфейсов SWIG и замечательные книги по языку Python. Изначально PLY был предназначен для разработки компиляторов Паскаль-подобного языка студентами и использовался на практических занятиях по курсу "Introduction to Compilers".

Как следует из названия модуля, он является аналогом lex/yacc. Но, в отличие от них, не является генератором кода, а работает в режиме интерпретации.

При написании анализатора LALR(1)-грамматик, Бизли использовал код Elias Ioup, который впоследствие был заменен на более эффективный алгоритм DeRemer'а и Pennello.

Бизли занимается этим проектом в свободное время и рад помощи по улучшению продукта. Также автор оказывает платные услуги по поддержке модуля.

Модуль оформлен в виде двух .py-файлов и распространяется на условиях свободной пользовательской лицензии GNU LGPL 2.1. К исходным текстам прилагаются десятки качественных тестов и примеров. Включен в состав дистрибутива Debian GNU/Linux.

Скачать: http://www.dabeaz.com/ply/ply-2.5.tar.gz
Лист рассылки: http://groups.google.com/group/ply-hack
Google Code: http://code.google.com/p/ply

>>> Подробности

Ответ на: комментарий от anonymous

наверное проверяет граматику кода не стандартных , на предмет синтаксических ошибок типа fnction -> function .

>>Изначально PLY был предназначен для разработки компиляторов Паскаль-подобного языка студентами и использовался на практических занятиях по курсу "Introduction to Compilers".

fury3
()
Ответ на: комментарий от anonymous

позволяет очень легко написать интерпретатор придуманного тобой языка.

sergej ★★★★★
()

ужос! лор не знает что такое lex/yacc

anonymous
()
Ответ на: комментарий от anonymous

Лучше бы для C++ кто нормально переносимый генератор парсеров сварганил. Поддержка С++ в ANTLR завяла, Bison++ под виндой только через Cygwin, Bison 2.3 (опять же под виндой) доступен только в девелоперской ветке MSYS-а... Куда катится этот мир? :'-(

anonymous
()

"ПЛЯ", какое русское название =)

blind
()

>модуля грамматического анализа

Эта программа сможет помочь лоровскому логопеду.

anonymous
()

Отличная новость! Реально отличная штука. Только один минус: не понимает оно EBNF, а только BNF

anonymous
()
Ответ на: комментарий от anonymous

> LR говно, LL круто.

Можно по-подробнее чем именно? Потому что по книге дракона сложилось противоположное мнение. В LL приходится следить за левой рекурсивностью и работает такой парсер медленнее. Единственный плюс LL - возможность создавать наследуемые атрибуты.

anonymous
()
Ответ на: комментарий от anonymous

У LR есть один важный недостаток: по нему фиг сгенеришь вменяемые сообщения об ошибках.

JackYF ★★★★
()
Ответ на: комментарий от anonymous

> Bison++ под виндой только через Cygwin, Bison 2.3 (опять же под виндой) доступен только в девелоперской ветке MSYS-а... Куда катится этот мир?

В линукс? ))

LamerOk ★★★★★
()
Ответ на: комментарий от anonymous

LL нифига не медленнее. Как раз LR-таблицы конченные тормоза. А книгу дракона надо выбросить, а в реальных компиляторах используется LL с модификациями, там неограниченные возможности. Да, надо следить, чтобы не было леворекуривности, ну и что такого. Имхо, LR дальше калькулятора с циклам малоэффективен. То есть для обучения грамматикам LR подходит лучше, но для реальной работы нисходящий парсинг крут.

anonymous
()
Ответ на: комментарий от anonymous

> Лучше бы для C++ кто нормально переносимый генератор парсеров сварганил.

У меня знакомый в ИСП РАН работал, писал генераторы парсеров.
Правда, сейчас свалил за границу, видимо - больше платят )
А так - можешь в ИСП зайти, там попросить )
Там еще Sedna писали - иерархическую СУБД с поддержкой XPath.
Sedna доступна в исходниках на каком-то их сайте, но разработчики
давно - уже около года - не публиковали новых версий.

> Реально отличная штука. Только один минус: не понимает оно EBNF, а только BNF

Есть SimpleParse:
Description: A simple parser generator for Python
SimpleParse is a BSD-licensed Python package providing a simple parser
generator for use with the mxTextTools text-tagging engine. SimpleParse
allows you to generate tagging tables for use with the text-tagging
engine directly from your EBNF grammar.

(не путать с HTML::SimpleParse - a bare-bones HTML parser)

pacify ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.