16

Xtext、Spoofax、JetBrains の MPS などの言語ワークベンチ ツールを使用した経験のある人はいますか? 試してみようと思っていますが、さまざまなツールの適切な比較を見つけるのに苦労しています。それぞれの長所と短所は何ですか?

私は Python コードを生成する DSL を構築しようと考えているので、Python でこれらのツールのいずれかを使用したことがある人の意見を聞くことに特に興味があります (3 つすべてがかなり Java に焦点を当てているように見えますが、それはなぜでしょうか?)。DLS は主に私自身が使用するためのものなので、KISS で構文を定義してコード ジェネレーターを作成するよりも、本当にきれいな IDE を構築することには関心がありません。DLS の型チェック/静的解析を行う機能も非常に優れています。

道をずっと下って壁にぶつかり、すべてのコードが他のものに移植できない形式になっていることに気付くことを少し恐れています。これらのツールにはリスクがありますか? 特にMPSは少し怖いように思えます。私が理解しているように、テキストベースの構文を実際に生成するのではなく、AST専用のエディターを構築するからです。

4

6 に答える 6

18

Markus Voelter は、se-radio と Software ArchitekTOUR のポッドキャストで、これら 3 つを非常によく比較しています。基本的な考え方は、Xtext が最も使用されているため、最も安定して文書化されており、人気のある Eclipse プラットフォームとモデリング エコシステム (それを取り巻く EMF) に基づいているということです。一方、パーサー ベースであり、内部で ANTLR を使用するため、定義できる文法の種類が制限され、言語を簡単に組み合わせることができません。Spoofax は、これら 3 つの採用が最も少ないアカデミックな製品です。これもパーサー ベースですが、言語の組み合わせを可能にする独自のパーサー ジェネレーターを内部で使用します。Jetbrains MPS はプロジェクション ベースであるため、言語設計者に多くの自由を与え、言語の組み合わせを可能にします。*tもしっかりサポート。欠点は学習曲線かもしれません。これらのツールはどれも、コード ジェネレーターのターゲット言語として厳密に Java に焦点を合わせたものではありません。Xtext は、プレーン テキストである Xpand テンプレートを使用します。Spoofax でのコード生成がどのように機能するかはよくわかりません。MPS には、Java のサブセットと言われるベース言語がありますが、別の代替言語があります。私は Xtext の単純さと成熟度を理由に個人的に使用していますが、その設計によって与えられたこれらの強い制限により、Xtext は将来の保証のない選択肢になっています。

于 2011-01-02T09:29:33.630 に答える
7

2 週間前に同じケースで XText を選択しましたが、Spoofax については何も知りません。私の第一印象 - Xtext は非常にシンプルで生産的です。私は30分で最初の現実的な(しかし非常に単純な)プロジェクトを作成しました.graphvizドットグラフとhtmlレポートを生成しました. プレーン テキストのソース ファイルと宛先ファイルが好きなので、MPS は好きではありません。

于 2010-12-23T14:16:55.153 に答える
2

私はXtextを使って数日間実験しましたが、ツールは有望に見えますが、最終的にはEclipseエコシステムとの緊密な統合と、問題なく提供されるべきものを解決するためだけに経験しなければならない苦痛に気が進まなかったのです。ボックス: 実装したコード ジェネレーターのヘッドレス実行。実行しなければならない詳細については、こちらを参照してください ( Xtextの Web サイトではなく、ブログで適切に文書化されていません。つまり、次のリリースで問題が発生する可能性が非常に高いアドホック パッチです)。

この面で改善があったかどうかを確認するために、半年後にもう一度調べます。

于 2012-08-05T12:14:37.410 に答える