我想开始使用NRefactory 5解析CSharp文件,进行重构。
但文档很少。所以我尝试并失败了:
我从以下代码开始,看看我是否可以从cs文件中获取AstNode
树。
我希望解析为我生成一些节点,但不是。 有人可以指导我吗?
TextReader reader = File.OpenText(fname);
CompilationUnit compilationUnit;
CSharpParser parser = new CSharpParser();
compilationUnit = parser.Parse(reader, fname);
AstNode node = compilationUnit.GetNextNode();
System.Collections.Generic.IEnumerable<AstNode> desc =
compilationUnit.Descendants;
foreach (AstNode jo in desc)
{
System.Console.WriteLine("At least something here");
}
答案 0 :(得分:2)
查看NRefactory源代码中的ICSharpCode.NRefactory.Demo
项目 - 它可以解析一些代码并在TreeView中显示语法树。
您发布的代码确实应该生成一些节点 - compilationUnit.Children
将包含直接子节点(通常使用和名称空间声明)。
答案 1 :(得分:0)
编译单元现在已经过时了。它被语法树替换。
尝试以下代码:
TextReader reader = File.OpenText("myfile.cs");
SyntaxTree syntaxTree;
CSharpParser parser = new CSharpParser();
syntaxTree = parser.Parse(reader, "myfile.cs");
IEnumerable<AstNode> desc = syntaxTree.Descendants;
foreach(AstNode astNode in desc)
{
System.Console.WriteLine(astNode.GetType());
}