Изменения

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

4 байта добавлено, 18:57, 20 апреля 2013
м
Нет описания правки
Так что ещё одной отличительной чертой моего шаблонизатора, кроме простоты и быстроты (кэшируется там всё хорошо), теперь является то, что он парсится вменяемой грамматикой. Причём парсится именно весь файл целиком, несмотря на то, что некорректные директивы просто пропускаются, а это требует взаимодействия лексического и синтаксического анализаторов. И реально весь язык и транслятор, кроме вызовов функций, описан LIME-грамматикой.
То есть — лексический анализатор понимает, когда находится внутри директивы, а когда вне, и возвращает соответственно просто куски шаблона литералами, либо прочие лексемы внутри директив, а также пропускает текущую директиву при возникающих ошибках разбора, отлавливая их. Для чего, кстати, пришлось допилить сам LIME — см. https://github.com/vitalif/lime и окончательно прочувствовать алгоритм работы LALR(1). :) он вроде был курсе на 2-ом, но я его тогда как-то не особо прочувствовал. Или не было?.. Не помню точно.
А ещё я как-то не осознавал, что первым теорию формальных языков Хомский, который лингвист, придумал (ну или структурировал, по крайней мере).