SourceForgeのgs.exeについて
ダウンロードページ
せっかく公開してるので紹介しておきます。
Boost.Testを使ったテストプログラムなのですが、ついでに少し普通のインタプリタみたいなことができるようにしてあります。
コンソールで言語の動作を確認したり、スクリプトがどうパースされてるかをXMLで出力したりできます。
gs --eval "1.+ 2.* 3"
とすると9が出力されます。(演算子の優先順位の概念が無いので7にはなりません。)
gs --parse_into_xml "1.+ 2.* 3"
とすると、
Running 1 test case... full?:1 err msg: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE parsetree SYSTEM "parsetree.dtd">1 + 2 * 3
となります。
"Running 1 test case..."はBoost.Testによる出力で、"full?:1"はパースできたかどうかを0 or 1で示します。エラーがあると"err msg:"以降に表示されます。
パース部分のソースは、gs/parse_into_tree.ippがBoost.Spiritを使った文字列をツリーに変換する部分、gs/parse.cppがそのツリーを式クラス(gs::expr)に変換する部分です。