Пример #1
0
        public static void BuildClassDictionary(string sourcePath)
        {
            AllClasses = new Dictionary <string, ClassBuilder>();
            var options = new Microsoft.CodeAnalysis.CSharp.CSharpParseOptions().WithPreprocessorSymbols("RHINO_SDK").WithDocumentationMode(Microsoft.CodeAnalysis.DocumentationMode.Parse);

            foreach (var file in AllSourceFiles(sourcePath))
            {
                if (System.IO.Path.GetFileName(file).StartsWith("auto", StringComparison.OrdinalIgnoreCase))
                {
                    continue;
                }
                string text = System.IO.File.ReadAllText(file);
                if (!text.Contains("RHINO_SDK"))
                {
                    continue;
                }
                if (!text.Contains("Geometry"))
                {
                    continue;
                }

                Console.WriteLine($"parse: {file}");
                var tree             = Microsoft.CodeAnalysis.CSharp.CSharpSyntaxTree.ParseText(text, options);
                SourceFileWalker sfw = new SourceFileWalker();
                sfw.Construct(tree.GetRoot());
            }
        }
Пример #2
0
        public static (List <ParsedType>, List <ParsedMember>, List <ParsedType>) ParseSource(string code)
        {
            var options          = new Microsoft.CodeAnalysis.CSharp.CSharpParseOptions().WithPreprocessorSymbols("RHINO_SDK").WithDocumentationMode(Microsoft.CodeAnalysis.DocumentationMode.Parse);
            var tree             = Microsoft.CodeAnalysis.CSharp.CSharpSyntaxTree.ParseText(code, options);
            SourceFileWalker sfw = new SourceFileWalker();

            sfw.Visit(tree.GetRoot());
            return(sfw._parsedBaseTypes, sfw._parsedMembers, sfw._parsedNamespaces);
        }