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 research 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.
Xtext™ can build full-featured text editors for both general-purpose and domain-specific languages. In the background it uses the LL(*) parser generator of ANTLR, allowing to cover a wide range of syntaxes. Xtext™ editors have already been implemented for JavaScript, VHDL, Xtend, and many other languages.
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. GEF, 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.
LSP | |||
---|---|---|---|
Syntax Coloring | |||
Semantic Coloring | |||
Error Checking | |||
Auto-Completion | |||
Formatting | |||
Hover Information | |||
Mark Occurrences | |||
Go To Declaration | |||
Rename Refactoring | |||
Debugging | |||
Toggle Comments | |||
Outline / Structure View | |||
Quick Fix Proposals | |||
Find References | |||
Call Hierarchy | |||
Type Hierarchy | |||
Folding |