next up previous


Pflichtenheft Gruppe 3 (CodeGen)

Zielbestimmung

Erzeugung von Code für den von-Neumann-Simulator aus dem Ableitungsbaum der Gruppe Parser.

Produkteinsatz

Die Programme der Gruppen Scanner, Parser und CodeGen stellen einen Mehrphasen-MMS-Compiler dar, der aus einem MMS-Quellcode den entsprechenden Code für den bereits existierenden von-Neumann-Simulator generiert.
Die Gruppen Scanner und Lexer liefern einen Syntaxbaum, der das lexikalisch und syntaktisch analysierte Programm darstellt. Dieser Baum wird von der Gruppe CodeGen auf semantische Korrektheit überprüft und in von-Neumann-Code umgewandelt.

Produktumbebung

Software

Die Programmierung erfolgt vollständig in ANSI-Standard C.

Hardware

Die erstellten C-Programme werden durch einen C-Compiler in einen, auf den UNIX-SUN-Workstations lauffähigen Code übersetzt.

Schnittstellen

Eingabe: Syntaxbaum (siehe Anlage ``Vorgaben an die Gruppe Parser'')
Ausgabe: von-Neumann-Code

Produktfunktionen

read-tree

Einlesen der Baumdarstellung in den Arbeitsspeicher.

analyse

1.
Aufstellen der Identifikatorentabelle
2.
Überprüfung von Typen in arithmetischen und booleschen Ausdrücken
3.
arithmetische und boolsche Token werden mit den entsprechenden Typen versehen

decompose

komplexe Ausdrücke werden sofern notwendig in einfache Ausdrücke umgewandelt

gen-procdec

1.
Analyse der entsprechenden Prozedurdeklarationen
2.
Analyse der zu übergebenden Parameter
3.
Generierung der Prozedurrümpfe

gen-code

Generierung des Codes für das Hauptprogramm

arithmetische - und boolesche Ausdrücke

Bei der Auswertung von Ausdrücken müssen ggf. weitere Hilfsvariablen eingeführt werden.

Zuweisungen (:=)

repeat until

if then else if

Prozeduraufrufe

Es wird bei Prozeduraufrufen statische Scoping verwendet.

Produktdaten

1.
Tokentabelle (siehe Anlage ``Vorgaben an die Gruppe Scanner'')
2.
Syntaxbaum (siehe Anlage ``Vorgaben an die Gruppe Parser'')
3.
Befehlssatz des von-Neumann-Simulators

Leistungen

lauffähiges, vollständiges und dokumentiertes Programm entsprechend 1-5

Qualitätsziele

Die oberste Priorität hat die Korrektheit und Stabilität. Laufzeit- und Speicheroptimierungen werden, wenn möglich als sekundäre Ziele realisiert.

Entwicklungsumgebung

Software

xemacs, GNU-C

Hardware

UNIX-SUN-Workstations, Linux-PC


next up previous
Dietmar Lammers
1998-06-16