自定义解析器,如何制作条件语句?

时间:2012-02-17 22:19:34

标签: php parsing

我有自己的模板引擎。它可以像这样转换变量:

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的情况下制作此类解析器?

1 个答案:

答案 0 :(得分:1)

我想要进行这样的评估,你需要实际实现一个完整的解析器/词法分析器。即将所有内容拆分为令牌,构建AST并解析它。当然,这取决于你的条件有多复杂。

但是如果你想做像(=array.value)这样的事情,你需要编写自己的迷你脚本语言。

虽然不完全与PHP / HTML相关,但我发现this非常有助于掌握编译器/解析器/词法分析器实际上在做什么。

或者正如你所提到的那样,只需使用php并评估它,这是最简单的方法。