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.

Kapitel 6VerbesserungsmöglichkeitenDieses Kapitel behandelt Vorschläge für zukünftige Weiterentwicklungen des <strong>ODL</strong>-System. Sie betreffenErweiterungen <strong>und</strong> Optimierungen des <strong>ODL</strong>-Auswertungssystems <strong>und</strong> der <strong>interaktive</strong>n <strong>Benutzerschnittstelle</strong>von <strong>ODL</strong>.6.1 Erweiterungen des SprachumfangsIn diesem Abschnitt befassen wir uns mit Vorschlägen für die Erweiterung der Ausdrucksmächtigkeitvon <strong>ODL</strong>.6.1.1 Teilmengen unendlicher TypenFür Datentypen mit endlicher Domäne (z.B. Boolean oder Component) ist es möglich, Teilmengendes Typs zu verwenden, die über eine Restriktion definiert werden. So definiert die Restriktion{c:Component | neg isEmpty( c.SubComponents )} alle Komponenten, diemindestens eine Unterkomponente haben. Für unendliche Datentypen wie Int <strong>und</strong> String bestehtzurzeit keine Möglichkeit, Teilmengen des Typs zu verwenden, da eine Restriktion der Form{var:base_type | restriction_term} nur dann angewendet werden kann, wenn der Basistypiterierbar ist, was bei unendlichen Typen nicht der Fall ist.Abhilfe kann dadurch geschaffen werden, dass endliche Teilmengen unendlicher Typen über einefeste Syntax definiert werden können. Für den Typ Int könnte mit i:Int[a:b] die Teilmengealler ganzen Zahlen deklariert werden, die zwischen a <strong>und</strong> b liegen. Diese Syntaxerweiterung würdeAbfragen wie exists i:Int[0:10]. i < 5 ermöglichen.6.1.2 MengenoperationenFür die in <strong>ODL</strong> verwendeten Mengen ist zurzeit die nur Größenbestimmung (size(set_var))<strong>und</strong> die Iteration über Mengenelemente (exists e:element set_var) möglich. Der Sprachumfangkann für einen flexibleren Einsatz von Mengen um folgende zum Teil mengentypische Operationenerweitert werden:• union(set1,set2)Vereinigung zweier Mengen: M 1⋃ M2 = { a | a ∈ M 1 ∨ a ∈ M 2 }• intersection(set1,set2)Durchschnitt zweier Mengen: M 1⋂ M2 = { a | a ∈ M 1 ∧ a ∈ M 2 }• difference(set1,set2)Differenz zweier Mengen: M 1 \M 2 = { a | a ∈ M 1 ∧ a /∈ M 2 }

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!