コード例 #1
0
 public static void WriteTo(this BoundTreeNode node, TextWriter writer)
 {
     if (writer is IndentedTextWriter iw)
     {
         WriteTo(node, iw);
     }
     else
     {
         WriteTo(node, new IndentedTextWriter(writer));
     }
 }
コード例 #2
0
        private static void WriteTo(this BoundTreeNode node, IndentedTextWriter writer)
        {
            switch (node)
            {
            case Block b:
                WriteBlock(b, writer);
                break;

            case VariableDeclaration vd:
                WriteVariableDeclaration(vd, writer);
                break;

            case FunctionDefinition fd:
                WriteFunctionDefinition(fd, writer);
                break;

            case ExpressionStatement es:
                WriteExpressionStatement(es, writer);
                break;

            case GotoStatement gs:
                WriteGotoStatement(gs, writer);
                break;

            case LabelStatement ls:
                WriteLabelStatement(ls, writer);
                break;

            case IfStatement ifs:
                WriteIfStatement(ifs, writer);
                break;

            case ReturnStatement rs:
                WriteReturnStatement(rs, writer);
                break;

            case AssignmentExpression ae:
                WriteAssignmentExpression(ae, writer);
                break;

            case VariableExpression ve:
                WriteVariableExpression(ve, writer);
                break;

            case ConversionExpression ce:
                WriteConversionExpression(ce, writer);
                break;

            case InvokeExpression ie:
                WriteInvokeExpression(ie, writer);
                break;

            case LiteralExpression le:
                WriteLiteralExpression(le, writer);
                break;

            case InvalidExpression inve:
                WriteInvalidExpression(inve, writer);
                break;

            case InvalidStatement _:
                writer.Write("<INV>");
                writer.WriteLine();
                break;

            default:
                writer.Write("<?>");
                break;
            }
        }