問題タブ [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 - 概念のプロパティ/参照に追加の属性を付加する MPS の方法
エンティティのタイプを表す一連の概念があります。
サンプル コンセプト:
Loop
with children loopCount: IntegerProperty[1]
HttpRequest
with children url: StringProperty[1]
、hostName: StringProperty[1]
どちらの概念も概念を拡張AbstractTestElement
します (名前、コメントなどの共通のプロパティを定義します)。
次のようにbaseLanguageに生成されLoop
たい:HttpRequest
ループ:
HttpRequest:
私が望むのは、この共通のロジックをカバーする共通のジェネレーター テンプレートを用意してsetProperty
、さまざまな種類のテスト要素で繰り返されないようにすることです。テスト要素に固有の処理が必要なプロパティもありますが、プロパティが 1 対 1 で変換される場合が多いため、
質問は次のとおりです。Loop/HttpRequest の概念構成にメタデータを添付するにはどうすればよいですか? それを行うMPSの慣用的な方法は何ですか?
1) に入れる名前として「プロパティの名前」を使用できますがnew XXXProperty
、理想的にはHttpRequest.HOST_PROPERTY_NAME
一種の参照を使用するため、「プロパティの名前」では不十分です。
2)おそらく注釈を発明し、概念のプロパティに注釈を付ける可能性があります.MPS自体はそのアプローチを使用していないようです.
3) (ab) 概念の動作を使用して返す<quotation new StringProperty("url", node.url) >
と、さらにぎこちなく見えます。
java - JDK依存関係が見つかりません - JetBrains MPS
私はMPSに関する最初のチュートリアルをhttps://youtu.be/Uq4o4TCLhCQ?t=5m5sで見ています。彼は依存関係 (JDK) の追加について話していますが、手順に従って追加しJDK
ても表示されません。彼のリストと同じように私のリストに。
そのリストから他のランダムなものを追加しようとしましJDK
たが、予想どおり、役に立ちません。
依存関係として JDK を追加するにはどうすればよいですか?
dsl - MPS で Language-Solution を実行するときのエラー
jetbrains MPS を使用して DSL を開発しています。使い道はわかりませんが、デザイン部分でここまで成功しました。ソリューション ノードを右クリックして「実行」することは可能ですが、言語が実行可能 (executing.util を拡張) であると仮定します。さらに、個別に開発された jar をライブラリとして使用します (ジェネレーターによって使用されます)。
テストする新しいプロジェクトをビルドします。できるだけ単純に、ジェネレーターにいくつかのノードとループを追加しました。エラーが発生し、元に戻すことはできません。
私が見る限り、エラーにはいくつかの原因が考えられます。
- 依存関係 (MPS では扱いにくい)
- 私の瓶
- 間違ったキャッシュファイルなど
「実行」を実行すると、次のエラーが発生します。
これを経験した人はいますか?役立つ追加情報があれば教えてください。
mps - MPS を使用して 1 つの DSL から異なるテキスト言語を生成する
いくつかの異なる言語でコードを生成する方法を探しています。良いスタートは、ObjC、Java for Android、Unity、および JavaScript (Cordova) で、繰り返しコード用です。現在、私は各言語でコードを手動で何度も書いています。私は MPS を見ていて、1 つの DSL を開発し、そこから言語ごとに異なるコードを生成することを考えています。
私の質問は、MPS では言語ごとに異なる TextGen を作成できるのですか?
dsl - JIT Compiler/Translator として別のアプリケーション内で JetBrains MPS またはその一部を使用することは可能ですか?
JetBrains MPS は、他のアプリケーション内で使用できる JIT コンパイラを提供しますか? オン スクリプト言語を使用したレガシー アプリケーションがあります。このスクリプト言語はお客様にとって非常に使いにくいため、新しい DSL を提供したいと考えています。
問題は、Jetbrains MPS を使用して DSL を設計し、MPS JITCompiler/Translator を使用してそれを Java に変換したり、ユーザーがソフトウェアにスクリプトを記述した後に何にでも変換したりできるかということです。
mps - MPS エラー: モデルが見つかりません: java.awt、java.io など
mpscmidstorms プロジェクト (MPS 1.5 で作成) を現在の MPS 3.2 で開きたいと思いました。それを開いた後、「モデルが見つかりません:java.awt」/ java.io、java.langなどの大量のエラーが発生します。
問題はどこだ?私のプロジェクトまたは私の MPS 構成で?
ありがとう、アキム
java - libGDX と Jetbrains MPS を組み合わせる
また、この質問をLibGDX フォーラムに投稿しました。
ちょっと、そこ!私の論文では、画像の外観を記述する DSL を書いています。これらの画像は、DSL 入力に従って libGDX によって描画されます。現在、jetbrains MPS (v. 3.0) と最新の libGDX バージョンが使用されています。私の実際の問題は、MPS 言語と java-libGDX-picture-generator の間の相互接続をどのように設計するかです。
Jetbrains MPS は広く普及しているわけではありませんが、私の問題はそれを知らなくても解決できると確信しています。DSL では、ジェネレーターは実行可能なクラスを構築するように設計されています (public static void main)。ここでは、画像生成を開始するためのいくつかのメソッド呼び出しが行われます。generatePicture(200px, 150px, "blue") と考えてください (はるかに複雑ですが、私の問題では重要ではないと思います)。
libGDX には、いくつかのランチャー (特に DesktopLauncher) があります。これらはプログラムのメイン クラスであり、開始されたものです。現時点では、ランチャーは別のクラス (私は「メイン」と名付けました) を開始し、メソッド呼び出しは次のとおりです。libGDX プログラムは jar アーティファクトを介して MPS に挿入されるため、そのメソッドを DSL で使用できます。
私のDSLコードが私のlibGDXプログラムを開始するための良い解決策は何でしょうか? これらすべてのメソッド呼び出しを行い、ランチャーを開始する必要があります。ランチャーを初期化して呼び出しを行うための追加のクラスについて考えたり、DSL からの呼び出しを jar クラスに挿入しようとしたりしました。そこに匹敵する問題や、まさにこの問題に直面した人はいますか? 何らかの形で機能させると確信していますが、素晴らしくスムーズな解決策に興味があります。
編集
問題は、PictureGenerator 内で libGDX を実行するために、DesktopLauncher とその構成が必要であると確信していることです。
編集 2 - 最初のアプローチ
これも MPS 関連です。MPSジェネレーターでPictureクラスを生成しようと思ったのですが、Launcherクラスを実行します。これはどういうわけか可能ですか?ソリューションからクラスを実行するには、IMainClass を実装する必要がありますが、Launcher では実装できませんでした。ランチャーは常に同じように見えます。生成されたクラスとは別のクラスを実行する機能はありますか?
または libGDX-site: ランチャーと Picture-class をマージして構成を挿入することは可能ですか?
debugging - Mps は、言語定義にブレークポイントを設定します
言語の作成を正しくデバッグするにはどうすればよいですか?
特に、スコープ制約をテストし、ノードの内容を確認したいと考えています。制約ファイルにブレークポイントを設定できますが、トリガーされることはありません。同じことが印刷メッセージにも当てはまります。