我有自己的模板引擎。它可以像这样转换变量:
html html html (=array.value) html html
有这样的东西(使用正则表达式):
html html html $array['value'] html html
现在我可以使用条件化身。类似的东西:
html html html
(if (condition))
(=array.value)
(endif)
html html html
如何在不使用eval
的情况下制作此类解析器?
答案 0 :(得分:1)
我想要进行这样的评估,你需要实际实现一个完整的解析器/词法分析器。即将所有内容拆分为令牌,构建AST并解析它。当然,这取决于你的条件有多复杂。
但是如果你想做像(=array.value)
这样的事情,你需要编写自己的迷你脚本语言。
虽然不完全与PHP / HTML相关,但我发现this非常有助于掌握编译器/解析器/词法分析器实际上在做什么。
或者正如你所提到的那样,只需使用php并评估它,这是最简单的方法。