Я хочу реализовать минимальный язык шаблонов, такой как Template Toolkit, но гораздо более простой.
Я не хочу использовать существующую реализацию / библиотеку, но начну с нуля, потому что я хочу извлечь из этого кое-что и полностью понять это, чтобы приспособить его к своим потребностям.
Конечный продукт должен быть на C, но я, вероятно, сначала попытаюсь создать прототип на Perl.
Для начала я хочу, чтобы он обрабатывал только другие файлы, подставляя переменные, а теперь - сложная часть, произвольно встраиваемая, если / elseif / else / endif-constructs, требующие некоторого расширенного анализа.
Вот пример, иллюстрирующий его предполагаемое использование:
<h1>[% substitute title %]</h1>
<p>
[% if foo %]
foo is true
[% elseif bar %]
[% if baz %]
bar and baz are true
[% endif %]
bar is true
[% else %]
<em>none<em> is true
[% endif %]
</p>
У меня приличный C и некоторые навыки Perl, но я абсолютно не разбираюсь в синтаксическом анализе, поэтому я даже не знаю, что именно ищу.
Так что я был бы заинтересован в
- какие алгоритмы могут обрабатывать синтаксический анализ следующим образом
- чтение рекомендаций по таким алгоритмам, минимальное введение в парсинг, актуальное здесь, или учебные пособия
- минимальные, хорошо документированные / прокомментированные примеры (я не мог иметь большого смысла из источника ТТ)
ТИА.