Xtext - Werkzeugunterstützung für bestehende sowie eigene Sprachen einfach entwickeln (Di, 17.3.)

Stefan Oehme, Moritz Eysholdt
Itemis AG

Eine Vielzahl von formalen Sprachen haben ihre Daseinsberechtigung, da ihre Eigenschaften oft speziell zugeschnitten sind auf ihre Anwendungsdomäne, das Vorwissen ihrer Anwender und eventuell ein oder mehrere Zielplatformen.

Mögliche Motivationen für das Verwenden einer bestimmten - oder sogar dem Designen einer eigenen Sprache können sein:
- Erhöhung der Produktivität der Anwender durch ein hohes, direkt auf die Anwendungsdomäne zugeschnittenes Abstraktionsniveau
- Senkung der Einstiegshürde durch das Verwenden einer den Anwendern bereits vertrauten Syntax
- Vermeiden von Anwenderfehlern durch Vermeidung unnötiger Freiheitsgrade in der Sprache
- Reduzierung der benötigten Vorkenntnisse von Anwenden durch Spezialisierung auf deren Domäne und dem Weglassen von nicht benötigten Konzepten
- Frühes erkennen von Anwenderfehlern durch statische Analysierbarkeit von Dokumenten
- Unterstützung mehrerer Zielplatformen durch Abstraktion über selbige
- Forcierung eines Denkmodells
- Forcierung einer gewünschten Softwarearchitektur

Unabhängig von der Wahl der Sprache ist der Bedarf für gute Werkzeugunterstützung: Genau so, wie heutzutage von einer Textverarbeitung eine Rechtschreibkorrektur erwartet wird, darf von einer Entwicklungsumgebung exakte Syntaxprüfung, statische Validierung, context-sensitive Vervollständigung und vieles Mehr erwartet werden.

Xtext hat sich als de­facto Standard zur Erstellung von Werkzeugunterstützung für formale, textuelle Sprachen etabliert. Zur Werkzeugunterstützung zählen neben einem “intelligenten” Editor mit IDE­-Integration, Syntax­-Highlighting, Content Assist, live­Validierung etc. Generatoren und Interpreter. Hierbei hat Xtext den nötigen Arbeitsaufwand zur Erstellung selbiger derartig gesenkt, dass eigene Sprachen in vorher undenkbaren Szenarien praktikabel werden.

Teilnehmer dieses Tutorials werden in Vorträgen die relevanten Konzepte kennenlernen sowie eigene Erfahrung mit Xtext anhand von Übungsaufgaben sammeln. Ziel des Tutorials ist es, die Teilnehmer zur eigenständigen Entwicklung von domänenspezifischen Sprachen und Codegeneratoren zu befähigen.

Zentrale Themenbereiche sind: 
• Überblick über Xtext
• Die Xtext Grammar Sprache • Integration mit EMF
• Überblick über Xtexts Architektur
• Modell-­Validierung
• Scoping: Linking und mehr
• Code Completion
• Template Proposals
• Formatting (Pretty Printing)
• Codegenerierung mit Xtend
• Erstellung von ASTs: Actions in der Grammatik 
• UI hooks (Quickfixes, Coloring, Outline, etc.)
• Allgemeine Strategien zur Problemlösung
• Ausblick