コード例 #1
0
        public override void VisitBranchConditional(AstBranchConditional branch)
        {
            if (branch.HasExpression)
            {
                Context.CodeBuilder.StartBranch(branch);
                Context.CodeBuilder.CsBuilder.Append("(");

                Visit(branch.Expression);

                Context.CodeBuilder.CsBuilder.StartScope(")");

                Visit(branch.CodeBlock);

                Context.CodeBuilder.CsBuilder.EndScope();

                if (branch.HasSubBranch)
                {
                    var subHasExpression = branch.SubBranch.HasExpression;
                    Context.CodeBuilder.CsBuilder.StartBranch(BranchStatement.Else);

                    if (!subHasExpression)
                    {
                        Context.CodeBuilder.CsBuilder.StartScope();
                    }

                    Visit(branch.SubBranch);

                    if (!subHasExpression)
                    {
                        Context.CodeBuilder.CsBuilder.EndScope();
                    }
                }
            }
            else if (branch.HasCodeBlock)
            {
                Visit(branch.CodeBlock);
            }
        }
コード例 #2
0
 public virtual void VisitBranchConditional(AstBranchConditional branch)
 {
     branch.VisitChildren(this);
 }
コード例 #3
0
 public override void VisitBranchConditional(AstBranchConditional branch)
 {
     branch.Parent.Should().NotBeNull();
     branch.VisitChildren(this);
 }