首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NRefactory 5从一个简单的示例开始

NRefactory 5从一个简单的示例开始
EN

Stack Overflow用户
提问于 2012-06-13 00:27:51
回答 2查看 5.7K关注 0票数 4

我想开始使用NRefactory 5解析CSharp文件,进行重构。但是文档是稀缺的。所以我尝试了一下,但失败了:我从下面的代码开始,看看是否可以从cs文件中获得AstNode树。

我希望解析能为我生成一些节点,但不是。有人能给我指路吗?

代码语言:javascript
复制
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");
}
EN

回答 2

Stack Overflow用户

发布于 2012-06-17 04:36:34

看看NRefactory源代码中的ICSharpCode.NRefactory.Demo项目-它可以解析一些代码并在TreeView中显示语法树。

您发布的代码应该确实会生成一些节点- compilationUnit.Children将包含直接的子节点(通常使用和名称空间声明)。

还有CodeProject article

票数 2
EN

Stack Overflow用户

发布于 2017-08-23 15:07:25

编译单元现在已经过时了。将其替换为语法树。

尝试以下代码:

代码语言:javascript
复制
        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());
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11000807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档