問題タブ [xtend]
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.
java - XTextレジスタのグローバル変数
XTextを使用して、ゲートからjape言語のツールサポートを構築したいと思います。Japeは基本的に注釈上のパターン言語です。これらの注釈に遭遇したときに実行するアクションを宣言します。問題は、アクションをJavaで記述できることです。しばらくの間jdtで苦労した後、解析されたコンテンツの一部でjdtを機能させることができませんでした。そこで私はあきらめて、XBlockExpressionでxbaseサポートを使用することにしました。
問題は、アクションで使用できるいくつかの変数があることです。たとえば、バインドしてからパターンから注釈を取得できる変数バインディングがあります。だから私の質問は、xblockスコープにそれらの変数を登録する方法です。ドキュメントを3時間読んだ後、私はまだどこにも近づいていません。
これが私の問題の最小限の文法です
次のような内容のファイルを解析したい:
私は自分のスコーププロバイダーを接続することから始めましたが、それはあまり役に立ちませんでした。プロバイダーの実装は次のとおりです。
どんな助けでもありがたいです
for-loop - XTendFor-Loopサポートと範囲サポートの追加
whileループを使用せずに、Xtendで次のことを表現するための優れた方法を見つけることができないようです。
ですから、私の質問には2つの部分があると思います。
- 上記を行うためのより良い方法はありますか?私は彼らの文書に有望なものを見ませんでした
- この言語が持つ機能の大部分は、Xtendライブラリの拡張機能です(そしてそれらは素晴らしいです!)。
range()
私が知らないPythonの機能はありますか?
私は自分自身を転がしてしまい、次のようなものを手に入れました:
eclipse - Xtext または XTend を使用して、既存の EMF モデルのコード ジェネレーターをビルドします。
最終的に EMF モデル、EMF メタ モデル (自分で定義したメタ モデル) のインスタンスを出力するモデルの変換シーケンスがあります。
これからコードを生成する良い方法を探しています。もちろん、XPand があります。以前はそれを他のプロジェクトで使用していましたが、XText や XTend が適切な代替手段であるかどうかは疑問です (非常に活発に開発されているため)。
言い換えれば、私は EMF モデルを持っていますが、そのためのエディターは必要ありません (そのため、その目的のために XText は必要ありません) が、コード ジェネレーターを構築する必要があります。その部分だけXTextを使えないでしょうか?
また、XPand または Acceleo を使用することをお勧めしますか?
どんなアドバイスも素晴らしいでしょう。
java - xtext でのクラス定義へのアクセス
あるオブジェクトから別のオブジェクトへのタイプセーフな変換を行うための DSL を作成しようとしています。
結果は次のようになります。
そのためのコードを生成したいだけですが、既に定義したクラスにアクセスできません。その理由は、デフォルトのコンバーターを使用できるようにするためです。パラメータの型を取得できる場合にのみ、デフォルト コンバータの実装を選択できます。
eclipse - Eclipse Xtendで「java.lang.NoClassDefFoundError:org / eclipse / xtext / xbase / lib/Pair」を取得する
なぜこのようなエラーが発生し続けるのかわかりませんが、しばらくの間、問題に頭を悩ませてきました。
基本的に、プロジェクトを実行するときにXtendライブラリを使用することはできません。Eclipseは問題なくビルドされますが、実行時にXtextのメソッドの1つへの参照を持つクラスを実行すると、NoClassDefinedErrorが発生します。
たとえば、これは問題なくコンパイルされます。var redirects = newHashMap( "/index.html"-> "/");
ただし、Xtextのペアを参照しているため、実行されません。
ビルドの自動化と関係があるように感じます。マニフェストか何かかもしれませんが、私はEclipse / Java(およびXtend)にかなり慣れていないので、問題がどこにあるのかを知るのは難しいです。
私はJavaプロジェクトをGoogleAppEngine Webアプリケーションプロジェクトとして開始し、その後Xtend機能を追加しました。
誰かアイデアはありますか?
xmi - XTend で EMF モデル インスタンスをロードする
入力モデルとメタ モデルが既にある XTend でコード ジェネレーターを構築しています。つまり、ATL を使用して XTend コード ジェネレーターの入力モデルを生成します (変換シーケンスの一部として、一度にではなく、徐々に抽象化レベルを下げます。これが、xtext を使用して構文を作成しない理由です)。 .
明確にするために、コード ジェネレーターの入力モデルは XMI 形式のファイルであり、xtext プロジェクトの文法ではありません (それを使用していません)。そして、これが私に問題/混乱を引き起こしていると思います。
既存のモデルを使用して新しい XText プロジェクトを作成し、.text ファイルを右クリックして as として実行し、アーティファクトを生成してから、mwe2 ファイルに対して同じことを行いました。
次のステップは何ですか?コード ジェネレーターを起動するにはどうすればよいですか? すべての例は、XText を使用して DSL を作成する POV からのものです。EMF メタ モデルと、その XMI ベースのインスタンスがあります。XTend を使用してそれをさらに処理するにはどうすればよいですか?
チュートリアルへのヒントやポインタは役に立ちます。
解決:
解決策は、私の受け入れられた回答で Sven が提案したとおりでしたが、genmodel を使用してメタ モデルから Java アーティファクトを生成する必要があることにも注意してください。このリンクはその方法を示しています: http://www.vogella.com/articles/EclipseEMF/article.html、セクション 4 を参照してください。
xtext - xtendの文字列に改行文字を埋め込む方法は?
xtend の JvmModelinferrer でクラス フィールドを生成しています。
最初の exp.text が
生成されたフィールドを次のようにしたいと思います。
代わりに、次のようになります。
改行文字をまったく置き換えないかのように、次のようになります。
もちろん、これはコンパイルされません。問題は、xtend が Java 文字列を評価しているように思われるため、Java では "\n" が "\n" にコンパイルされますが、xtend では "n" に評価されます。
\n を評価しないように xtend を取得して、生成された Java 文字列に保存するにはどうすればよいですか?
code-generation - XTend で別のテンプレート式を呼び出す
別のテンプレート式からテンプレート式メソッドを呼び出すことについて質問があります。
以下の例はうまくいきませんでした。展開せず、呼び出された場所でコードを「印刷」します。ResourceGenerator().generate(resource)
このコードを変更して、呼び出された場所で結果を出力するにはどうすればよいですか? ResourceGenerator().generate(resource)
自体がテンプレート式であることに注意してください。
私の質問が明確であることを願っています。例は素晴らしいでしょう!(繰り返しますが、ResourceGenerator().generate は CharSequence を返します)。
eclipse - デバッグ:Xtendコードの代わりに生成されたJavaコードを使用する
Xtendコードをデバッグするとき、すべての中間変数を含む生成されたJavaコードを見たいことがあります。ただし、このコード内にブレークポイントを設定しても、デバッガーは代わりにXtendコードを表示します。この状況でJavaコードに切り替えることは可能ですか?
xtext - Xtext (Xtend を使用した M2M) と GMF を使用してダイアグラムを作成するには? (初心者)
私は Eclipse を使い始めましたが、まだ初心者です。だから、ここから助けてもらいたいのです。Xtext を使用して DSL を読み取ります。そして、GMF で既に定義した図でインスタンスを表示したいと思います。しかし、Xtext の ecore(MFilesystem) と GMF の ecore(Filesystem) は異なります。そこで、Xtend を使用してモデルを変更し、EObject(Filesystem) を作成します。しかし、GMF が Xtent のリソースを使用して図を作成する方法がわかりません。ここに私の問題を示します:
1: xtext(Grammmar) で ecore を定義しました。
2: GMF で ecore を定義しました
3: Xtext のランタイムを実行してみます
DSL ファイル (test.filesystem) からダイアグラムを作成します。
4: それから私はこの問題を抱えています
5: Xtend を使って Xtext のモデルを変更してみます
6:しかし、それは動作しません。私は何か間違ったことをしたと思います。myfilesystem
ですから、GMF がダイアグラムを作成するために使用する方法を知りたいのです。
ありがとう。