モジュールとルール

今度は、モジュールを考慮しながら変数/ルールテーブルを再設計しています。
変数に関してはモジュール毎にテーブルを持つだけで済みそうなのですが、ルールは少々複雑です。

  1. ユーザー定義のルールと組み込みルールがある
  2. 組み込みルールIMPORTにより、他のモジュールに別名が定義される
  3. インポートされたモジュールはインポート元のモジュール環境内で実行されるので、モジュール名を覚えておく必要がある

2.は別名というよりコピーに近く、インポート時点でのルール定義が保持されるようです。

module A
{
    rule my_rule
    {
        ECHO 1 ;
    }
}

# モジュールAのmy_ruleを同名で現在のモジュールにインポート
IMPORT A : my_rule : $(__name__) : my_rule ;

my_rule ; # 「1」を出力

module A
{
    # ルールの再定義
    rule my_rule
    {
        ECHO 2 ;
    }
}

my_rule ; # 「1」を出力、「2」ではない

普通、こんなことしないと思いますけどね。