bl1(Konstantenbezeichner):
lokale Suche nach dem Bezeichner
gefunden -> Fehlerbehandlung
nicht gefunden -> Bezeichner anlegen
bl2 (Konstantenwert):
Konstantenbeschreibung anlegen
Suche nach Konstante im Konstantenblock
gefunden -> Index der Konstanten eintragen in Konstantenbeschreibung
Konstante anlegen im Konstantenblock und Index der Konstanten eintragen in Konstantenbeschreibung
In letzten Bezeichner Zeiger auf Konstante eintragen
bl3 (Variablenbezeichner):
lokale Suche nach dem Bezeichner
gefunden -> Fehlerbehandlung
nicht gefunden -> Bezeichner anlegen
Variablenbeschreibung anlegen und Pointer in Bezeichner eintragen
Relativadresse ermitteln aus SpzzVar, SpzzVar um 4 erhöhen (Virtuelle Maschine arbeitet mit 4 Byte langen long-Werten)
bl4(Prozedurbezeichner):
lokale Suche nach dem Bezeichner
gefunden -> Fehlerbehandlung
nicht gefunden -> Bezeichner anlegen
Prozedurbeschreibung anlegen
Pointer auf Parent-Prozedur eintragen
Pointer auf Prozedurbeschreibung in letzten Bezeichner eintragen
Neue Prozedur ist jetzt aktuelle Prozedur
bl5 (Ende der Prozedurverinbarung):
Codegenerierung: retProc
Codelänge in den Befehl entryProc als 1. Parameter nachtragen
Code aus dem Codepuffer in die Ausgabedatei schreiben (anfügen)
Namensliste mit allen Konstanten-, Variablen- und Prozedurbeschreibungen auflösen; die Prozedur selbst muss noch erhalten bleiben
Die Parent-Prozedur wird die aktuelle Prozedur
bl6(Beginn des Anweisungsteils):
Hier muss ggf. ein Nilbogen eingefügt werden, um diese semantische Aktion an dieser Stelle ausführen zu können!
Codeausgabepuffer initialisieren
Codegenerierung: entryProc(CodeLen, IdxProc, VarLen) mit CodeLen zunächst 0, IdxProc mit pCurrProc->Idx, und VarLen aus SpzzVar.