2012-02-17 11 views
2

私は自分のテンプレートエンジンを持っています。今、私は条件付きstatamentを使用することができるだろうカスタムパーサー、条件文の作成方法

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

あなたのタグとして使用するHTML/Javascriptではかっこがあまりにも一般的です! – webbiedave

+0

これまでに何がありますか? – FtDRbwLXw6

+0

私はあなたがどのようにそれを行うか見るために[テンプレートエンジンがある](https://github.com/search?type=Everything&language=PHP&q=template&repo=&langOverride=&x=0&y=0&start_value=1)を見ることをお勧めします。 – Xeoncross

答えて

1

実際に完全なパーサ/レクサーを実装するのに必要なこの種の評価を行うと思います。私。すべてをトークンに分割し、ASTを構築して解析します。もちろん、それはあなたの条件がどれほど複雑であるかによって決まります。

しかし、(=array.value)のようなことをしたい場合は、独自のミニスクリプト言語を作成する必要があります。

正確にはPHP/HTMLに関連していませんが、私はthisがコンパイラ/パーサー/レクサーが実際に行っていることを把握するのに非常に役立つことがわかりました。

あなたが言ったように、ちょうどPHPを使用して評価するのが最も簡単な方法です。

関連する問題