Uni-GH PBPraktikum 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

  1. Die kontextfreie Grammatik ist ähnlich wie die von Core aufgebaut.

  2. Namensanalyse

    - Wurden alle benutzten Variablen definiert?

    - Wurde eine Variable mehrfach definiert?

  3. 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)

  4. 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

  5. Änderungen, falls Maschinensprache anstatt Assembler erzeugt werden soll

    - Berechnen der Adressen anstatt Labels -> erfordert Attribute für Länge der Befehle.

Projektbeschreibungen