Ergebnis der syntaktischen Analyse ist in der Regel ein abstrakter Syntaxbaum.
Dieser Syntaxbaum wird in nachfolgenden Durchläufen dekoriert, d.h. die Knoten werden mit Attributen
versehen, in denen die für die weitere Verarbeitung notwendigen Informationen gesammelt werden.
Dabei hängt der Typ des zugeordneten Attributs sowohl vom Knoten als auch vom jeweiligen Durchlauf ab.
In den guten alten Zeiten verwendete man dann eben einen Union-Typ, in Pascal also
Delphi-Quellcode:
TYPE
TAttribute = RECORD
CASE AttributeType: TAttributeType OF
AttributeType0: (Type0: TAttributeType0);
AttributeType1: (Type1: TAttributeType1);
AttributeTypeN: (TypeN: TAttributeTypeN);
END;
Nun könnte man für die TAttributeType_i natürlich Klassen einsetzen.
Die Frage ist, kann man das eleganter lösen unter Verwendung des objektorientierten Paradigmas?
Ich komme nicht so richtig weiter. Das Ganze soll ja auch leicht anpassbar an unterschiedliche Gegebenheiten sein.
Wie würdet ihr so was angehen?