Xtext is a framework for the development of domain-specific languages and other textual programming languages. It is tightly integrated with the Eclipse Modeling Framework (EMF) and leverages the Eclipse Platform in order to provide a language-specific integrated development environment (IDE).
In contrast to common parser generators (like e.g. JavaCC or ANTLR), Xtext derives much more than just a parser and lexical analyzer (lexer) from an input grammar. The grammar language is used to describe and generate:
an incremental, ANTLR 3 based parser and lexer to read your models from text,
Ecore models (optional),
a serializer to write your models back to text,
a linker, to establish cross links between model elements,
an implementation of the EMF Resource interface with full support for loading and saving EMF models, and
an integration of the language into your Eclipse IDE.
Some of the IDE features, that are either derived from the grammar or easily implementable, are
The generated artifacts are wired up through Google Guice, a dependency injection framework which makes it easy to exchange certain functionality in a non-invasive manner.
Although Xtext aims at supporting fast iterative development of domain-specific languages, it can be used to implement IDEs for general purpose programming languages as well.