C# Language Arbre de syntaxe


Exemple

Un arbre de syntaxe est une structure de données immuable représentant le programme sous la forme d'une arborescence de noms, de commandes et de marques (comme précédemment configuré dans l'éditeur).

Par exemple, supposons qu'une instance Microsoft.CodeAnalysis.Compilation nommée compilation ait été configurée. Il existe plusieurs façons de répertorier les noms de chaque variable déclarée dans le code chargé. Pour ce faire, prenez tous les éléments de la syntaxe dans chaque document (la méthode DescendantNodes ) et utilisez Linq pour sélectionner les nœuds décrivant la déclaration de variable:

foreach (var syntaxTree in compilation.SyntaxTrees)
{
    var root = await syntaxTree.GetRootAsync();
    var declaredIdentifiers = root.DescendantNodes()
        .Where(an => an is VariableDeclaratorSyntax)
        .Cast<VariableDeclaratorSyntax>()
        .Select(vd => vd.Identifier);

    foreach (var di in declaredIdentifiers)
    {
        Console.WriteLine(di);
    }
}

Chaque type de construction C # avec un type correspondant existera dans l'arbre de syntaxe. Pour trouver rapidement des types spécifiques, utilisez la fenêtre Syntax Visualizer de Visual Studio. Ceci interprétera le document ouvert actuel comme un arbre de syntaxe Roslyn.