示例#1
0
        protected virtual void Write(IndentedTextWriter writer, Statement?statement, WriteStatementOptions options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            if (statement == null)
            {
                return;
            }

            WriteBeforeComments(writer, statement);
            switch (statement)
            {
            case ConditionStatement o:
                Write(writer, o, options);
                break;

            case ReturnStatement o:
                Write(writer, o, options);
                break;

            case YieldReturnStatement o:
                Write(writer, o, options);
                break;

            case YieldBreakStatement o:
                Write(writer, o, options);
                break;

            case AssignStatement o:
                Write(writer, o, options);
                break;

            case ExpressionStatement o:
                Write(writer, o, options);
                break;

            case ThrowStatement o:
                Write(writer, o, options);
                break;

            case UsingStatement o:
                Write(writer, o, options);
                break;

            case VariableDeclarationStatement o:
                Write(writer, o, options);
                break;

            case WhileStatement o:
                Write(writer, o, options);
                break;

            case IterationStatement o:
                Write(writer, o, options);
                break;

            case ExpressionCollectionStatement o:
                Write(writer, o, options);
                break;

            case GotoNextLoopIterationStatement o:
                Write(writer, o, options);
                break;

            case ExitLoopStatement o:
                Write(writer, o, options);
                break;

            case SnippetStatement o:
                Write(writer, o, options);
                break;

            case TryCatchFinallyStatement o:
                Write(writer, o, options);
                break;

            case AddEventHandlerStatement o:
                Write(writer, o, options);
                break;

            case RemoveEventHandlerStatement o:
                Write(writer, o, options);
                break;

            case CommentStatement o:
                Write(writer, o, options);
                break;

            default:
                throw new NotSupportedException();
            }

            WriteAfterComments(writer, statement);
        }
示例#2
0
 protected virtual void Write(IndentedTextWriter writer, IterationStatement statement, WriteStatementOptions options)
 {
     writer.Write("for (");
     if (statement.Initialization != null)
     {
         Write(writer, statement.Initialization, _inlineStatementWriteStatementOptions);
     }
     writer.Write("; ");
     if (statement.Condition != null)
     {
         Write(writer, statement.Condition);
     }
     writer.Write("; ");
     if (statement.IncrementStatement != null)
     {
         Write(writer, statement.IncrementStatement, _inlineStatementWriteStatementOptions);
     }
     writer.Write(")");
     writer.WriteLine();
     Write(writer, statement.Body);
 }
示例#3
0
        protected virtual void Write(IndentedTextWriter writer, RemoveEventHandlerStatement statement, WriteStatementOptions options)
        {
            if (statement.LeftExpression != null)
            {
                Write(writer, statement.LeftExpression);
            }

            writer.Write(" -= ");

            if (statement.RightExpression != null)
            {
                Write(writer, statement.RightExpression);
            }

            writer.WriteLine(";");
        }
示例#4
0
        protected virtual void Write(IndentedTextWriter writer, VariableDeclarationStatement statement, WriteStatementOptions options)
        {
            if (statement.Type != null)
            {
                Write(writer, statement.Type);
                writer.Write(" ");
            }
            else
            {
                writer.Write("var ");
            }

            WriteIdentifier(writer, statement.Name);
            if (statement.InitExpression != null)
            {
                writer.Write(" = ");
                Write(writer, statement.InitExpression);
            }

            options.WriteEnd(writer);
        }
示例#5
0
        protected virtual void Write(IndentedTextWriter writer, WhileStatement statement, WriteStatementOptions options)
        {
            writer.Write("while (");
            Write(writer, statement.Condition);
            writer.Write(")");
            writer.WriteLine();

            Write(writer, statement.Body);
        }
示例#6
0
 protected virtual void Write(IndentedTextWriter writer, SnippetStatement statement, WriteStatementOptions options)
 {
     writer.WriteLine(statement.Statement);
 }
示例#7
0
 protected virtual void Write(IndentedTextWriter writer, UsingStatement statement, WriteStatementOptions options)
 {
     writer.Write("using (");
     Write(writer, statement.Statement, _inlineStatementWriteStatementOptions);
     writer.Write(")");
     writer.WriteLine();
     Write(writer, statement.Body);
 }
示例#8
0
 protected virtual void Write(IndentedTextWriter writer, AssignStatement statement, WriteStatementOptions options)
 {
     Write(writer, statement.LeftExpression);
     writer.Write(" = ");
     Write(writer, statement.RightExpression);
     options.WriteEnd(writer);
 }
示例#9
0
 protected virtual void Write(IndentedTextWriter writer, ExpressionStatement statement, WriteStatementOptions options)
 {
     Write(writer, statement.Expression);
     options.WriteEnd(writer);
 }
示例#10
0
 protected virtual void Write(IndentedTextWriter writer, YieldBreakStatement statement, WriteStatementOptions options)
 {
     writer.WriteLine("yield break;");
 }
示例#11
0
 protected virtual void Write(IndentedTextWriter writer, ConditionStatement statement, WriteStatementOptions options)
 {
     writer.Write("if (");
     Write(writer, statement.Condition);
     writer.WriteLine(")");
     Write(writer, statement.TrueStatements);
     if (statement.FalseStatements != null)
     {
         writer.WriteLine("else");
         Write(writer, statement.FalseStatements);
     }
 }
示例#12
0
 protected virtual void Write(IndentedTextWriter writer, YieldReturnStatement statement, WriteStatementOptions options)
 {
     writer.Write("yield return");
     if (statement.Expression != null)
     {
         writer.Write(" ");
         Write(writer, statement.Expression);
     }
     writer.WriteLine(";");
 }
示例#13
0
 protected virtual void Write(IndentedTextWriter writer, ExitLoopStatement statement, WriteStatementOptions options)
 {
     writer.WriteLine("break;");
 }
示例#14
0
 protected virtual void Write(IndentedTextWriter writer, GotoNextLoopIterationStatement statement, WriteStatementOptions options)
 {
     writer.WriteLine("continue;");
 }
示例#15
0
 protected virtual void Write(IndentedTextWriter writer, ExpressionCollectionStatement statement, WriteStatementOptions options)
 {
     Write(writer, statement, ", ");
 }
示例#16
0
 protected virtual void Write(IndentedTextWriter writer, ThrowStatement statement, WriteStatementOptions options)
 {
     writer.Write("throw");
     if (statement.Expression != null)
     {
         writer.Write(" ");
         Write(writer, statement.Expression);
     }
     writer.WriteLine(";");
 }
示例#17
0
 protected virtual void Write(IndentedTextWriter writer, CommentStatement statement, WriteStatementOptions options)
 {
     WriteLineComment(writer, statement.Content);
 }
示例#18
0
        protected virtual void Write(IndentedTextWriter writer, TryCatchFinallyStatement statement, WriteStatementOptions options)
        {
            writer.WriteLine("try");
            Write(writer, statement.Try);

            if (statement.Catch != null)
            {
                Write(writer, statement.Catch);
            }

            if (statement.Finally != null)
            {
                writer.WriteLine("finally");
                Write(writer, statement.Finally);
            }
        }