193
Semantik von visuellen Sprachen: Interpretersemantik
11. Dezember 2012
Überblick Interpreter- und Compilersemantik: Gemeinsamkeiten und
Unterschiede Zwei Beispiele für Interpretersemantik:
Einfache Statecharts (hierarchische Zustandsautomaten): Sequentielle Interpretation
Statecharts mit Parallelausführungen: Zustände mit parallelen Regionen Teilweise parallele Ausführung
Amalgamierte Graphtransformation Parallele Ausführung von Multiregeln Synchronisation an Kernregeln
Unterschiede zwischen Graphen und EMF-Modellen Containment-Beziehung
Taentzer Visuelle Sprachen 194
Taentzer Visuelle Sprachen 195
Sprachaspekte
UML Notation
UML Metamodell
Konkrete Syntax
Abstrakte Syntax
ParsierenEditieren
Layout
CompilerSemantik
Interpret.Sem.
SemantikSemantik Semantischer Bereich
Taentzer Visuelle Sprachen 196
Semantik: 2 Wege zur Definition
Abstrakte SyntaxAbstrakte Syntax
Abstrakte Syntaxregelnspezifizieren einen abstraktenInterpreter für die Sprache.
Der Interpreter ist für die gesamteSprache definiert und kann auf alle korrekten Syntaxgraphen angewendet werden.
Jedes Sprachelement (Modell) wird in einen semantischen Bereich übersetzt.
Die Zielstruktur (Modell, Programm) ist für jedes Sprach-element (Modell) spezifisch.
OderInterpreter Compiler
Taentzer Visuelle Sprachen 197
Semantik durch Graphtransformation
Abstrakte SyntaxAbstrakte Syntax
Graphtransformationsregelnspezifizieren einen abstraktenInterpreter für die Sprache.
Die Interpreterregeln sind für die gesamte Sprache definiert und können auf alle korrekten Syntaxgraphen angewendet werden.
Graphtransformationsregelnspezifizieren die Übersetzung ineinen semantischen Bereich.
Ein möglicher sem. Bereich kann dieMenge der Graphtransformations-systeme sein: Jedes Sprachelement(Modell) wird in ein Graphtrans-formationssystem übersetzt.
OderInterpreter Compiler
Taentzer Visuelle Sprachen 198
Vergleich Interpreter / Compiler
Interpreter:
- sequentielle Interpretation ist häufig durch einfache Regelnspezifizierbar
- parallele Interpretation braucht parallele Regelausführung- abstrakte Syntax wird üblicherweise leicht angereichert
Modell-Compiler:
- Regeln beschreiben Model-zu-Modell-Transformation- Graphen sind komplexer, da Quell- und Zielmodell sowie
eventuell Zwischenmodelle verwaltet werden müssen- Regeln sind üblicherweise nichtlöschend, da das Quell-
modell nicht verändert und das Zielmodell aufgebaut werden
Taentzer Visuelle Sprachen 199
Beispiel: UML Zustandsdiagramme
Taentzer Visuelle Sprachen 200
Ausschnitt aus dem UML-Metamodell
A composite state can have at most one initial vertex.Self.subvertex->select(v | v.oclIsKindOf(Pseudostate))->
select(p: Pseudostate | p.ind = #initial)-> size<= 1
Taentzer Visuelle Sprachen 201
Typgraph für Zustandsdiagramme (vereinfachte Variante)
Taentzer Visuelle Sprachen 202
Abstrakte Syntaxgrammatik für Zustandsdiagramme
Taentzer Visuelle Sprachen 203
Abstrakte Syntaxgrammatik für Zustandsdiagramme - 2
Taentzer Visuelle Sprachen 204
Eine Beispielerzeugung
Taentzer Visuelle Sprachen 205
Simulation von Zustandsdiagrammen
Taentzer Visuelle Sprachen 206
Simulation von Zustandsdiagrammen
Hinweis: Es kann passieren, dass die Ausführungdurch Benutzung der Regel HierarchyUp zu früh beendet wird.
Eine Beispielsimulation
Taentzer Visuelle Sprachen 207
Eine Beispielsimulation - 2
Taentzer Visuelle Sprachen 208
Def. 5 sollte illustriert werden. Def. 6 vielleicht auch. Fig. 2 könnte hübscher sein. Und im letzten Abschnitt von Kap. 3 beschreibe ich Beispiel-Constraints. KönntesDef. 5 sollte illustriert werden. Def. 6 vielleicht auch. Fig. 2 könnte hübscher sein. Und im letzten Abschnitt von Kap. 3 beschreibe ich Beispiel-Constraints. Könn
Erweiterung: Statecharts mit Parallelausführungen
Taentzer Visuelle Sprachen 209
Zustände können parallele Regionen haben.
Beispiel: Spezifikation eines Bankautomaten
Taentzer Visuelle Sprachen 210
Beispiel-instanz:
Taentzer Visuelle Sprachen 211
ATM-Statechartals Instanz des neuen Metamodells
EMF-Modelle und ihre Transformation EMF-Modelle können als attributierte, getypte Graphen definiert
werden: Objekte werden als Knoten interpretiert. Referenzen werden als Kanten interpretiert. Attribute und Typvererbung können analog verwendet werden.
Containment-Beziehungen werden durch eine spezielle Art von Kanten definiert. Jedes Element hat maximal einen Container. Die Containment-Beziehung ist nicht zyklisch.
Transformationen müssen die Containment-Beziehungen konsistent halten. konsistente Transformationsregeln Objekte werden mit ihren Containment-Beziehungen erzeugt und gelöscht. Eine Containment-Kante wird immer mit ihrem Zielknoten erzeugt bzw. gelöscht. Ein Objekt kann seinen Container wechseln. Falls Containment-Kanten Zyklen bilden können, darf der Container nur so
gewechselt werden, dass der alte und der neue Container bereits in einer transitiven Containment-Beziehung stehen.
Taentzer Visuelle Sprachen 212
Beispiel für eine Transformationsregel über potentiellen Containment-Zyklen
Refactoring von Statecharts: Hochschieben eines Zustands subStates ist eine Containment-Beziehung Diese ist konsistent, da ein Zustand entlang von subState-
Beziehungen verschoben werden kann. Diese Regel kann keine Containment-Zyklen einführen.
Taentzer Visuelle Sprachen 213
Interpretation der erweiterten Statecharts
Taentzer Visuelle Sprachen 214
addEvent(e): Einfügen eines neuen Ereignisses in die Schlange
skipEvent(): Wegwerfen des aktuellen Ereignisses, falls nicht gebraucht
Interpretation der erweiterten Statecharts
Taentzer Visuelle Sprachen 215
sequentialTransition(): Durchführung einer Transition mit dem aktuellen Ereignis
Interpretation der erweiterten Statecharts
Taentzer Visuelle Sprachen 216
enterRegion(): Start der parallelen Ausführung
leaveRegion(): Ende der parallelen Ausführung
Interpretation der erweiterten Statecharts
Taentzer Visuelle Sprachen 217
simultanTrans(): ein Schritt der parallelen Ausführung
In alle parallelen Regionen wird dasselbe Ereignis verarbeitet.
Amalgamierte Graphtransformation
Taentzer Visuelle Sprachen 218
Parallele Interpretation durch amalgamierte Graphtransformation
Parallele Anwendung von Graphtransformationsregeln Definition eines Regelschemas:
Eine Kernregel, die die Basisaktion spezifiziert. Mehrere Multiregeln, die die Kernregel als Unterregel enthalten. Die Kernregel wird genau einmal angewendet. Die Multiregeln werden sooft wie möglich so angewendet, dass ihre
Regelansätze mit dem Kernregelansatz überlappen. Die Anzahl der Multiregelansätze ist vom aktuellen Graphen abhängig. Die Vereinigung der Kernregel mit allen Kopien der angewendeten Multi-
regeln bilden die amalgamierte Regel. Die Vereinigung des Kernregel-ansatzes mit allen Multiregelansätzen bilden den amalgamierten Ansatz.
Die amalgamierte Regel wird am amalgamierten Ansatz wie üblich angewendet.
Taentzer Visuelle Sprachen 219
Taentzer Visuelle Sprachen 220
Zusammenfassung
Die Semantik einer visuellen Sprache wird auf der Ebene der abstrakten Syntax definiert.
Interpretersemantik: universelle Regelmenge für die Interpretation aller Modelle einer
Sprache optional: Erweiterung der abstrakten Syntaxdefinition, um den
Zustand der Interpretation zu halten Ein komplexer Interpreterschritt kann nicht immer durch eine
einzige Regelanwendung definiert werden. Amalgamierte Graphtransformation ermöglicht die parallele
Anwendung von Regeln in synchronisierter Form. EMF-Modelle können durch eine spezielle Form von Regeln
konsistent gehalten werden.