суббота, 8 августа 2009 г.

Common Lisp vs PHP

Есть у меня мысль реализовать возможность просмотра перевода "Practical Common Lisp" на lisper.ru. Для этого нужен парсер dokuwiki-разметки. Сам я в парсерах, мягко говоря, не силён. Но больше его никто писать не хочет :( Этот парсер дал бы другие возможности, в том числе, возможность экспорта PCL в разные форматы и мог бы послужить основой для разработки вики для lisper.ru.

Ну вот, поскольку больше некому, то решил попробовать сделать сам. Полез смотреть как это делали другие. Взял оригинальный код парсера dokuwiki (PHP) и код cl-markdown (Common Lisp), по сути, очень близкие проекты. Код cl-markdown смотрится, в общем, нормально, но это если не сравнивать с кодом парсера dokuwiki: разница в простоте и ясности кода просто поражает (100 баллов в пользу PHP, при том, что я никогда не писал на PHP, и вообще никогда с ним дела не имел).

Мораль: да, Common Lisp велик и могуч, а PHP ничтожен, но это в теории, а на практике же бывает совсем иная картина. В общем, очередной раз убедился, что все рассказы об удивительных свойствах lisp, равно как и ФП должны потверждаться на практике. Пока же, PHP уходит в отрыв...

3 комментария:

  1. Написал вот небольшой парсер (http://paste.lisp.org/display/85082), который может парсить часть грамматики docuwiki (без списков и таблиц). Надеюсь, будет полезно :)
    К сожалению, не знаю, как парсить indentation-based синтаксис. Для остальной части синтаксиса использованы fucc и lexer.

    ОтветитьУдалить
  2. А какова постановка задачи вообще? Оттранслировать docuwiki-документ в xhtml?

    ОтветитьУдалить
  3. > А какова постановка задачи вообще?
    Парсить, это раз.
    Отображать, это два.
    В общем, принципиальную работу я уже выполнил, и можно смотреть на http://lisper.ru/pcl/

    ОтветитьУдалить