30.06.2014 Aufrufe

Systemmodell-basierte Definition objektbasierter ...

Systemmodell-basierte Definition objektbasierter ...

Systemmodell-basierte Definition objektbasierter ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

2.4 Beispiel einer Sprachdefinition 19<br />

2.4.2 Abstrakte Syntax von CDSimp<br />

In MontiCore wird die abstrakte Syntax immer automatisch aus der Grammatik in Form von<br />

Java-Klassen abgeleitet, weshalb auch wir nicht von einer unabhängigen Beschreibung der abstrakten<br />

Syntax als Datenmodell ausgehen wollen.<br />

Eine MontiCore-Grammatik kann kanonisch mit Hilfe der folgenden Regeln auf eine einfache<br />

mengentheoretische Beschreibung der abstrakten Syntax abgebildet werden, siehe dazu<br />

auch [CGR08a] und [Kra10].<br />

• Regeln werden auf Mengen abgebildet.<br />

• Die rechte Seite einer Regel bildet ein Tupel, das die Struktur widerspiegelt.<br />

Grammatik<br />

Mengen<br />

X = A B C<br />

X = A × B × C<br />

• Der optionale Name in Regeln wird ignoriert oder als Alias zur besseren Lesbarkeit eingeführt,<br />

sofern der Name eindeutig ist.<br />

Grammatik<br />

Mengen<br />

X = a:A b:B k:C<br />

X = A × B × K und K = C<br />

• Schnittstellenregeln und Alternativen werden auf die (disjunkte) Mengenvereinigung zurückgeführt.<br />

Grammatik interface X; A implements X; B implements X;<br />

oder<br />

Grammatik X = A | B;<br />

Mengen X = A ∪ B<br />

• Optionale Elemente X? werden zu einer Menge, die ein spezifisches Element ɛ ∉ X enthält,<br />

das das Nichtvorhandensein darstellt. X ɛ ist dabei die Kurzform für X ∪ {ɛ}.<br />

• Wiederholungen durch einen Kleeneschen Stern und Listen der Form A (’,’ A)* werden<br />

durch die entsprechende Potenzmenge oder Liste dargestellt. Ob eine Darstellung als<br />

Menge oder Liste verwendet werden soll, hängt davon ab, ob Wiederholungen gleicher<br />

Elemente beibehalten werden sollen und ist jeweils einzeln zu entscheiden.<br />

Grammatik<br />

Mengen<br />

X = A* oder X = (A (’,’ A)*)?<br />

X = ℘(A) oder X = List(A)<br />

• Regeln mit dem Schlüsselwort external werden in der Grammatik nicht definiert und<br />

bleiben auch in der Mengenrepräsentation unspezifiziert.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!