Украинское сообщество программистов

Сообщество Функциональное программирование

Лента блогов Функциональное программирование

Опять о parser комбинаторах: еще не в индустрии

rssh, 01.03.2010
Ситуация с парсер-комбинаторами в scala -- яркий пример, показывающий, что до индустриального использования fp еще расти и расти:
Итак, использование parser комюбинаторов - это способ, с помощью которого можно быстро слелать парсер для какого-то языка. Об этом написано в всех блогах, в сети выложено штук 30 разных проектов с использованием фичи: казалось бы прекрасно. Но


    ни в одном из опубликованных в сети примеров не реализованна функциональность запоминания имени файла и номера строки в дереве разбора. С другой стороны, держать выражения на DSL без отладки в индустриальном программировании немыслимо. То есть весь этот код в сети это просто иллюстрации к статьям и в реальной жизни не используется.


    как ни странно, стандартная бибилиотека scala поддерживает функциональность установки номеров строк. И пользоваться этим просто и легко (в Parsers определен преобразователь positioned, устанавливающий Position в результат отработавшего комбинатора), но: читаем исходный код реализации по умолчанию и плачем: http://lampsvn.epfl.ch/trac/scala/browser/scala/tags/R_2_7_7_final/src/library/scala/util/parsing/input/OffsetPosition.scala?view=markup
    Для того что бы узнать номер строки, мы разбиваем весь буфер на строки ... в каждой позиции, то есть для каждого token мы будем делать разбиение строк ранее прочитанного буфера заново, и для текста в N лексем, где для простоты каждая лексема на своей строке, мы проитерируем так N*(N-1)/2 строк. [Это вместо того что бы держать одну переменную для подсчета количества строк.]


Теперь понятно почему это всюду отключено ... но блин, получается что использовать это еще нельзя ? Или тратить пару недель на правки стандартной библиотеки ?

То есть все-таки дистанция между функциональщиной и производственным языком, на котором можно просто хреначить, еще достаточно велика. Технологии развиваются по пути наименьшего сопротивления, и получается что основное русло использования языка включает отлаженную алгебру типов высших порядков и объединенный механизм событийного и потокового управления, но не примитивную выдачу правильного номера строки при разборе текста. .... Ну что еще сказать.

Работает на базе feedparser.

Лента блогов о функциональной парадигме программирования. Haskell, Lisp, Scala, Groovy, Smalltalk,F#, etc. edit

Веб-сайт: http://community.defun.ru/

Все сообщества

Python Стартапы Java Функциональное программирование Zend Framework Средства разработки Embedded Планетарий ДОУ Mobile Development За жисть Управление Adobe Flash Platform .ua-нет Фриланс сообщество HR/Recruitment Google AgileUkraine javascript php ALT.NET Україна Gamedev Linux SEO scientific/engineering Delphi Masters баян, надо удалить сообщ, как - не знаю SEORP Юзабилити Programming Сообщество WAP разработчиков Интеграция Интеллектуальный анализ данных DevRP TYPO3 Microsoft Silverlight emacs Си/Си++ Родотворие

создать свое сообщество

Статистика

23 участников, создано 26.10.2009.

Администраторы:

Лента (4)

Добавить

интернет магазин бытовая техника магазин Laptoper