Syntaxbaum, Symboltabelle und Kontextbedingungen
Syntaxbaum, Symboltabelle und Kontextbedingungen
Syntaxbaum, Symboltabelle und Kontextbedingungen
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
BTU Cottbus, Institut für Informatik, LS Datenstrukturen <strong>und</strong> Softwarezuverlässigkeit<br />
Aufgabe<br />
Schreiben Sie ein Programm, das eine von der Standardeingabe einzulesende Zeichenkette<br />
dahingehend überprüft, ob es sich um einen Ausdruck mit Deklarationsteil entsprechend der<br />
umseitig angegebenen Sprache (definiert durch kontextfreie Grammatik <strong>und</strong> <strong>Kontextbedingungen</strong>)<br />
handelt. Ist dies der Fall, soll dieser Ausdruck ausgewertet <strong>und</strong> das Ergebnis<br />
ausgegeben werden.<br />
Dabei sind bei der Überprüfung der korrekten Syntax eines (Teil-) Ausdrucks die informell<br />
gegebenen Einschränkungen (<strong>Kontextbedingungen</strong>) bezüglich der Typisierung von<br />
Ausdrücken <strong>und</strong> der Verwendung von Bezeichnern zu berücksichtigen.<br />
Implementierungshinweise:<br />
Für die Überprüfung der Typkonsistenz <strong>und</strong> die anschließende Auswertung von Ausdrücken ist<br />
es notwendig, Informationen über die im Deklarationsteil festgelegten Werte <strong>und</strong> Typen der<br />
vorkommenden Bezeichner abzuspeichern. Diese Informationen werden bei der<br />
anschließenden Analyse des Ausdrucks verwendet. Die entsprechende Datenstruktur wird im<br />
Compilerbau als <strong>Symboltabelle</strong> bezeichnet. Eine solche <strong>Symboltabelle</strong> wird meist als<br />
Hashtabelle implementiert; in dieser Aufgabe soll in dieser Weise verfahren werden.<br />
Es empfiehlt sich, Informationen über die Typen von Teilausdücken ebenfalls in den Knoten<br />
des aufzubauenden <strong>Syntaxbaum</strong>s zu verwalten.<br />
Literatur: Alfred V. Aho and Jeffrey D. Ullman. The Theory of Parsing, Translation, and<br />
Compiling. Volume I: Parsing. Prentice-Hall, London, 1972.