У нас есть собственный механизм шаблонов C для обработки веб-шаблонов. Допустим, у нас есть файл index.html следующего содержания:
{% #include <stdio.h> %}
<!doctype html>
<html>
<head><title>{{ title }}</title></head>
<body>
{{ body }}
{% printf("test"); %}
{% printf("test2") %}
{% printf("test3"); %}
{%
printf("test4");
printf("test5");
%}
{%
printf("test6");
printf("test7")
%}
{% printf("%d", isalpha('a')); %}
</body>
</html>
Когда механизм шаблонов вызывается (инициализируется), он сканирует все файлы в определенной папке «представления». Файл index.html находится в этой папке. Он сканируется и кэшируется в памяти основной программы, вызвавшей механизм шаблонов.
Когда делается запрос, вызывается рабочая функция механизма шаблонов. Функция принимает кэшированный код и массив переменных с их типами и значениями в качестве параметров и возвращает константу. char буфер с обновленными переменными и логическими операциями. Для простоты предположим, что логические операции имеют синтаксис {% ... %}, а переменные — {{ ... }} соответственно.
Нужно уметь использовать функции C и общую логику языка разметки. Вы даже должны уметь определять функции в шаблонах. Если что-то пойдет не так, переменная или логическая операция должны вернуть void. Конечный результат нашей страницы «index.html» с «body» и «title» в качестве переменных {{ body }} и {{ title }} соответственно должен выглядеть следующим образом:
<!doctype html>
<html>
<head><title>title</title></head>
<body>
bodytesttest3test4test5
</body>
</html>
Как эмулировать логику и синтаксис языка C? Это возможно? Нужно ли вам разрабатывать собственную библиотеку языковых операций и вызовов функций, или есть более простое решение? Каков наилучший способ реализации такого решения?