属性評価器

属性評価器、というか簡単な属性評価器生成系を作ってしまうのが早道かなあと思いつつ。いろいろな構文木変形を試したくなるので、いろいろな属性評価もしたくなりそうなので。

とはいうものの、あまりにも一般化したものにする必要はなくて、とりあえずSqueakコンパイラ、またはTweakコンパイラが生成する構文木で良いです。原理的には、「レシーバーとセレクターと引数リスト」という構文しかないわけですが、終端記号の種類としてはリテラルとか変数とかがあり、ブロックは微妙に毛色が違うのでブロックと普通のオブジェクトもちょっと違います。

ちょっと毛色が違うのは、これらを構文解析、意味解析した結果の構文木のノードは、ParseNodeというクラスを根とするクラス階層内のインスタンスになっているということと、あとはBNFで普通にパーズした構文木ではなくて、繰り返されている要素が可変長のリストとして組み立てられている、ということでしょうか。クラス階層があるので、親クラスに定義された属性は子クラスでも使いたい、という問題があるのと、可変長リストなので属性規則を書くのがややこしい、というところでしょうか。

というわけで、識者の方(AS君、君です)、「オブジェクト指向で、可変長リストを考慮した属性評価器」の良いリファレンスがあれば教えてください。参考にしたいと思います。