C言語からGaucheを使おう! (5) Scm_Evalでevalする

こんにちは、鈴木です。

 

「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 are closed, but you can leave a trackback: Trackback URL.

Comments

  • 通りすがり  On 2014年5月11日 at 20:25

    expressionへの代入はScm_Initの後にする必要があるのではないでしょうか?

    • 鈴木 圭  On 2014年5月12日 at 23:45

      ご指摘ありがとうございます!
      間違えていましたので、本文を修正しました。