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

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

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

прочитал 2 раза, кто-то может сказать что оно делает?

anonymous ()

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

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

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

fury3 ()

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

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

anonymous ()

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

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

anonymous ()

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

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

anonymous ()

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

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

blind ()

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

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

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

anonymous ()

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

А boost::spirit чем не угодил?

Ещё есть qlalr (http://labs.trolltech.com/page/Projects/Compilers/QLALR), при желании, его можно освободить от привязки к Qt.

drs ()

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

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

anonymous ()

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

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

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

anonymous ()

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

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

В линукс? ))

LamerOk ★★★★★ ()

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

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

anonymous ()

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

> Лучше бы для 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 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.