用于 C 的一个小型模板引擎

主要观点:作者在有限业余时间喜欢用 C 写 Web 应用,输出 HTML 时需处理字符串转义,于是开发了简单模板引擎。目标是简单易实现和使用、无意外、无运行时模板评估。模板以“块”为基本抽象,可编译为 C 函数,有多种特殊构造如“{!...!}”(包含 C 代码)、“define”(创建块)等,还提供“printf”“if”“for”等控制结构及控制转义的语法,模板编译器将其编译为 C 代码,使用时需编译模板文件并使用运行时库初始化,当前实现有去除行首尾空白等不足,目前未设中央仓库,作者已用其写了一些东西,当前模板相关代码累计约 3600 行。
关键信息:

  • 用 C 写 Web 应用及输出 HTML 时的转义问题。
  • 开发的简单模板引擎的目标和特点。
  • 模板引擎的基本抽象“块”及各种特殊构造。
  • 编译后的 C 代码形式及运行时要求。
  • 当前实现的不足和未设中央仓库的情况。
    重要细节:
  • 定义块需有“tp”变量,“finally”部分用于资源清理。
  • 模板是 yacc 语法,可方便添加特殊语法。
  • 运行时模板库需“write(2)”样函数和缓冲区,模板不分配内存。
  • 当前模板相关代码累计约 3600 行,实际代码量约 1K 多(含注释和空白)。
阅读 3
0 条评论