Xtext は、プログラミング言語やドメイン固有言語(DSL)を開発するためのオープンソースのソフトウェアフレームワークです。標準的なパーサージェネレータとは異なり、Xtext はパーサーだけでなく、抽象構文木のためのクラスモデルも生成し、さらにフル機能のカスタマイズ可能な Eclipse ベースの IDE も提供します。[ 2 ]
XtextはEclipseプロジェクトにおいてEclipseモデリングフレームワークプロジェクトの一部として開発されています。Eclipseパブリックライセンスの下でライセンスされています。[ 3 ]
Xtextの最初のバージョンは、2006年にopenArchitectureWareプロジェクトで公開されました。oAWプロジェクトでリリースされた最後のバージョンはバージョン4.3でした。2008年初頭から、XtextはEclipse Modeling Projectの下でEclipseで開発されています。 [ 4 ]
Eclipseの年次同時リリースに合わせて、Xtextはバージョン0.7.0(2009年6月)、1.0(2010年6月)、2.0(2011年6月)、2.3(2012年6月)、2.5(2013年12月)、2.6(2014年5月)、2.7(2014年9月)をリリースした。このフレームワークは主にドイツのItemis社によって開発されている。[ 5 ]
言語を指定するには、開発者はXtextの文法言語で文法を記述する必要があります。この文法は、テキスト表記からEcoreモデルがどのように生成されるかを記述します。この定義に基づいて、コードジェネレーターはANTLRパーサーとオブジェクトモデルのクラスを生成します。これらはどちらもEclipseとは独立して使用できます。
Xtextには、EclipseベースのIDEとうまく統合できる機能が含まれています。
Xtext言語とIDEは、依存性注入とGoogle Guiceを使用して言語インフラストラクチャとIDEが連携しているため、高度な設定が可能です。デフォルトのコンポーネントは、カスタマイズされたコンポーネントをバインドすることで簡単に置き換えることができます。
バージョン2.0以降、XtextはJava仮想マシン向けのドメイン固有言語の開発を容易にし、EclipseのJava開発ツールキットとの緊密な統合により、Javaアーティファクトを参照およびコンパイルできるようになりました。再利用可能な式言語ライブラリにより、DSL内で豊富な動作が可能になります。
Xtendで記述されたコードジェネレータは、あらゆる言語に対応可能です。JVM言語の場合、DSLの概念をJavaアーティファクトにマッピングするだけで、包括的なJava統合を実現できます。代替のインタープリタも利用可能です。
この記事を執筆している時点で、Xtextのホームページには、Xtextを使用しているさまざまなアプリケーション分野の商用および非商用プロジェクトが約40件掲載されていました。[ 6 ]