[Gauche-devel-jp] 埋め込み言語の設計

Back to archive index

木谷 洋 ryute****@mac*****
2005年 6月 17日 (金) 16:55:49 JST


木谷です。

以前書いたObjective-Cブリッジのコア部分がほぼ完成し、 
syntaxを詰めているところなんですが、二点ほど参考意見を頂けないで 
しょうか。


1. ブリッジのメソッド呼び出し部のC側インターフェースは

  (objc-send receiver selector-string (args ...))

となっており、それを使ってObjective-Cのこういう

   [[obj msg] msg1: arg1 msg2: arg2]

入れ子の文法をマクロでエミュレートするものとします。つまり

(objc-send (objc-send obj "msg" '())
       "msg1:msg2:" (list arg1 arg2))

のように展開されるものとします。

これは性質上相互再帰で引数解釈とフォーム構築をいったりきたりする 
のが自然だと考えられます。で、letrec-syntaxの場合なら二つ 
ルールを導入して

(letrec-syntax
    ((objc-arg ...)
     (objc-form ...))
   (objc-form FORM))

のようにできるんですが、これをdefine-syntaxでうまく扱う方 
法はあるでしょうか。現状の実装はletrec-syntaxをdefine- 
macroでラップするという怪しい設計でして、まあ動いてはいるんです 
がどうにも不満が残ります(quote埋め込みですし)


2. R6RSで単なる括弧扱いされるらしい、という[]は 
Gauche的にはどうなるんでしょうか。ObjC部だけ[]で記述 
すると埋め込みらしくて見栄えがするんで、今は気にせず使ってるんで 
すが。


---
木谷 洋





Gauche-devel-jp メーリングリストの案内
Back to archive index