Fork me on GitHub

Language Engineering For Everyone!

Eclipse 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.
Learn more...

Xtext in Eclipse

Why Xtext™?

Easy To Learn

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.

High Quality

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.

Multi Platform

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.

Performance

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™.

Easy JVM languages

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.

Continuous Integration

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.

Features

Build the Language You Want!

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.

Compile to Whatever You Want!

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.

Highly Customizable

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.

Single Sourcing

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.

Incremental Compiler

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.

Compatible with Graphical Editors

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.

Editor Features By Platform

LSP Eclipse Web Browser
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