homeSoftwaredesign Softwaredesign: Interpretierer Prof. Dr. Uwe Schmidt FH Wedel

Interpretierer

weiter

weiter

Interpretierer

Klassifizierung
klassenbasiertes Verhaltensmuster
weiter
Alias
interpreter
weiter
Motivation
Verarbeitung von hierarchisch aufgebauten Objektstrukturen
--> Kompositum
weiter
Beispiel
Verarbeitung eines abstrakten Syntaxbaums (Programmbaum)
Typcheck
Compilieren
Interpretieren
Transformieren (Optimierung)
weiter
Motivation
jede etwas komplexere textuelle Notation wird mit Hilfe einer (kontextfreien) Grammatik definiert
aus der kontextfreien Grammatik wird ein Datenmodell abgeleitet
eine abstrakte Syntax
alternative Regeln in einer Grammatik werden zu Klassenhierarchien im Datenmodell
die rekursiven Syntaxregeln führen zu dem Kompositum-Muster
die Programmbäume werden durch Traversieren und knotenabhängige Methodenaufrufe verarbeitet
weiter
Beispiele
Anfrage-Interpretation von SQL-Anfragen
Interpretation des XML/HTML-Strukturbaums aus der Fallstudie über die Verarbeitung von XML/HTML
weiter
Anwendbarkeit
immer, wenn Baumstrukturen (Hierarchien) verarbeitet werden
insbesondere, wenn die zu verarbeitende Sprache nicht sequentiell gelesen und gleichzeitig verarbeitet werden kann (Vorwärtsreferenzen)
abstrakter Syntaxbaum macht die Verarbeitung frei von textueller Anordnung
Transformationen sind einfacher auszuführen
weiter
Struktur
Strukturdiagramm
weiter
Teilnehmer
  Ausdruck
Schnittstelle für die Interpretierer-Operation(-en)
  EinfacherAusdruck
konkrete Klasse für ein Blatt
  KomplexerAusdruck
konkrete Klasse für einen inneren Knoten
  Kontext
Klasse für Zusatzinformation, die über Parameter in die Interpretationsroutinen kommt
  Resultat
Klasse für das Ergebnis der Interpretation
weiter
Konsequenzen
einfache Erweiterbarkeit der Grammatik
Klassenhierarchie um eine konkrete Klasse und Interpretationsroutinen erweitern
Verarbeitung wird unabhängig von der konkreten Syntax
Java auf Plattdeusch kein Problem
Verarbeitung durch rekursiven Abstieg
wenn viele ähnlich strukturierte Interpretationen vorkommen besteht die Gefahr der Codeverdopplung
Besucher-Muster als Ausweg
werden die Knoten eines Baumes nicht verändert, Fliegengewichte einsetzen zum gemeinsamen Nutzen von Teilbäumen
weiter
Beispiel
Binärer Suchbaum mit Suche und Einfügen als Interpretierer.
Beispiel
eine Mini-Programmiersprache mit Zuweisungen, Verzweigungen und Schleifen und nur einem Datentyp für ganze Zahlen.
weiter
Beispiel
eine etwas vollständigere einfache Programmiersprache mit zwei unterschiedlichen Datentypen, Int und Bool, und mit Interpretierer, Compiler für eine einfache Assemblersprache.
weiter
Bekannte Verwendungen
überall
weiter
verwandte Muster
ist bei Baumstrukturen immer das Strukturmuster
weiter
kann zum Konstruieren eines Baumes verwendet werden
weiter
kann das Traversieren von der eigentlichen Verarbeitung der Knoten trennen
gut für die Implementierung mehrerer ähnlicher Interpretierer
weiter

Letzte Änderung: 23.06.2014
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel