Aufgabenblatt zur 1. Übung 2cm Zeitraum: 18.10.

Werbung
LV „Software Factories”
Prof. Dr.-Ing. habil. H. Fritzsche
Wintersemester 2015/16
Lösungen zum 9. Komplex
Aufgabe 1
Erzeugen des Xtext-Projektes:
Der „Language-Name” entspricht dem Projektnamen mit einem selbst gewählten Zusatz,
hier L1Dsl. Die gewählte Extensions-Angabe l1dsl wird bei der Erzeugung von Instanzen
der DSL wieder benötigt. Beim Erstellen der Xtext-Grammatik müssen Linksrekursionen
vermieden werden (der Parser arbeitet Top-down)!
Über das Kontextmenü zur Datei Generatedslname.mwe2 → Run As → „MWE2 Workflow”
ausführen. Ausgaben an der Console kontrollieren, bis ’Done.’ ausgegeben wird.
Alternative Grammatik:
L1Dsl: (x=X)? y=Y ’$’
;
X: ’a’ x=X | {X} ’a’
;
Y: ’b’ Y ’c’ | {Y} ’a’
;
Die Notation {X} stellt eine Action dar, die für die Erzeugung eines Objektes des entsprechenden Typs zuständig ist.
Starten neue Eclipse-Instanz, neues Java-Projekt, neues File (hier L1_Beispiel.l1dsl) im
src-Verzeichnis. In dieser Datei wird ein Programm erfasst. Ist die Datei leer oder enthält
eine Zeichenfolge, die nicht Instanz von L1 ist, wird sie als fehlerhaft markiert.
2
Die jeweilige Auswahl wird bei Ctrl + Leertaste angeboten, aber nur, wenn in der XtextGrammatik Feature-Namen verwendet wurden.
Aufgabe 2
3
Das gezeigte Wizard-Fenster ist nur ein Beispiel. Tatsächlich verwendete Einträge sind:
• Projektname: de.htwdd.sf.pl0v4
• Languagename: de.htwdd.sf.pl0v4.PL0
• Erweiterung: pl0dsl
4
Die folgende outline-Darstellung enthält die Namen der Nichtterminale. Dafür sind Erweiterungen der Art
public String text(Term ele){
return "Term";
}
in
der
Datei
PL0LabelProvider.java
5
vorzunehmen,
die
sich
im
Package
de.htwdd.sf.pl0v4.ui.labeling
befindet.
im
generierten
Projekt
de.htwdd.sf.pl0v4.ui
Programmierung der Codeerzeugung mit Xtend:
Im Projekt ist die xtend-Datei zu erweitern, die zunächst wie folgt generiert wird:
Die Erweiterung umfasst
6
1. Die Erzeugung der Variablendeklarationen (Initialisierung mit 1, 2, 3 usw.),
2. Die Programmierung der Traversierung des Syntaxbaumes,
3. Das Erzeugen der JAva-Quellcode-Datei.
7
8
Herunterladen