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 47Einführung eines neuen Sprachkonstrukts oder die Änderung eines bestehenden Sprachkonstruktsdreier Schritte zur Implementierung:1) In der SableCC-Grammatik von <strong>ODL</strong> muss die Produktionsregel für das neue Konstrukt eingeführtwerden bzw. die bestehende Regel geändert werden.2) Für ein neues Sprachkonstrukt muss eine Unterklasse von Term (falls es sich um einen <strong>ODL</strong>-Term handelt) oder Expression (falls es sich im einen <strong>ODL</strong>-Ausdruck handelt) im Packagequest.odl.evaluation.model erstellt werden, die die geforderte Funktionalität implementiert.Handelt es sich bei dem neuen Sprachkonstrukt um einen Typ, so muss die entsprechendeAuswertungsklasse das Interface MetaType (auf Abbildung 5.3 nicht gezeigt) implementieren.Für den Fall der Änderung eines bestehenden Sprachkonstrukts muss die entsprechende Klasseggf. angepasst werden.3) In der Generator-Klasse SableCCGenerator (Package quest.odl.evaluation.generator)müssen Methoden implementiert bzw. angepasst werden, die aus den Syntaxbaum-Knoten für das betreffende Sprachkonstrukt einen <strong>ODL</strong>-Term oder einen <strong>ODL</strong>-Ausdruck erstellen.Die folgenden Abschnitte beschreiben nun die Grammatik- <strong>und</strong> die Programmänderungen, die zurRealisierung der geforderten Erweiterung des Sprachumfangs notwendig waren.5.1.1 Änderung der <strong>ODL</strong>-GrammatikIn diesem Abschnitt beschreiben wir die Änderungen <strong>und</strong> Erweiterungen, die an der SableCC-Grammatik von <strong>ODL</strong> vorgenommen wurden. Wir werden für alle in 4.1 vorgestellten <strong>Sprachkonstrukte</strong>die entsprechenden Produktionsregeln angeben sowie die Änderungen im Vergleich zur vorherigenVersion der <strong>ODL</strong>-Grammatik erklären.Im Interesse der Lesbarkeit werden die Produktionen nicht immer streng nach den Regeln einerSableCC-Grammatik notiert – dies betrifft vor allem Sonderzeichen, die in einer SableCC-Grammatikin einem speziellen Abschnitt deklariert <strong>und</strong> später durch die ihnen zugewiesenen Schlüsselwörterersetzt werden müssen. Beispielsweise werden wir die Produktion:restricted_type_definition =l_brace variable colon type v_line ccl_proposition r_brace;in der leichter zu lesenden Formrestricted_type_definition ={ variable : type | ccl_proposition };notieren.Im Anhang C findet sich die vollständige <strong>ODL</strong>-Grammatik in der SableCC-Notation.Nun wollen wir die Grammatik-Erweiterungen im Einzelnen erörtern.• TypsystemDie erste Erweiterung der <strong>ODL</strong>-Grammatik stellt die Einführung neuer Datentypendar – dies sind ProductType, RestrictedType, SetType sowie der SondertypIntroducedType, der den Zugriff auf Elemente einer Menge realisiert.Die alten Produktionen für Datentypen erzeugten die vier Typen Boolean, Integer,String <strong>und</strong> Entity (in der Grammatik model_element_type):bool_type = ’boolean’;int_type = ’int’;string_type = ’String’;type = basic_type |model_element_type;

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!