Vue d'ensemble de l'AST
Explorez les types de nœuds de l'arbre syntaxique abstrait produit par le parseur Tiramisu.
Le parseur Tiramisu (@timeleap/tiramisu) prend du texte source et produit un arbre syntaxique abstrait (AST). L'AST est un arbre de nœuds typés qui représente la structure de votre document.
Types de nœuds
L'AST est composé des types de nœuds suivants :
| Nœud | Description |
|---|---|
Tiramisu | Nœud racine du document. Contient tous les nœuds de premier niveau. |
Paragraph | Un paragraphe de texte. Créé par la séparation par ligne vide. |
MixedText | Du texte qui contient à la fois du texte brut et des appels de fonctions. |
PureText | Un segment de texte brut sans appels de fonctions. |
FunctionCall | Un appel de fonction avec un nom et des paramètres. |
Parameters | La liste des paramètres d'un appel de fonction. |
Parameter | Un seul paramètre positionnel. |
NamedParameter | Un paramètre nommé (key = value). |
ArrayValue | Une valeur de type tableau ([a, b, c]). |
ArrayItem | Un seul élément dans un tableau. |
Exemple
Étant donné ce source Tiramisu :
bold { Hello } world Le parseur produit cet AST :
Tiramisu
└── Paragraph
└── MixedText
├── FunctionCall (name: "bold")
│ └── Parameters
│ └── Parameter
│ └── PureText ("Hello")
└── PureText (" world") Structure de FunctionCall
Le nœud FunctionCall est le cœur de Tiramisu. Il possède :
functionName— le nom de la fonction (texte avant le{)parameters— un nœudParameterscontenant les arguments de la fonction
Les paramètres contiennent une liste de nœuds Parameter et NamedParameter. Chaque paramètre peut contenir du texte, des appels de fonctions imbriqués, ou des tableaux.
Importer les types de nœuds
Tous les types de nœuds sont disponibles depuis le package du parseur :
import {
Tiramisu,
Paragraph,
MixedText,
PureText,
FunctionCall,
Parameters,
Parameter,
NamedParameter,
ArrayValue,
ArrayItem,
} from "@timeleap/tiramisu/src/types/nodes"; La vérification du type de nœud utilise instanceof :
if (node instanceof FunctionCall) {
console.log(node.functionName);
}