質問

Xtext、Spoofax、JetbrainsのMPなどの言語ワークベンチツールの操作経験がある人はいますか?私は試してみたいと思っており、さまざまなツールの良い比較を見つけるのに苦労しています。それぞれの長所と短所は何ですか?

私はPythonコードを生成するDSLを構築したいと思っているので、これらのツールの1つをPythonで使用した人からの連絡が特に興味があります(3つすべてがかなりJavaに焦点を当てているように見えます...なぜですか?)。 DLSSは主に私自身の使用のためですので、私は、構文を定義してコードジェネレーターを書くためにキスであることについて私がするよりも、本当にきれいなIDEを構築することをあまり気にしません。 DLSSの静的分析をチェック /実行する機能もかなりクールです。

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

役に立ちましたか?

解決

Markus Voelterは、SE-RadioとSoftware Architektourのポッドキャストでこれらの3つを比較して、かなり良い仕事をしています。基本的なアイデアは、XTExtが最も使用されているため、最も安定して文書化されており、人気のあるEclipseプラットフォームとモデリングエコシステム - それを取り巻くEMFに基づいています。一方、それはパーサーベースであり、内部的にANTLRを使用します。つまり、定義できる文法の種類は限られており、言語を簡単に組み合わせることができません。 Spoofaxは、これら3つの採用が少ない学術製品です。また、パーサーベースですが、言語の組み合わせを可能にする独自のパーサージェネレーターを内部的に使用します。 Jetbrains MPSは予測ベースであり、言語デザイナーに多くの自由を与え、言語の組み合わせを許可します。 *Tにも堅実なサポートがあります。欠点は学習曲線かもしれません。これらのツールはどれも、コードジェネレーターのターゲット言語として厳密に焦点を当てていません。 XTEXTは、XPANDテンプレートを使用します。これはプレーンテキストです。 Spoofaxのコード生成がどのように機能するかは本当にわかりません。 MPSには基本言語があり、これはJavaのサブセットと言われていますが、さまざまな選択肢があります。私は個人的にXTEXTを単純であるために使用していますが、その設計によって与えられたこれらの強い制限により、それはそれが非常に将来の証拠の選択ではありません。

他のヒント

私は2週間前に同じケースでXtextを選択しましたが、Spoofaxについては何も知りません。私の第一印象-XTEXTは非常にシンプルで生産的です。 30分で最初のRealife(しかし非常に簡単な)プロジェクトを作成しました。GraphVizDotグラフとHTMLレポートを生成しました。私はプレーンテキストソースと目的地ファイルを好むので、私はMPが好きではありません。

この種のことをするための他のシステムがあります。目標がツールの構築である場合、必ずしも統合ツールを使用してIDEに目を向ける必要はありません。場合によっては、IDE統合ではなくユーティリティに焦点を当てたより良いツールを見つけることができます

純粋なプログラム変換ツールのいずれかを考慮してください。

  • TXL(実用的、単一パラダイム)
  • Stratego(Eclipseに移植される前のSpoofax)
  • ラスカル(研究、多くの点で非常にうまく設計)
  • DMSソフトウェアリエンジニアリングツールキット(たまたま私のものです;コマーシャル; C ++を含むヘビーデューティDSL/従来のランゲージ分析と変換を行うために使用)

これらはすべて、DSLを定義し、それらを変換するための優れたメカニズムを提供します。

本当に重要なのは、「解析後の生活」を実行するためのサポート機械です。

おそらく今日、異なる言語ワークベンチを比較するのに最適な場所は http://www.languageworkbench.net/ そしてそこに http://www.languageworkbench.net/past-editions/ 一連の言語ワークベンチが同様の種類のタスクをどのように実装するかを示します:特定のドメインのDSL。

MarkusVölterの本をご覧ください。これら3つのテクノロジーを非常に包括的に比較します。http://dslbook.org

Xtextは非常によく維持されていますが、これは問題がないという意味ではありません。タイプシステム、スコーピング、および生成の実行を取得することは、宣伝ほど簡単ではありません。

Spoofaxはスキャナーがありません(文法構成を簡素化)。それほどよく文書化されていませんが、完全に思えます。

MPSは予測です。言語構成のためのプロと編集のための詐欺。 ASTの複数の編集者をサポートし、すぐに素敵な図エディターをサポートします。基本言語のドキュメントはそれほど良くありません。タイプシステム、スコーピング、チェックは非常によく処理されています。モデル変換へのモデルは、ソルバーによって行われます。それを使用している私の同僚は、モデルからテキスト言語について不満を言います。 (私の意見M2Mもそれほど直感的ではありませんでした。)

数年前、MicrosoftにはOsloプロジェクトがありました。マルマー、特に象限は非常に有望でした。モデルを表、形式、テキスト、または図で表すことができました。しかし、突然彼らはプロジェクトをキャンセルしました(そしておそらくそれに取り組んでいる人々を撃ちました)

私は数日間実験しました Xtext そして、このツールは約束しているように見えますが、私は最終的にとの厳しい統合によって先送りされました 日食 生態系と痛みは、箱から出して与えられるべきものを解決するためだけに通過する必要があります。見る ここ いくつかの細かい人にとっては、それを通過する必要があります(そして、それは適切に文書化されていません Xtext Webサイトですが、むしろブログで、次のリリースで非常によく壊れる可能性のあるアドホックパッチを意味します)。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top