internal static MonoDevelop.CSharp.Ast.CompilationUnit Parse (CompilerCompilationUnit top) { if (top == null) return null; CSharpParser.ConversionVisitor conversionVisitor = new ConversionVisitor (top.LocationsBag); top.UsingsBag.Global.Accept (conversionVisitor); foreach (var special in top.SpecialsBag.Specials) { var comment = special as SpecialsBag.Comment; if (comment != null) { var type = (MonoDevelop.CSharp.Ast.CommentType)comment.CommentType; var start = new DomLocation (comment.Line, comment.Col); var end = new DomLocation (comment.EndLine, comment.EndCol); var domComment = new MonoDevelop.CSharp.Ast.Comment (type, start, end); domComment.StartsLine = comment.StartsLine; domComment.Content = comment.Content; InsertComment (conversionVisitor.Unit, domComment); } } return conversionVisitor.Unit; }
static void InsertComments (CompilerCompilationUnit top, ConversionVisitor conversionVisitor) { foreach (var special in top.SpecialsBag.Specials) { var comment = special as SpecialsBag.Comment; if (comment != null) { var type = (MonoDevelop.CSharp.Ast.CommentType)comment.CommentType; var start = new AstLocation (comment.Line, comment.Col); var end = new AstLocation (comment.EndLine, comment.EndCol); var domComment = new MonoDevelop.CSharp.Ast.Comment (type, start, end); domComment.StartsLine = comment.StartsLine; domComment.Content = comment.Content; InsertComment (conversionVisitor.Unit, domComment); } } }