問題タブ [mps]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mps - 変数の型を更新します (例: Foo a; -> Bar b) MPS はどのように x.field 参照を新しい型に更新しますか?
TL;DR: MPS 2017.2 がフィールド参照を更新しないことは知っています。問題は、それを正しく取得する方法です。したがって、DSL ユーザーは、単一の「変数型の変更」の場合にすべてのプログラムを再入力する必要がありません。
MPS の基本言語の例を次に示します。
inで更新するFoo
と、テストコードは同じようになりますBar
Foo a;
変数の型を に更新するとa
、メソッドBar
内のコードtest
は引き続き のフィールドを参照しますFoo
。もちろん、check model
壊れた参照を特定しますが、MPS でそのような DSL の問題を解決するためにどのような方法が期待されるのでしょうか?
「更新時」スクリプトはすべての「フィールド使用法」を見つけて、それに応じてモデルを更新する必要がありますか? 「フィールド タイプの更新」を禁止し、ユーザーに確認を求める必要がありますか? (例えば、ある種のリファクタリングまたは何らかの意図)
私は MPS で 61131 ST 言語を構築しているので、「静的型付き言語」の種類の DSL を調べています。
mps - インライン テンプレートからノードのプロパティ/子にアクセスする
ノードの概念に基づいてtemplate switch
、そのノードのプロパティや子を使用してランタイム オブジェクトを作成したい場所があります。各ケースの右側はインライン テンプレートです。そのインライン テンプレートからノードのプロパティ/子にアクセスするにはどうすればよいですか? より具体的には、以下のスクリーンショットでは、line()
andメソッドへの引数を、対応するandノードrectangle()
から抽出する必要があります。LineCommand
Rectangle
Alt+Enterメニューは「プロパティ マクロの追加」を提供しないことに注意してください。
MPS 2018.1.5 を使用しています。