Language Workbench
description
Transcript of Language Workbench
![Page 1: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/1.jpg)
Language Workbench!
Aktuelle Themen der Softwaretechnologie
Prof. Dr. Reichenbach
Arthur Rehm Steven Cardoso
Vortrag von:
Betreut von:
[1]
![Page 2: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/2.jpg)
Index !2
KontextDomain Specific Language (DSL) Language Workbench (LW)
MPSSpoofaxXtext
Auswertung und VergleichFazit und Ausblick
![Page 3: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/3.jpg)
Kontext !3
Was Wie
Spezifikation Implementierung
Verifizierung
Synthese
sehr teuer (Komplexitätstheorie)
![Page 4: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/4.jpg)
Kontext !4
Was Wie
Spezifikation Implementierung
Verifizierung
Synthese
DSL
![Page 5: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/5.jpg)
GPLs: Allzweckwerkzeuge
!5
[3]
Einleitung
![Page 6: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/6.jpg)
DSLs: Ein Werkzeug für einen Task
!6
[4]
Einleitung
![Page 7: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/7.jpg)
• Domain Specific Language
• Auf eine „Domäne“ zugeschnitten
• Hohe Abstraktion
• Wunsch: Soll von Domänenexperten (nicht-Programmierern) verwendet werden
• z.B. mittels einfacher Syntax
!7
DSL
![Page 8: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/8.jpg)
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
!8
DSL
![Page 9: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/9.jpg)
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.
!9
DSL
![Page 10: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/10.jpg)
Vorteile!
- Effizient - wenn gut umgesetzt
- Steile Lernkurve
- Reduktion von Kommunikationsaufwänden
Nachteile!
- Entwicklungsaufwand:
‣ Konzeption (Schema)
‣ Parser, Interpreter, etc. (Generator)
‣ Komfortable Entwicklungsumgebung (Editor)
➡ Language Workbench
!10
DSL
![Page 11: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/11.jpg)
Language Workbench
• Tool Sammlung zum Definieren und Erweitern von Sprachen
• IDE für externe DSLs
!11
Martin Fowler
![Page 12: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/12.jpg)
Language Workbench
• Syntax
• Semantik
• Editor
!12
![Page 13: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/13.jpg)
Language Workbench !13
Syntax Semantik Editor
Text Grafik Tabular
Grammatik Diagramme Tabellen / Zellen
![Page 14: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/14.jpg)
Language Workbench !14
Syntax Semantik Editor
Translation
Model zu Text Model zu Model
![Page 15: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/15.jpg)
Language Workbench !15
Syntax Semantik Editor
Editor Mode
Frei-Text Projektional
Syntax Service Semantik Service
Highlighting Folding Completion Diff
Referenzen auflösen Semantic completion Refactoring Error Marking
obligatorischoptional
Legende
![Page 16: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/16.jpg)
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.
!16
![Page 17: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/17.jpg)
Language Workbench Challenge !17
LWC - 2013: DSL für Formulare
![Page 18: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/18.jpg)
• Ziel: Simple DSL zum definieren von Formularen
• Eingabefelder
• Radiobuttons
• Checkboxes
• Transformation zu HTML
!18
LW Vergleich
![Page 19: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/19.jpg)
MPS
• Projektionale Editoren
• MPS arbeitet direkt am Abstrakten Syntaxbaum
!19
Meta Programming System
![Page 20: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/20.jpg)
!20
MPS Idee hinter projektionalen Editoren
!
• Jeder Node im AST ist eine Projektion im MPS Editor
[2]
![Page 21: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/21.jpg)
MPS
1. Structure
• Concept (Model)
2. Editor
3. Generator
• Model-zu-Model (M2M)
• Model-zu-Text (M2T)
!21
Workflow: DSLs in MPS
![Page 22: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/22.jpg)
MPS !22
structure editor generator
![Page 23: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/23.jpg)
MPS !23
structure editor generator
![Page 24: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/24.jpg)
MPS !24
structure editor generator
![Page 25: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/25.jpg)
MPS !25
structure editor generator
![Page 26: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/26.jpg)
!26
Poll DSL in ActionMPS
![Page 27: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/27.jpg)
!27
Poll DSL Ergebnis
M2T
MPS
![Page 28: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/28.jpg)
MPS: Anwendung
• LW auf Basis MPS für Embedded Systems
• C Erweiterungen + eigene Erweiterungen
!28
mbeddr
![Page 29: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/29.jpg)
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
!29
![Page 30: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/30.jpg)
Grammatik in SDF definieren
!30
Spoofax
![Page 31: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/31.jpg)
Eclipse als Editor
!31
Spoofax
![Page 32: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/32.jpg)
Transformationen in Stratego definieren
!32
Spoofax
![Page 33: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/33.jpg)
Spoofax• Implementierbare IDE Features
• Code folding, Outline view
• Syntax highlighting
• Code completion
• Error checking und Tests
• Refactoring (rename, extract, usw.)
!33
![Page 34: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/34.jpg)
Xtext
• IDE auf Eclipse Basis
• EMF Metamodell und konkrete Syntax in einer Grammatik
• Transformationen mit Kontrollstrukturen
• Generiert Java-Klassen aus Grammatik
!34
![Page 35: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/35.jpg)
Grammatik in Xtext definieren
!35
Xtext
![Page 36: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/36.jpg)
Editor starten
!36
Xtext
![Page 37: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/37.jpg)
Eigenständiges Eclipse
!37
Xtext
![Page 38: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/38.jpg)
Transformationen in Xtend definieren
!38
Xtext
![Page 39: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/39.jpg)
Xtext
• Steile Lernkuve für Java-Entwickler
• Weniger formale schreibweise
• Viel Java(-ähnlicher) Code —> lesbarer
• Auch hier: viele IDE Features implementiert
!39
![Page 40: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/40.jpg)
Vergleich LW
• MPS
• Spoofax
• Xtext
!40
![Page 41: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/41.jpg)
Auswertung• MPS
• projektionale LW
• Spoofax
• Stratego als Base Language für verschiedene Tasks
• Wissenschaftlicher Hintergrund
➡ Gut durchdachte Konzepte
• Xtext
• Eigenständige IDE zum Arbeiten
• Sehr ausgereift
!41
![Page 42: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/42.jpg)
Fazit
• Language Workbenches sind ein mächtiges Entwicklungswerkzeug
• Für wiederkehrende und sicherheitskritische Aufgaben
• Mit LW lassen sich Domain Sprachen effizient entwerfen und erweitern
!42
![Page 43: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/43.jpg)
Ausblick
• Language Workbenches werden in Zukunft häufiger eingesetzt
• Große Chance - die Kommunikation zwischen Entwicklern und Domain Experten zu verbessern!
!43
![Page 44: Language Workbench](https://reader033.fdocuments.us/reader033/viewer/2022042602/5598b14a1a28ab0f158b4765/html5/thumbnails/44.jpg)
• [1] http://www.istockphoto.com/stock-photo-6864190-old-workbench.php?st=cd622ef
• [2] http://www.voelter.de/data/presentations/DSLDesign-Models2013.pdf
• [3] http://www.istockphoto.com/stock-photo-9153291-multipurpose-knife-isolated.php?st=1484c3a
• [4] Rainer Sturm / pixelio.de
• [5] http://www.projectcartoon.com
Bildquellen: