TL;DR: MPS 2017.2 がフィールド参照を更新しないことは知っています。問題は、それを正しく取得する方法です。したがって、DSL ユーザーは、単一の「変数型の変更」の場合にすべてのプログラムを再入力する必要がありません。
MPS の基本言語の例を次に示します。
public class Foo {
public int x;
public int y;
}
public class Bar {
public long x;
public long z;
}
public void test() {
Foo a;
a.x = 1; // "x" points to the field of class Foo
a.y = 1;
}
inで更新するFoo
と、テストコードは同じようになりますBar
Foo a;
public void test() {
Bar a;
a.x = 1; // "x" still points to the field of class Foo
a.y = 1; // Of course this reference is now invalid, however MPS does not underline that
}
変数の型を に更新するとa
、メソッドBar
内のコードtest
は引き続き のフィールドを参照しますFoo
。もちろん、check model
壊れた参照を特定しますが、MPS でそのような DSL の問題を解決するためにどのような方法が期待されるのでしょうか?
「更新時」スクリプトはすべての「フィールド使用法」を見つけて、それに応じてモデルを更新する必要がありますか? 「フィールド タイプの更新」を禁止し、ユーザーに確認を求める必要がありますか? (例えば、ある種のリファクタリングまたは何らかの意図)
私は MPS で 61131 ST 言語を構築しているので、「静的型付き言語」の種類の DSL を調べています。