2014年7月9日 (水曜日)

09:13:03 # Life lisp interpreter書いてた. 最近はC++ でlisp interpreterを実装していました。 パーサーはboost::spirit で書いていて、再帰するといろいろと難しい。 一回一分近くかかるコンパイルで、コンパイルが通る型を探すというゲーム。 lambda とかがうごいたのでとりあえず満足。 再帰型にはrecursive_wrapper と make_recursive_variant の2つの方法があるけど、make_recursive_variantがうごけばそっちのほうがまともに動くっぽい。 エラーメッセージが基本的には意味不明なのでハマるとつらい。 あともう一個意味不明なハマり方したのは デバッグメッセージの出力で string output = hoge + numberのような感じに数字をstringに足してる箇所が(テンプレート経由で生成しているコードがこうなる場合が)あって、それが意味不明な文字列を表示する結果になっていた。 多分数字を文字列ポインタとして解釈しなおしてるのかな?

Junichi Uekawa

$Id: dancer-diary.el,v 1.94 2009/10/21 14:02:48 dancer Exp $