Xtext is a framework for development of programming languages
and domain-specific languages. With Xtext you define your language using a powerful grammar language. As a result you get a full infrastructure,
including parser, linker, typechecker, compiler as well as editing support for Eclipse, any editor that supports the Language Server Protocol and your favorite web browser.
Xtext is designed to onboard you smoothly. Simple languages are easily done within minutes. Yet Xtext is flexible enough to build fully-featured, statically-typed programming languages.
The core framework has been in development for eight years and is used throughout the world in many reasearch and industry projects and even commercial products.
Whether you are targeting developers or domain experts, you will be able to provide a dedicated smart editor. Eclipse, any editor that supports the Language Server Protocol and various browser editors are supported. Have a look at our platform comparison chart.
We know that tools need to be fast in order to be helpful. That is why we spend considerable effort on optimization in every release. You can also fine-tune your language if needed, thanks to the configurability of Xtext.
You can build languages for any target platform with Xtext. If you target the JVM you can reuse Xbase, a statically typed expression language. Linking against Java types, code generation and debugging work out of the box.
Xtext supports both Gradle and Maven to build your language and use it in downstream projects. For Gradle builds, you even get incremental compilation of your language files.
You define the target format to which your language is compiled. No matter if it's Java, C, XML, comma-separated values, or even a binary format, Xtext does not limit your choice. And in combination with Xtend writing a compiler becomes easier than ever before.
The default behavior of Xtext is optimized to cover a wide range of languages and use cases. However, every language has characteristics that must be reflected in the IDE. Therefore Xtext allows to insert custom behavior for every single feature by replacing the default implementation. This is done through dependency injection based on Google Guice.
The grammar definition language of Xtext is not just for the parser. Many IDE features provided by Xtext adapt to your language automatically, so whenever you change your grammar definition, the behavior of the text editor is updated without any further code changes. This includes complex features such as handling of cross-references, code completion, navigation, syntax coloring, validation, and more.
Xtext is built to scale, so no matter if you have a few source files written in your language or hundreds of them, the IDE remains responsive and reacts smoothly to any text change. This is realized through an incremental compiler that maintains an index of the available source files for fast look-up of language elements.
You can combine the text-based formats created with Xtext with many graphical editing frameworks, e.g. Sirius or Graphiti. Xtext offers this flexibility by supporting EMF as common data layer. An Xtext language can be used as storage format for another primary editor, and you can even embed text editors inside a graphical editor.
|Go To Declaration|
|Outline / Structure View|
|Quick Fix Proposals|