Language Workbenches sind Tools zur effizienten Erstellung von externen domänenspezifische Sprache.
Seminar: Aktuelle Themen der Softwaretechnologie
von Prof. Dr. Christoph Reichenbach
an der Goethe-Universität Frankfurt am Main
7. !7
DSL
•
Domain Specific Language
•
Auf eine „Domäne“ zugeschnitten
•
Hohe Abstraktion
•
Wunsch: Soll von Domänenexperten (nichtProgrammierern) verwendet werden
•
z.B. mittels einfacher Syntax
8. !8
DSL
konkreter Syntax!
-
Repräsentation des abstrakten Syntax
abstrakter Syntax!
-
interne Darstellung der Syntax für weitere
Prozesse
-
z.B. Anwendung von Generatoren auf den
AST
9. !9
DSL
Interne DSL!
-
Vollwertige IDE bereits vorhanden
-
An Syntax des Hosts gebunden
-
„Laien“ können durch Funktionsumfang „erschlagen“ werden
Externe DSL!
-
Syntax frei wählbar, an „Laien“ anpassbar
-
Jedoch:
-
keine IDE
-
keine Interpreter usw.
10. !10
DSL
Vorteile!
-
Effizient - wenn gut umgesetzt
-
Steile Lernkurve
-
Reduktion von Kommunikationsaufwänden
Nachteile!
-
Entwicklungsaufwand:
‣
Konzeption (Schema)
‣
Parser, Interpreter, etc. (Generator)
‣
Komfortable Entwicklungsumgebung (Editor)
➡ Language
Workbench
16. !16
Language Workbench Challenge
•
Wettbewerb, um aktuelle Language Workbenches
(LW) untereinander zu vergleichen
•
Seit 2011 wird jedes Jahr eine Aufgabe gestellt, die
mit einem LW zu lösen ist.
29. !29
Spoofax
•
IDE auf Eclipse Basis
•
Dateien auf Textbasis
•
Stratego als mächtiges Werkzeug (Analyse,
Transformation und Generierung von Code)
•
Strategien und dynamische Regeln
•
Konkrete und abstrakte Syntax kombiniert
•
Sprachen können kombiniert werden
34. !34
Xtext
•
IDE auf Eclipse Basis
•
EMF Metamodell und konkrete Syntax in einer
Grammatik
•
Transformationen mit Kontrollstrukturen
•
Generiert Java-Klassen aus Grammatik
39. !39
Xtext
•
Steile Lernkuve für Java-Entwickler
•
•
•
Weniger formale schreibweise
Viel Java(-ähnlicher) Code —> lesbarer
Auch hier: viele IDE Features implementiert
42. !42
Fazit
•
Language Workbenches sind ein mächtiges
Entwicklungswerkzeug
•
Für wiederkehrende und sicherheitskritische
Aufgaben
•
Mit LW lassen sich Domain Sprachen effizient
entwerfen und erweitern