/// <summary> /// Registers a new <see cref="CodeCommentDecorator"/> with the specified <paramref name="outputVisitor"/>. /// </summary> public static CodeCommentDecorator Install(IOutputAstVisitor outputVisitor) { var ccd = new CodeCommentDecorator(outputVisitor.OutputFormatter); outputVisitor.BeforeNodeVisit += ccd.AcceptNodeStart; outputVisitor.AfterNodeVisit += ccd.AcceptNodeEnd; return ccd; }
/// <summary> /// Registers a new <see cref="CodeCommentDecorator"/> with the specified <paramref name="outputVisitor"/>. /// </summary> public static CodeCommentDecorator Install(IOutputAstVisitor outputVisitor) { var ccd = new CodeCommentDecorator(outputVisitor.OutputFormatter); outputVisitor.BeforeNodeVisit += ccd.AcceptNodeStart; outputVisitor.AfterNodeVisit += ccd.AcceptNodeEnd; return(ccd); }
/// <summary> /// Performs the reverse operation of parsing by serializing the specified <paramref name="compilationUnit"/> /// to source code. /// </summary> /// /// <param name="compilationUnit"> /// A <see cref="CompilationUnit"/> which is to be turned into source code. /// </param> /// /// <returns> /// A string representing the source code that would compile to the provided <paramref name="compilationUnit"/>. /// </returns> public static string GenerateSourceCode(this CompilationUnit compilationUnit) { var outputVisitor = new CSharpOutputVisitor { Options = { IndentationChar = ' ', TabSize = 4, IndentSize = 4, } }; using (CodeCommentDecorator.Install(outputVisitor)) { outputVisitor.VisitCompilationUnit(compilationUnit, null); } return(outputVisitor.Text); }