Vorgetragen von Sanaz Mostowfi Anna Polovets Mandy Neumann Gliederung Was ist DSL? Welche Arten von DSL gibt es? Vor – und Nachteile Werkzeuge zur Erstellung von DSLs XText Definition: • DSL (Domain Specific Language, auch Fachsprache) ist eine formale Sprache, die speziell für ein bestimmtes Problemfeld (die Domäne) entworfen und implementiert wird. Domänen: Domäne Arbeits-, Wissensgebiet, auf dem jemand besonders gut Bescheid weiß, auf dem er sich speziell und besonders intensiv betätigt ... (Duden Fremdwörterbuch, 1982) Jede Software wird für eine bestimmte Domäne entwickelt, z.B.: • Übersetzung von Programmiersprachen • Kommunikation in verteilten System • Grafische Benutzeroberflächen • Web-Shop • Buchhaltung • Waschmaschinensteuerung • ... Anforderungen an eine DSL: • die relevanten Aspekte einer Domäne (und möglichst nichts darüber hinaus)sollen sich kompakt beschreiben lassen • wenige spezialisierte Konzepte mit möglichst wenig syntaktischem Ballast • Domänenexperten ohne vertiefte Programmierkenntnisse sollen damit umgehen können (oder sie zumindest verstehen können) • Anlehnung an die in der Domäne üblichen Notationen DSL : Syntax Die konkrete Syntax einer DSL spezifiziert im Detail die Notation der Sprache. • legt fest, wie etwas mit der Sprache formuliert werden kann • bei textuellen DSLs mit regulären Ausdrücken und/oder EBNF spezifiziert Die abstrakte Syntax einer DSL spezifiziert die Struktur der Sprache. • legt fest, was mit der Sprache formuliert werden kann • zu einer abstrakten Syntax kann es mehrere konkrete Syntaxformen geben • Darstellung als abstrakter Syntaxgraph (ASG) DSL : Semantik Die statische Semantik regelt die Wohlgeformtheit von Formulierungen. • explizit in Form von Konsistenzregeln für abstrakte Syntaxgraphen • Metamodell einer DSL = abstrakte Syntax + statische Semantik Die dynamische Semantik regelt die Bedeutung von Formulierungen. • implizit in Form von Transformatoren für abstrakte Syntaxgraphen Arten von DSL Klassifizierung nach Notation: • grafisch • textuell Klassifizierung nach Implementierung: eigenständige Sprache (externe DSL) (Exkurs: Regulärer Ausdruck ) Bsp. reguläre Ausdrücke, SQL Einbettung in eine Universalsprache (Interne / eingebettete DSL ) Spezialisierung einer Universalsprache Bsp. UML2-Profil, XML - Schema Bsp. XML <!ELEMENT meinxml (xxx)*> <!ELEMENT xxx (#PCDATA)> <!ATTLIST xxx yyy (true|false) #REQUIRED > mit der DTD komforme XML-Datei DTD <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE meinxml SYSTEM "meinxml.dtd"> <meinxml> <xxx yyy="true"> Beliebiger Text, auch mit Entities </xxx> </meinxml> Vorteile von DSL weniger Redundanz deklarative Beschreibung eines Sachverhaltes weniger technischer Code bessere Lesbarkeit domänenspezifische, statische Validierung (nur externe DSLs) Nachteile Schwierigkeit der Findung des geeigneten Abstraktionsniveaus Hoher Anspruch an die Kompetenz der Entwickler der Sprache Aufwand für die Bestimmung der Anforderungen an die neue Sprache, der Definition von Syntax und Semantik sowie der Implementierung und Pflege der Tools, die zur Anwendung der Sprache benötigt werden Schwierigkeit, die langfristig benötigten Eigenschaften der Sprache zu identifizieren schleichenden Entwicklung der Sprache zu einer allgemeinen Programmiersprache Werkzeuge Bei internen DSLs wird die Definition, Nutzung und Auswertung durch bestehende Werkzeuge unterstützt (Compiler, XML-Parser, XMI- Interpereten) Bei externen DSLs müssen neue Werkzeuge erstellt werden. Zahlen und Fakten • „Language Development Framework“ für DSLs und GPLs • Entwickelt bei itemis • Teil des Eclipse-Modeling Projects (Stichwort MDSD) • In Java implementiert als Plugin oder im Bundle mit dem aktuellen Release • Besteht aus ca. 1,5 Mio. Zeilen Code, davon ca. 10% handgeschrieben, mit 130 Testsprachen • 9 aktive Entwickler • 2010 Gewinner des Eclipse Community Awards für das „most innovative project“ Wie funktioniert X-Text? Beispiel Grammatik-Definition mit built-in Tokens Entry Rule Weitere Parser-Regeln • Notation ist angelehnt an die Extended Backus-Naur Form (EBNF) Zuweisungsarten: •= der Typ wird durch die rechte Seite bestimmt • ?= der Typ ist Boolean • += der Typ ist eine Liste vom Typ der rechten Seite Kardinalitäten: •* Beliebig viele (0..n) •+ Mindestens Eins (1..n) •? Optional (0 oder 1) • Eins zu Eins Abbildung (1..1) Grammatik und DSL Grammatik DSL Features • Validierung • Content Assist • Code Completion • Quickfix • Syntax Highlighting • Outline Alles modifizierbar! Beispiel: Schach Quellenangaben und Links Voelter, Markus. Domänenspezifische Sprachen und Microsoft Oslo http://www.voelter.de/data/articles/VoelterCorneliusse n-OSLO.pdf Xtext Homepage: http://www.eclipse.org/Xtext/ bzw. http://xtext.itemis.com/ Fragen? Danke!