Оказывается, парсеры - не так уж и страшно

Озаботился, проблемой парсинга yaml и pdoc. Оказывается, все не так страшно, как мне казалось. Теоретически, есть генераторы парсеров, где можно описать грамматику, и они сгенерируют полноценный обработчик. Практически - для yaml это будет муторно (тем более, есть готовый код, который можно портировать). А вот для pdoc тема прокатит.

Конкретно для JS нашел 2 парсера, которые внушают хоть какое-то доверие (имеют большое собщество, стабильные версии, и своевременно обновляются).

  • jison - аналог bison/flex.
  • PEGjs - packrat-овский парсер

Какой из парсеров выбрать - пока не знаю. PEGjs - проще в освоении, как любой пакратовский. С другой стороны, jison значительно мощнее и активнее развивается. В пользу jison говорит, что на нем сделали coffescript.

Возвращаемся к pdoc. Шаблоны страниц на ERB можно использовать почти без изменений - под ноду есть темплейтер EJS с аналогичным синтаксисом. Правила парсинга описаны на TreeTop - их 1:1 использовать не получится, но можно без особых проблем сконвертировать под jison/PEGjs. Короче, на “свой код” остается совсем немного.

PS. Теперь понял, как дешево и сердито сделать парсер ббкода. В нодеке я ббкод использовать не планирую, но данные-то сконвертировать все равно надо.

  • 913