Изменения

Блог:Виталий Филиппов/2013-04-20 LALR(1)

2 байта добавлено, 18:56, 20 апреля 2013
м
Нет описания правки
Хе-хе. Переписал свой [[:Шаблонизатор VMX::Template|шаблонизатор]] 4-ый раз с 2006-го года — теперь на <abbr title="LookAhead Left-to-right with Rightmost derivation">LALR</abbr>(1). Поводом послужило упирание в глубину стека при рекурсивном спуске :-D смешно, да. До этого шаблонизатор был сначала стырен с phpBB (он там вообще примитивный был), потом переписан на регэкспы, потом на поиск подстроки, а потом всё-таки добавились операторы, появилась грамматика и я его переписал ещё раз — на рекурсивный спуск. Теперь вот до LALR(1) с помощью PHP-генератора парсеров LIME (типа, по мотивам lemon’а сделанного) добрался.
Так что ещё одной отличительной чертой моего шаблонизатора, кроме простоты и быстроты (кэшируется там всё хорошо), теперь является то, что он парсится вменяемой грамматикой. Причём парсится именно весь файл целиком, несмотря на то, что некорректные директивы просто пропускаются, а это требует взаимодействия лексического и синтаксического анализаторов. И реально весь язык и транслятор, кроме вызовов функций, описан LIME-грамматикой.
А ещё я как-то не осознавал, что первым теорию формальных языков Хомский, который лингвист, придумал (ну или структурировал, по крайней мере).
Дока, кстати, тут — [[:Шаблонизатор VMX::Template]].
{{wl-publish: 2013-04-20 22:55:59 +0400 | VitaliyFilippov }}