C++ で手軽に使えるテンプレートエンジン

Greasemetal 用のテンプレートエンジンがほしくなって、ちょっと探した範囲ではよさそうなのがなかったので自分で作ることに。とにかくクロスプラットフォームで組み込みが容易で、余計な機能をつけないのが目標。

とりあえず、

<% title | html %>
<% for (item in list) { %>
<%  item.name | html %>
<%  item.value | html %>
<%  if (item.can_delete) { %>...<% } %>
<% } %>

みたいな文法で。今日のところは、http://kazuho.31tools.com/svn/chromemonkey/trunk/nanoplate/ まで書いた。

lexeme_d に rule 渡す場合は型宣言が必要 *1 とか boost::spirit は奥が深すぎるな。今の nanoplate の定義だと、渡ってくる識別子の周囲に whitespace がついたままになるんだけど、なんでだろ。よくわかんないけどいいや ><

9/20 追記

とりあえず whitespace がつく問題については、leaf_node_d が greedy すぎるだろ的なパッチで回避しました (光成さんありがとうございます) 。