整数の四則演算を実装
あとはBooleanと比較式と制御文ができればTiny Compilerのレベルに到達できるかな。
構文木を手で書いていると、静的グローバル変数ともTLSとも異なる、オブジェクト群の塊単位で使用できる変数が欲しいと思ってきました。インスタンス毎に参照を持たせたら、書くのも面倒臭いし(真の理由)メモリも食いそう(後づけの理由)じゃないですか。
Javaの、親クラスの参照を暗黙に持つ、ってのは近い気がしますが、関連クラスをひとつのファイルに全部書かないといけないのでちょっと欲しいのとは違いますね…。
データはヒープにとって、TLSにそこへのポインタ持たせて、構文木の生成は全部そのスレッドの中で行う事にして、コンストラクタでTLSからインスタンス毎のフィールドへポインタを代入すれば近いのはできそう。そのためだけにスレッド作るのは嫌ですが…。
万が一構文として作るとしたらこんな感じですかね?(Delphi風)
contextvar Binder: TDataBinder; {コンテキスト変数} ... type TNode = class uses Binder; {使用宣言} ... end; ... with Binder = CurrentGroupBinder do {ここで作るインスタンス群はCurrentGroupBinderを使え} begin ... NewNode := TNode.Create; {NewNodeはCurrentGroupBinderに結びつけられる} ... end;
甘すぎる砂糖以外のなにものでもなさそうです…。