Ich möchte den SyntaxNode einer Zeile mit der Position (lineNumber) erhalten. Der folgende Code sollte selbsterklärend sein, aber lassen Sie mich wissen, wenn Sie Fragen haben.Get der SyntaxNode gegeben die linenumber in einem SyntaxTree
static void Main()
{
string codeSnippet = @"using System;
class Program
{
static void Main(string[] args)
{
Console.WriteLine(""Hello, World!"");
}
}";
SyntaxTree tree = SyntaxTree.ParseCompilationUnit(codeSnippet);
string[] lines = codeSnippet.Split('\n');
SyntaxNode node = GetNode(tree, 6); //How??
}
static SyntaxNode GetNode(SyntaxTree tree,int lineNumber)
{
throw new NotImplementedException();
// *** What I did ***
//Calculted length from using System... to Main(string[] args) and named it (totalSpan)
//Calculated length of the line(lineNumber) Console.Writeline("Helllo...."); and named it (lineSpan)
//Created a textspan : TextSpan span = new TextSpan(totalSpan, lineSpan);
//Was able to get back the text of the line : tree.GetLocation(span);
//But how to get the SyntaxNode corresponding to that line??
}
Was ist, wenn es keinen Knoten in dieser Zeile gibt? Was ist, wenn es mehr als eins gibt? – svick
@svick Ich nehme idealen Fall an. –