C# 从一个简单的例子开始
我想开始使用NRefactory 5解析CSharp文件,进行重构。 但文件资料却很少。所以我尝试了,但失败了: 我从下面的代码开始,看看是否可以从cs文件中获取C# 从一个简单的例子开始,c#,nrefactory,C#,Nrefactory,我想开始使用NRefactory 5解析CSharp文件,进行重构。 但文件资料却很少。所以我尝试了,但失败了: 我从下面的代码开始,看看是否可以从cs文件中获取AstNode树 我希望解析会为我生成一些节点,但不会。 有人能指引我吗 TextReader reader = File.OpenText(fname); CompilationUnit compilationUnit; CSharpParser parser = new CSharpParser(); compilationUni
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");
}
TextReader=File.OpenText(fname);
编译单元编译单元;
CSharpParser=新的CSharpParser();
compilationUnit=parser.Parse(reader,fname);
AstNode node=compilationUnit.GetNextNode();
System.Collections.Generic.IEnumerable desc=
编译单元;
foreach(描述中的AstNode jo)
{
System.Console.WriteLine(“这里至少有一些东西”);
}
查看NRefactory源代码中的ICSharpCode.NRefactory.Demo
项目-它可以解析一些代码并在树视图中显示语法树
您发布的代码确实应该生成一些节点-compilationUnit.Children
将包含直接子节点(通常使用和名称空间声明)
还有。编译单元现在已经过时了。它被替换为语法树 请尝试以下代码:
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());
}
TextReader=File.OpenText(“myfile.cs”);
合成树;
CSharpParser=新的CSharpParser();
syntaxTree=parser.Parse(读取器,“myfile.cs”);
IEnumerable desc=syntaxTree.substands;
foreach(描述中的AstNode AstNode)
{
System.Console.WriteLine(astNode.GetType());
}
谢谢您的回答。我还发现,在演示和测试中使用NRefactory的源代码是最好的源代码。特别是因为新版本5.0使大多数发布在互联网上的示例过时。