xtext2 を採用して xtext1.x から xtext2.0 に移行しようとする人はいますか? xtext2 は多くの新しい魅力的な機能をもたらしているようです。A Reusable Expression Language や Xtend: A Code Generation Language など。Xtext ワークベンチと名前変更機能に対して、多くのパフォーマンス強化が行われました。では、xtext2 についての経験を教えてくれる人はいますか? おそらくこれは少し早い質問です。しかし、私はただ待って見てください。
3 に答える
あまり複雑ではない既存の言語を Xtext 1 から Xtext 2 に更新し、Xtext2 と XBase を使用して新しい言語を開発しようとしました。エラーと警告の場所は整数ではなくリテラルを使用して指定する必要があるため、コード生成ステップを再実行する必要があり、手書きのバリデータも変更する必要がありました。例えば
error("File does not exist with path: " + path, fileReference, ViatraTestDslPackage.FILE__PATH);
に置き換えられます
error("File does not exist with path: " + path, ViatraTestDslPackage.Literals.FILE__PATH);
同様に、いくつかの新機能を組み込むためにワークフローも変更する必要があります。アウトライン API は異なるフラグメント (outline.OutlineTreeProviderFragment と Outline.QuickOutlineFragment) を使用し、名前の変更と比較をサポートするために、新しいフラグメントが追加されます (refactoring.RefactorElementNameFragment と compare. CompareFragment)。
私の XBase の実験では、すでにある種の式をサポートしている言語にそれを追加することは、古い式を XBase 式に置き換える必要があるため (または少なくともそれらを利用できるように変更する必要があるため)、労働集約的である可能性があるようです。そうしないと、コード ジェネレーターまたはインタープリターで 2 種類の式サポートを維持する必要があります。
私の回答を締めくくるには、単純な Xtext 1.0 エディターを使用していて、自動生成された機能にほとんど依存していた場合、Xtext 2.0 への移行は簡単で推奨されるように思えます。ただし、手動で記述されたコードで多くのことをカスタマイズした場合は、注意してください。移行は簡単ではない可能性があり、実際の移行ガイドは見つかりませんでした.
http://www.eclipse.org/Xtext/documentation/2_0_0/213-migrating-from-1.0.php#migrating_from_1_0_x_5_4
この便利なリンクを見つけるだけです。
また、特にシリアル化モジュールでいくつかの問題に遭遇します。幸いなことに、mwe2 ファイルにはバージョン 1.0 のシリアル化が残っています。これを使用して、バージョン 2.0 のシリアル化モジュールを使用する際の問題を修正します。理由がわからない..
もう 1 つの問題は、xtext 検証に奇妙なバグがあることです。それは常に ClassCastException について不平を言います。String から QualifiedName エラーへのキャスト。
最近のリリース日を考えると、まだ時期尚早です。チームは先月 (2011 年 6 月) に
デモキャンプで XTend2 を発表/デモしました。