AST-Überblick
Verstehen Sie den Abstract Syntax Tree des Tiramisu-Parsers mit allen Knotentypen und ihrer Struktur.
Der Tiramisu-Parser (@timeleap/tiramisu) nimmt Quelltext entgegen und erzeugt einen Abstract Syntax Tree (AST). Der AST ist ein Baum aus typisierten Knoten, der die Struktur Ihres Dokuments abbildet.
Knotentypen
Der AST besteht aus den folgenden Knotentypen:
| Knoten | Beschreibung |
|---|---|
Tiramisu | Wurzelknoten des Dokuments. Enthält alle Knoten der obersten Ebene. |
Paragraph | Ein Textabsatz. Wird durch Leerzeilen erzeugt. |
MixedText | Text, der sowohl einfachen Text als auch Funktionsaufrufe enthält. |
PureText | Ein reines Textsegment ohne Funktionsaufrufe. |
FunctionCall | Ein Funktionsaufruf mit einem Namen und Parametern. |
Parameters | Die Parameterliste eines Funktionsaufrufs. |
Parameter | Ein einzelner Positionsparameter. |
NamedParameter | Ein benannter Parameter (key = value). |
ArrayValue | Ein Array-Wert ([a, b, c]). |
ArrayItem | Ein einzelnes Element innerhalb eines Arrays. |
Beispiel
Gegeben folgender Tiramisu-Quelltext:
bold { Hello } world Der Parser erzeugt diesen AST:
Tiramisu
└── Paragraph
└── MixedText
├── FunctionCall (name: "bold")
│ └── Parameters
│ └── Parameter
│ └── PureText ("Hello")
└── PureText (" world") FunctionCall-Struktur
Der FunctionCall-Knoten ist das Herzstück von Tiramisu. Er hat:
functionName— den Namen der Funktion (Text vor der{)parameters— einenParameters-Knoten, der die Argumente der Funktion enthält
Parameter enthalten eine Liste von Parameter- und NamedParameter-Knoten. Jeder Parameter kann Text, verschachtelte Funktionsaufrufe oder Arrays enthalten.
Knotentypen importieren
Alle Knotentypen sind aus dem Parser-Paket verfügbar:
import {
Tiramisu,
Paragraph,
MixedText,
PureText,
FunctionCall,
Parameters,
Parameter,
NamedParameter,
ArrayValue,
ArrayItem,
} from "@timeleap/tiramisu/src/types/nodes"; Die Typprüfung von Knoten verwendet instanceof:
if (node instanceof FunctionCall) {
console.log(node.functionName);
}