Exemplo n.º 1
0
        public Node WriteBranch(AstBranch branch, string parentId)
        {
            var name = BranchTypeToName(branch.BranchKind);
            var node = CreateNode(name, branch.NodeKind);

            _ = CreateLink(parentId, node.Id);

            var conditional = branch.ToConditional();

            if (conditional is not null)
            {
                if (conditional.HasExpression)
                {
                    node.Label = conditional.Expression.AsString();
                }

                var code = conditional.CodeBlock;
                if (code is not null)
                {
                    var blockNode = WriteCodeBlock(code, node.Id);
                    if (conditional.HasExpression)
                    {
                        var link = FindLink(node.Id, blockNode.Id);
                        link.Label = "if";
                    }
                }

                if (conditional.HasSubBranch)
                {
                    var subNode = WriteBranch(conditional.SubBranch, node.Id);
                    var link    = FindLink(node.Id, subNode.Id);
                    link.Label = "else";
                }
            }

            return(node);
        }
Exemplo n.º 2
0
 public virtual void VisitBranch(AstBranch branch)
 {
     branch.VisitChildren(this);
 }
Exemplo n.º 3
0
 public override void VisitBranch(AstBranch branch)
 {
     branch.Parent.Should().NotBeNull();
     branch.VisitChildren(this);
 }