11.07.2015 Aufrufe

ODL-Sprachkonstrukte und interaktive Benutzerschnittstelle - TUM

ODL-Sprachkonstrukte und interaktive Benutzerschnittstelle - TUM

ODL-Sprachkonstrukte und interaktive Benutzerschnittstelle - TUM

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

5.1 ERWEITERUNG DES SPRACHUMFANGS 63analysis, im Unterschied zu quest.odl.parser.analysis, nicht automatisch erzeugt,sondern von Hand programmiert wurde. Bei Änderungen an <strong>ODL</strong>-Auswertungsklassenmüssen die ggf. notwendigen Änderungen an den Interfaces EvalTreeVisitor <strong>und</strong> Eval-TreeNode sowie an ihren Unterklassen von Hand durchgeführt werden.Im Package quest.odl.evaluation.model.analysis sind zwei weitere konkreteImplementierungen von EvalTreeVisitor enthalten:KlasseTermToStringConverterTermVariableFinderAufgabeErzeugt für einen <strong>ODL</strong>-Auswertungsbaum seine String-Darstellung– hierbei handelt es sich um eine <strong>ODL</strong>-Abfrage, derenKompilation den analysierten <strong>ODL</strong>-Term ergeben würde,die aber nicht notwendigerweise dem ursprünglichen <strong>ODL</strong>-Abfrage-Stringgleich ist, denn unterschiedlich formulierte <strong>ODL</strong>-Abfragen können den gleichen <strong>ODL</strong>-Auswertungsbaum ergeben.Findet alle innerhalb eines gegebenen <strong>ODL</strong>-Terms verwendeten<strong>und</strong> alle in ihm deklarierten Variablen.Viele Implementierungen von EvalTreeVisitor sind interne Klassen in anderen Klassen.Im SableCCGenerator erben folgende Klassen von DepthFirstEvalTreeVisitor-Adapter:– ContextQuantifierDisplayVariablesSetter wird benutzt, um in einem<strong>ODL</strong>-Auswertungsbaum bei allen context-Quantoren einzutragen, welche Variablenzum Zeitpunkt der Auswertung dieses Quantors bekannt sind <strong>und</strong> dem Benutzer im Eingabedialogfür die vom Quantor geb<strong>und</strong>ene Variable angezeigt werden müssen.– ContextQuantifierBackwardStepSetter analysiert einen <strong>ODL</strong>-Auswertungsbaum<strong>und</strong> spezifiziert für alle context-Quantoren, ob im Eingabedialog für den betreffendenQuantor ein Rückwärtsschritt möglich ist (s. auch Abschnitt 5.2.3).Schließlich verwenden folgende Klassen private Unterklassen von EvalTreeVisitor-Adapter:– Klassen im Package quest.odl.evaluation.model.query.dialog:QueryDialogManager– Klassen im Package quest.odl.evaluation.model.query.factory:QueryFactoryManagerValuesDisplayComponentProducerManagerQueryInputPanelProducerManagerAbstractObjectToStringFormatterFactoryJede dieser Klassen führt für verschiedene <strong>ODL</strong>-Datentypen verschiedene Aktionen aus. DieUnterklassen von EvalTreeVisitorAdapter werden hier verwendet, um die Ausführungder richtigen Aktion für eine als Parameter übergebene MetaType-Instanz zu ermöglichen:mit ihrer Hilfe wird festgestellt, um welchen Datentyp es sich bei dieser MetaType-Instanzhandelt, <strong>und</strong> die diesem Datentyp entsprechende Aktion wird ausgeführt.• Vorziehen von context-Quantoren bei der Skolem-OptimierungIn der früheren <strong>ODL</strong>-Version wurde die Skolem-Optimierung für new- <strong>und</strong> context-Quantoren implementiert ([Pasch], S.38-39). Hierbei handelt es sich um das Vorziehen vonnew- <strong>und</strong> context-Quantoren bis zum nächsten forall-Quantor oder an den Anfang der

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!