Kurs 01888 - Winter 2016/17
Domänenspezifische Sprachen
- SWS: 4 , WS 2015/16
- ECTS-Punkte: 10
- Dauer: 1 Semester
- Angebot: jedes Semester
- Übung: 2 SWS
- Prüfung: Klausur
Voraussetzungen
Fundierte Programmierkenntnisse, beispielsweise erworben durch die Bearbeitung der Kurse 01618 oder 01814, sind unabdingbar.
Außerdem sind gute Engischkenntnisse unverzichtbar, da der Basistext in englischer Sprache verfasst ist.
Studienmaterial: Kurstext (VU PDF)
Nächster geplanter Einsatz: SS 2016
Kurzbeschreibung
Domänenspezifische Sprachen sind formale Sprachen, die speziell für ein bestimmtes Anwendungsgebiet, die „Domäne“, entworfen wurden. Sie übernehmen häufig in der Domäne gebräuchliche Notationen und grenzen sich so von Allzwecksprachen wie beispielsweise Java oder UML ab.
Damit soll es Domänenexpertinnen leichter gemacht werden, sich in einer für ihre Zwecke nützlichen Sprache auszutauschen. Damit domänenspezifische Sprachen wirklich nützlich sind, bedürfen sie umfassender Werkzeugunterstützung, wie man sie von allgemeinen Programmier- und Modellierungssprachen her gewohnt ist. Da der Nutzerkreis domänenspezifischer Sprachen im allgemeinen aber kleiner ist, ist es für deren Erfolg wichtig, dass sich diese Werkzeuge mit wenig Aufwand herstellen lassen. Sog. Language workbenches, mit denen integrierte Entwicklungsumgebungen für formale Sprachen relativ leicht entwickelt werden können, gehören daher zur Entwicklung domänenspezifischer Sprachen fest dazu.
Dieser leittextgestützte Kurs befasst sich mit dem relativ jungen Thema des Entwurfs und der Werkzeugunterstützung domänenspezifischer Sprachen. Er basiert auf dem Buch DSL Engineering von Markus Voelter. Das Buch ist in verschiedenen Formen über http://dslbook.squarespace.com/ erhältlich und kann vor Belegung des Kurses zur Ansicht heruntergeladen werden (zu empfehlen!).
Kurseinheiten
Nr. | Titel | Aufgaben (VU PDF) | Lösungen (VU PDF) |
---|---|---|---|
Kurstext | |||
1 | Addition von succ-Termen in Prolog; DSL; Syntax | Übung 1 | Lösung 1 |
2 | Xtext; MPS; Transformation vs. Interpretation; Reuse, Embedding, Referencing und Extension; Paradigmen | Übung 2 | Lösung 2 |
3 | Übersetzung; Ableitungen; Rekursion; Left-factoring und kontextfreie Grammatik sowie EBNF | Übung 3 | Lösung 3 |
4 | Scoping und Constraints in Xtext und MPS; Eindeutige Variablennamen; Semantikanalyse; Arten der Typberechnung | Übung 4 | Lösung 4 |
5 | Interpreter mit Xtext, MPS und Prolog; Transformation und Generation in MPS und Xtext; Übersetzer mit Prolog | Übung 5 | Lösung 5 |
6 | IDE-Services in Xtext und MPS; Syntaxbaum und korrigierender Prolog-Parser | Übung 6 | Lösung 6 |
7 | Testen in Xtext und MPS; Parser, Debugger und Interpreter in Prolog; Spracherweiterungen und Mehrdeutigkeiten in MPS | Übung 7 | Lösung 7 |
Weitere Informationen:
- Informationsschreiben (PDF 170 KB)
- Markus Voelter: DSL Engineering