Praktikum
Sprachimplementierung mit Werkzeugen WS 1996/97
Projekt MMM
Autor: Edip
Aydin
Motivation
MMM ist eine Steuersprache für eine LED-Anzeige, die über
einen Micro-Controller programmiert werden kann. Man hat die Möglichkeit
Texte auszugeben, die dann mit einem Effekt angezeigt werden (Laufschrift,
Wipe, ...). Zusätzlich können einige Berechnungen durchgeführt
werden und es stehen Schleifen zur Verfügung. Eingaben über eine
anschließbare Tastatur sind ebenfalls möglich.
Programmbeispiel:
var
int a;
short b;
string c[10];
start
{
a:=350;
b:=50;
do
{
b:=b-1;
a:=a+b;
} while (b != 0);
c="Test";
print c; // Ausgabe in Buffer
show 3; // 3 bestimmt den Effekt
}
Aufgaben bzgl. Eli
- Die kontextfreie Grammatik ist ähnlich wie die von Core aufgebaut.
- Namensanalyse
- Wurden alle benutzten Variablen definiert?
- Wurde eine Variable mehrfach definiert?
- Typanalyse
- Hat ein Ausdruck (z.B. a=b+c) den richtigen Typ?
- Korrekte Typen bei set, print, show, input, wait.
- Bei Operatoren + und - Unterscheidung zwischen int und short.
Gemischtes Auftreten sollte möglich sein.
- Wird einer Short-Variable ein Wert größer 255 zugewiesen?
(Alle Bits außer 0 - 7 werden ignoriert)
- String länger als angegebene Länge in der Definition?
(Abschneiden)
- Transformation
- Variablen in Labels mit Speicherplatzreservierung umwandeln.
(z.B. int abc; umwandeln in abc: byt 2 (reserviert 2 Bytes))
- PTG-Muster für die Assembler-Befehle schreiben
- Aufteilen von int-Variablen in Hi- und Lo-Byte und dementsprechendes
Einsetzen in die PTG-Muster
- Änderungen, falls Maschinensprache anstatt Assembler erzeugt werden
soll
- Berechnen der Adressen anstatt Labels -> erfordert Attribute für
Länge der Befehle.