こんにちは、鈴木です。
「C言語からGaucheを使おう!」シリーズです。
前回の「C言語からGaucheを使おう! (4) Scm_EvalCStringでevalする」では C 文字列を eval する方法を調べました。
今回は Scm_Eval で eval する方法、つまり Gauche API で組み立てた S 式を eval する方法を調べます。
Scm_Eval 関数
前回同様、以下の Scheme プログラム相当の処理を行いたいと思います。
サンプルコードを書いてみます。
ポイントは expression という変数を初期化している部分です。
SCM_INTERN("+") で取得したシンボルと、SCM_MAKE_INT(10) と SCM_MAKE_INT(20) からなるリストを作成しています。
これが eval する S 式になります。
他の部分は前回とほとんど同じで、Scm_EvalCString の代わりに Scm_Eval を呼び出しています。
エラー処理は評価結果の取得方法は前回の Scm_EvalCString の場合と同じです。
実行すると以下の出力が得られます。(※「C言語からGaucheを使おう! (1) コンパイル環境を整える」で作成した Makefile を使用します)
まとめ
どこまで続けられるか心配しながら「C言語からGaucheを使おう!」シリーズを書いているのですが、今回は比較的楽に調べることが出来ました。
今回のポイントは SCM_INTERN() でシンボルを取得する部分でした(他は Scm_EvalCString と同じでした)。
Comments
expressionへの代入はScm_Initの後にする必要があるのではないでしょうか?
ご指摘ありがとうございます!
間違えていましたので、本文を修正しました。