問題タブ [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.

0 投票する
1 に答える
102 参照

xtext - XFeatureCall が実際に何かを参照しているかどうかを確認する方法

ast をスキャンしているときに、XFeatureCall 型の要素を解決できるかどうかを確認したいと考えています。

具体例:

そんなこと知ってる

ただし、XFeatureCall "z" のみが true になるはずです (検索しているまだ見つかっていない述語を適用する場合)。

これまでのところ、私はパターンを見つけることができませんでした。ただし、解決できないすべての変数が次の条件を満たす場合を除きます。

fc は XFeatureCall を意味します

しかし、これでは十分ではありません。「System.out.println」も見えるからです。

注: ルート AST 要素から取得した TreeIterator を使用します

必要に応じて、XbaseCompiler がどのようにそれを行うかを調べますが、私はそうしないことを好みます :)

0 投票する
1 に答える
55 参照

xtext - 同じリソースから生成されたこれら 2 つの Eobjects の違いは何ですか?

(私にとって) 同じことを意味するはずの 2 つの異なる EObject がある理由がわかりません

それらには異なる情報が含まれているようで、その理由がわかりません。同じソースコード/リソース)。

script1 が推論元に渡されます。なぜscript2ではないのですか?

0 投票する
2 に答える
1317 参照

dsl - XTEND DomainmodelGenerator.xtend の For-Loop インデックス制御 (XTEXT コード生成プロジェクト)

私は eclipse.org/Xtext/documentation のチュートリアルに取り組み、これらのサンプルを拡張していきました。Domainmodel.xtext サンプルを使用して、チュートリアルで説明されているように、エンティティごとに Java クラスファイルを生成します。

DSL は任意の数の機能 (別名クラス プロパティ) を指定します。

DomainmodelGenerator.xtend に、JAVA クラス コンストラクターを生成するコードを追加しました。XTEND-Forloop はすべての引数を循環します - 次のようになります:

問題 この最後のパラメータにはまだコンマが出力されています。XTEND で loopindex を制御して、ジェネレーターが正当な JAVA コードを発行できるようにするにはどうすればよいですか?

0 投票する
1 に答える
650 参照

java - Xtext QuickFix API の Xtend ラムダ式のオーバーロード

Xtend を使用して、Xtext 言語の Eclipse UI プラグイン用のカスタム QuickFixes を作成しています。アイデアは、のメソッドを拡張org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProviderして使用することです。acceptorg.eclipse.xtext.ui.editor.quickfix.IssueResolutionAcceptor

acceptには、次のようなオーバーロードされたシグネチャがいくつかあります。

  • void accept(Issue issue, String label, String description, String image, IModification modification)
  • void accept(Issue issue, String label, String description, String image, ISemanticModification semanticModification)

Xtend のラムダ式の構文を使用すると、これらのシグネチャの最初のものを簡単に使用できます。

Xtend コンパイラは、次の Java コードを生成します。

ここで、文字列だけでなく、基礎となる EMF モデルにアクセスできるように、ISemanticModification代わりにを使用する 2 つ目の QuickFix を書きたいと思います。IModificationただし、使用したいメソッドのオーバーロードを Xtend コンパイラに伝えるのに苦労しています。

IModificationXtend は、常に an の代わりに anを渡したいと考えISemanticModification、コンパイルされた Java コードでエラーを生成します。これは、2 つのメソッドのapplyシグネチャがIModification異なりIModificationContext、.ISemanticModificationEObject

どのオーバーロードを使用するかを Xtend に伝えるにはどうすればよいですか? 私の知る限り、Xtend で無名オブジェクトを作成することはできないため、別の方法で をIssueResolutionAcceptor.accept渡す必要がありますISemanticModification

0 投票する
2 に答える
1097 参照

java - 現在の作業ディレクトリのフルパスを取得する方法を拡張する

ユーザーが相対パスを入力できるようにする文法を作成しました。(例: "../../temp/out/path"

ユーザーからの入力に基づいて絶対パスを取得し、現在の作業ディレクトリの絶対パスを取得して、入力パスが有効かどうかも確認できるようにすることを目的とする場合があります。

絶対パスを取得するために使用できるライブラリまたは組み込み関数はありますか? C の _getcwd() 関数に似たもの。

0 投票する
1 に答える
1566 参照

java - xtext-xbase-xtend ツールチェーンを使用して単純なドメイン固有言語を作成する

これは、ドメイン固有言語 (DSL) を作成するためのクラス プロジェクトです。考慮すべき空想は何もありません。私自身は、このプロジェクトを、関連する手順を学ぶための純粋な演習として設定しました。

関連するファイル (添付のコード ファイルを含む)::

1) Xtext の文法 (entities.xtext)

2) xtend の JvmModelInferrer (entitiesJvmModelInferrer.xtend)

3) 新しい言語のソース ファイル (Animal.xentities および Main.xentities)。.xentities 拡張子は、この DSL プロジェクトのファイルに固有のものです。- Main.xentities

-生成された Main.java

-Animal.xentities

-生成された Animal.java コード

私の目的:: 関連する関数と属性を持つクラスを定義できるように、基本的なワークフロー インフラストラクチャを開発したいと考えています。それから私はそれらを実行できるようになりたいです。

私の問題:: 「選択にメインタイプが含まれていません」というメッセージが表示され続けます。

私の試み: エンティティ (クラス) 'Main.xentities' で、'op main()' 関数を作成します。生成された .java コードでは、これは public static String main() 関数として表示されます。これはうまくいくと思いました。しかし、そうではありませんでした。何が欠けているのかわからない。どんな助けでも大歓迎です。

0 投票する
1 に答える
270 参照

eclipse - クイックフィックスによる xtext AST のソート

クイックフィックスを使用してノードの順序を変更しようとしましたが、何かが間違っています。xtend の私のコードは次のとおりです。

コンソールに例外はスローされません。デバッグで UnsupportedOperationException がスローされ、xtext によって処理されることがわかりました。EList は不変だと思います。では、AST をソートするにはどうすればよいでしょうか。

(生成されたコードは次のとおりです:)

ありがとう!

0 投票する
1 に答える
2751 参照

generics - Xtend: 文字列リストの作成

List<String>Xtendで型を持つ変数を作成するにはどうすればよいですか?

動作しません。の型はadd()伝播されません。

実行時に例外を発生させます。

Xtend で特定のタイプのリストを作成するにはどうすればよいですか?