Xtext is an open-source framework for developing programming languages and domain-specific languages(DSLs). Unlike standard parser generators, Xtext not only generates a parser, but also a class model for theAbstract Syntax Tree and a fully featured, customizable Eclipse-based IDE.
The first version of Xtext was published in 2006 in the openArchitectureWare project. The last version released under the oAW project is version 4.3. Since the beginning of 2008, Xtext is developed at Eclipse under the Eclipse Modeling Project. Joining Eclipse’s annual simultaneous release, Xtext released version 0.7.0 (June 2009), 1.0 (June 2010), 2.0 (June 2011), 2.3 (June 2012), 2.5 (December 2013), 2.6 (May 2014) and 2.7 (September 2014). The framework is mainly developed by the German company Itemis.
To specify a language, a user has to write a grammar in Xtext’s grammar language. This grammar describes how an Ecore model is derived from a textual notation. From that definition, a code generator derives an ANTLR parser and the classes for the object model. Both can be used independently of Eclipse.
Into the bargain, Eclipse-based IDE integration is generated. That IDE offers e.g.
- Syntax coloring,
- Code completion,
- Static analysis,
- Outline view,
- Source-code navigation,
- Compare view,
- Code folding and
- Rename refactoring.
Xtext languages and the IDE are highly configurable, as the language infrastructure and the IDE are wired up using dependency injection and Guice. The default components can be easily replaced by binding customized ones instead.
Since version 2.0, Xtext facilitates the development of domain-specific languages for the Java Virtual Machine, referring to and compiling to Java artifacts with tight integration into Eclipse’s Java Development Toolkit. A reusable expression languages library enables rich behavior right within the DSL.
A code generator written in Xtend can be easily hooked in for any language. For JVM languages, it is enough to map the DSL concepts to Java artifacts to get holistic Java integration. An alternative interpreter is also available.
At the time of writing this article, the Xtext homepage lists around 40 commercial and non-commercial projects from several application domains using Xtext.
The general-purpose language Xtend is also built with Xtext.