Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Klassentyp a la Union-Typ (https://www.delphipraxis.net/192858-klassentyp-la-union-typ.html)

Sailor 26. Mai 2017 15:57

Klassentyp a la Union-Typ
 
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?

mjustin 26. Mai 2017 16:40

AW: Klassentyp a la Union-Typ
 
Das wird klassischerweise über das "Besucher" (Visitor) Entwurfsmuster gelöst. Das Parsen von Quelltext mit verschiedenen Durchläufen ist quasi das Paradebeispiel dieses Musters.


https://de.wikipedia.org/wiki/Besuch...im_Compilerbau


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz