internal void Parse(ITextSnapshot snapshot, out LanguageService.SyntaxTree.ITokenStream TokenStream, string path) { string source = snapshot.GetText(); // Currently we "eat" all Exception that might be raised // by XSharpSyntaxTree.ParseText TokenStream = null; try { LanguageService.CodeAnalysis.SyntaxTree tree = XSharpSyntaxTree.ParseText(source, null, path); var syntaxRoot = tree.GetRoot(); // Get the antlr4 parse tree root var xtree = ((LanguageService.CodeAnalysis.XSharp.Syntax.CompilationUnitSyntax)syntaxRoot).XSource; TokenStream = ((LanguageService.CodeAnalysis.XSharp.Syntax.CompilationUnitSyntax)syntaxRoot).XTokenStream; // var walker = new LanguageService.SyntaxTree.Tree.ParseTreeWalker(); var discover = new XSharpTreeDiscover(); discover.Snapshot = snapshot; discover.xsharpBraceCloseType = xsharpBraceCloseType; discover.xsharpBraceOpenType = xsharpBraceOpenType; discover.xsharpIdentifierType = xsharpIdentifierType; discover.xsharpRegionStartType = xsharpRegionStartType; discover.xsharpRegionStopType = xsharpRegionStopType; // Walk the tree. The TreeDiscover class will collect the tags. walker.Walk(discover, xtree); this.tags = discover.tags; } catch (Exception e) { System.Diagnostics.Debug.WriteLine(e.Message); } }