コード例 #1
0
        private static BranchID CreateNewBranch(ConditionalJumpNode splitNode)
        {
            BranchID newBranch = new BranchID(splitNode);

            splitNode.CreatedBranches.Add(newBranch);
            return(newBranch);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
ファイル: BranchID.cs プロジェクト: simcoster/Dopple
 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;
 }
コード例 #5
0
		public virtual void Visit (ConditionalJumpNode node)
		{
			Visit (node as Node);
		}
コード例 #6
0
 public override void Visit(ConditionalJumpNode node)
 {
     Visit(node as Node);
     node.Condition.Accept(this);
 }
コード例 #7
0
 public void visit(ConditionalJumpNode cjn)
 {
     throw new NotImplementedException();
 }