問題タブ [xtext]
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.
code-generation - 2 つのファイルの Xtext 文法
製品版では外部レクサーを使用するため、端末を別のファイルに入れたいと考えています。カスタム端末定義の使用に対する回答に従ってみました。だから私はmypackage/Tokens.xtext
ファイルとmypackage/MyDsl.xtext
含むファイルを持っています
生成は正常に機能しますが、存在しない を呼び出すため、コンパイルされないMyDslStandaloneSetupGenerated
in が作成されます。また、存在しないクラスを参照するものも生成します。私の質問は基本的に次のとおりです。別の文法ファイルがある場合、それを使用できるようにするために他に何をすべきですか?src-gen
mypackage.TokensStandaloneSetup.doSetup()
src-gen/mypackage/services/MyDslGrammarAccess
TokensGrammarAccess
ant - Xtext プロジェクト用の Ant ビルド ファイルの作成
XText プロジェクト用の build.xml ファイルを生成して、それらの jar を作成したいと考えています。File -> Export -> Generate Ant Build files でやってみました。このコマンドを実行して build.xml を生成しようとすると、「ソースにビルド サイクルがあります ....」というサイクル検出が表示され、サイクルは src -> src-gen -> src です。Ant buildfile は、これが修正されるまでソースをコンパイルしません。
src -> src-gen -> src 循環依存関係の問題を解決するために、文法プラグインで customBuildCallbacks.xml というファイルを作成することについて読みました ( http://www.eclipse.org/forums/index.php/t/ 198855 )、しかし、それを使用する方法がわからない. customBuildCallbacks.xml を使用する場合、File -> Export -> Generate Ant Build files またはPDE Tools -> Create Ant Build Fileを使用して Ant スクリプトを生成する必要がありますか?
src -> src-gen -> src サイクルを取り除き、XText プロジェクトの build.xml を生成する方法は何ですか?
eclipse - キャッシュされた情報を Eclipse エディターまたはリソースに添付するにはどうすればよいですか?
Eclipse の Xtext フレームワークを使用して DSL を開発しています。
コンテンツ アシスト/コード補完のために、文字列のリストを生成する高価なプロセスがあります。
そのプロセスの結果をキャッシュするにはどうすればよいですか?
長い話: Groovy スクリプトとの私の DSL インターフェイス。スクリプトは、DSL の特定の場所で提供するメソッドを提供します。これは、正規表現を使用してスクリプトのメソッドを解析する場合でも、かなり遅いです。そこで、スクリプト解析の結果をキャッシュしたいと思います。
私の分析によると、分析コードは検証中 (常にエディターを持っているとは限りません)、およびユーザーが DSL ファイルを開くときに呼び出されます。
検証がいつ終了したかを知る方法はありません (コードはプライベート メソッドにあり、Xtext 開発者はそれを変更することを拒否しています)。しかし、これは Eclipse 用のエディター/コンパイラーを作成する際の一般的な問題であるに違いないと考えています。他の人はこの問題をどのように解決しますか? Eclipse フレームワークにキャッシング サービスはありますか?
java - Xtextバリデーターでコンテキスト情報にアクセスする方法は?
私は次のようなことをするXtext文法を持っています:
ruleName
名前ブロックで宣言されていることを検証したいと思います。JavaValidator
次のようにルール名自体にアクセスできます。
names
しかし、からフィールドにアクセスできませんModel
。どうすればいいJavaValidator
ですか?
xtext - Xtext文法で動的変数を処理する
私のDSL変数は動的であり、値が最初に割り当てられたときに作成されます。したがって、これは有効なコードです。
私の素朴なアプローチは、このようなルールを持つことです
「次の選択肢は決して一致しない:2」と文句を言って、それは機能しません。生成されたAntlrデバッグ文法には次のルールが含まれているため、理解できます。
(の秘訣は、相互参照に関する質問[Identifier|ID]
への回答から来ています。完全に理解せずにコピーしただけです:)また、Xbase文法でどのように解決されるかを調べようとしました。
相互参照のみを使用しているようで、新しい変数宣言がどのように処理されるかわかりません。
antlr - ANTLR文法からアクションを取り除くと、解析アルゴリズムが変更されます
私は文法を持っていますFoo.xtext
(ここに含めるには複雑すぎます)。Xtextはそれから生成さInternalFoo.g
れます。 いくつかの調整の後、DebugInternalFoo.g
アクションなしで同じものであると主張するものも生成されます。今、私はANTLRでアクションを直接取り除きます
私がそれらをチェックするとき、私は3つの文法が同じように振る舞うことを期待します。しかし、これが私が経験したことです
InternalFoo.g
-エラー、ルールの割り当てにLL(*)以外の決定がありますDebugInternalFoo.g
-問題ありません、うまく解析しますStripped.g
-ルール割り当て時の警告。複数の選択肢を使用して決定を一致させることができます。正しく解析できません。
文法がアクションの有無にかかわらずテキストを異なる方法で解析する可能性はありますか?それとも、アクションリムーバーツールのバグですか?(問題のルールには構文述語があり、それらがないと、実際にはLL(*)以外の決定が行われます。)
アップデート:
問題の原因を部分的に見つけました。問題のルールはこんな感じでした
Antlrでストリッピングするとアクションが削除されましたが、空のグループが残りました。
デバッグ文法を生成すると、アクションとその周囲の空のグループの両方が削除されます。
したがって、学んだ教訓は次のとおりです。構文述語の前の空のグループは、まったく同じではありません。
java - ボクシングはパフォーマンスの問題を引き起こしますか?
私は、Java にコンパイルする言語を作成するプロジェクトに取り組んでいます。私たちが使用しているフレームワーク (xtext) は、生成されたコードでボクシングを多用しています。具体的には、次のようなステートメントがある場合:
コンパイルされたコードは次のようになります。
現在、私が取り組んでいるプロジェクトでは、特定の基本的な二項演算が非常に一般的になる特定の状況があります (特にインクリメントと比較)。
私の質問は、これはパフォーマンスの面で問題になるのでしょうか、それとも JIT (または同様にインテリジェントな JVM 機能) が単に何が起こっているのかを認識してすべてを修正するのでしょうか?
投稿する前に読んでください: 「気にしないで、読めるようにしてください」という回答を得ることには興味がありません。このコードは生成されたものであり、生成されたコードの読みやすさは気にしません。私が気にかけているのは、これによるパフォーマンスへの重大な影響を受けないことです。
ありがとう
validation - XtextでEnumリテラルの大文字と小文字を区別しないようにする方法
Xtext 文法ファイルで次のように EnumRule を定義しました。
enum MySpec_directionEnum:
left='"left"' | right='"right"' | none='"none"';
このルールでは、許可される列挙値は"left", "right" and "none"
(すべて小文字) です。どのような場合でもこれらの値を許可できるようにしたい (大文字と小文字を区別しない)。たとえば、値なども許可したいと思います"left" or "Left" or "LEFT" or "LeFt"
。
しかし、MySpec_directionEnum列挙型の値を大文字と小文字を区別せず、文法ファイル内のすべての列挙型にする必要はありません。文法や何らかの検証によって可能ですか?
java - ParserRule のエントリがコンマで区切られていることを確認します
Xtext 文法ファイルに次の ParserRule を記述しました。
Xtext エディターで、"my" のエントリが最後のものを除いてコンマで終わるようにしたいと考えています。次のエントリの例のように、"suffix" と "prefix" の間にコンマがない場合はエラーが発生します。
解決策: 私が考えた解決策の 1 つは、文法を次のように変更することです。
しかし、これが好ましい方法であるかどうかはわかりません。検証または他のよりエレガントな方法でこれを達成することは可能ですか?
autocomplete - コンテンツ アシスト ポップアップを表示せずに単一の提案を自動的に挿入する Xtext エディター
私の Xtext エディターでは、デフォルトで単一の提案を自動的に挿入できるようにしたいと考えています。要するに、Ctrl-Space を押したときにコンテンツ アシストに表示される一致する選択肢が 1 つしかない場合に、オート コンプリートが必要です。
Eclipse (Java エディター) では、これはWindows -> 設定からJava -> エディター-> コンテンツ アシストページに移動し、「単一の提案を自動的に挿入する」チェックボックスを選択して構成できます。