private static BranchID CreateNewBranch(ConditionalJumpNode splitNode) { BranchID newBranch = new BranchID(splitNode); splitNode.CreatedBranches.Add(newBranch); return(newBranch); }
public void SimpleTest() { var nodes = new List <Node> (); nodes.Add(new TemporaryNode()); nodes.Add(new TemporaryNode()); nodes.Add(new TemporaryNode()); nodes.Add(new TemporaryNode()); nodes.Add(Target.R10); var node = new ConditionalJumpNode(nodes [0], new ConditionalJumpNode(nodes [1], nodes [2], nodes [3]), nodes [4]); Console.WriteLine(node); var trace = new HashSet <Node> (TraceBuilder.BuildTrace(node)); bool fine = true; foreach (Node n in trace) { fine &= !(n is ConditionalJumpNode); } fine &= trace.Contains(nodes [2]); fine &= trace.Contains(nodes [3]); fine &= trace.Contains(nodes [4]); Assert.IsTrue(fine); }
public CompiledWhile() { compiledStatement = new NodeLinkedList(); condition = new NodeLinkedList(); body = new NodeLinkedList(); var conditionalJumpNode = new ConditionalJumpNode(compiledStatement.Last, body.First); var jumpBackNode = new JumpNode(compiledStatement.First); compiledStatement.Add(condition); compiledStatement.Add(conditionalJumpNode); // De body komt dus rechtstreeks na de conditionalJumpNode (dus op de .Next property) compiledStatement.Add(body); compiledStatement.Add(jumpBackNode); }
public BranchID(ConditionalJumpNode originatingNode) { lock (_LockGlobalIndex) { Index = GlobalIndex; GlobalIndex++; } OriginatingNode = originatingNode; OriginatingNodeIndex = OriginatingNode != null? OriginatingNode.CreatedBranches.Count : -1; //TODO not got design, parent should not be aware of sons if (!(this is BaseBranch)) { AllBranches.Add(this); } BranchType = BranchType.Exit; }
public virtual void Visit (ConditionalJumpNode node) { Visit (node as Node); }
public override void Visit(ConditionalJumpNode node) { Visit(node as Node); node.Condition.Accept(this); }
public void visit(ConditionalJumpNode cjn) { throw new NotImplementedException(); }