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); }
public virtual void VisitBranch(AstBranch branch) { branch.VisitChildren(this); }
public override void VisitBranch(AstBranch branch) { branch.Parent.Should().NotBeNull(); branch.VisitChildren(this); }