Im wesentlichen besteht diese Datenstruktur aus zwei Komponenten: einer Klasse (Expression) und einer STL-Vektor-Tabelle (ExpressionList). Beide Komponenten wurden im obigen Beispiel zur Grammatik bereits kurz erläutert. Die Klasse (Expression) hat drei Memberkomponenten:
Eine (ExpressionList) ist ein Vektor von (Expressions) und nutzt die Template-Klasse (vector). Diese rekursiv angelegte Datenstruktur erlaubt es, alle Fälle der Grammatik abzubilden. Vorteil solch rekursiver Strukturen ist, daß man Verschachtelungen ohne Aufwand abbilden und abarbeiten kann, insbesondere bei einer so minimalistischen Darstellung. Das gesamte Programm wird schlicht als (ExpressionList) abgelegt und später sukzessiv abgearbeitet. Eine (while)-Schleife ist nichts weiter als eine (Expression) mit einem besonderen Namen (_while) und der Bedingung sowie dem Schleifenkörper als Argumenten. Der Schleifenkörper kann hierbei selbstverständlich aus mehreren Ausdrücken bestehen – dies ermöglicht die (ExpressionList). Ein ganz ähnlicher Ansatz liegt den Funktionsdeklarationen zu Grunde. Eine Hilfs-Map bildet Funktionsnamen auf (Expressions) ab, welche die eigentliche Funktionsdefinition enthalten. Im einzelnen gelten folgende Aufbauregeln:
Die Datei (ast.h) enthält die Definition dieser beiden Klassen und einiger weniger Methoden. Insbesondere definiert sie den Ausgabeoperator (>>) für beide Kernklassen. Es ist stets empfehlenswert, eine Ausgabemöglichkeit für den Syntaxbaum zu schaffen. Verschachtelte Strukturen interaktiv zu debuggen ist recht arbeitsintensiv und dagegen ist der Aufwand für solche Ausgabefunktionen vernachlässigbar gering.