Exemplo n.º 1
0
 public override Choice VisitChoice(Choice node) {
   //Contract.Requires(node != null);
   Contract.Ensures(Contract.Result<Choice>() != null);
   return base.VisitChoice((Choice)node.Clone());
 }
Exemplo n.º 2
0
 public virtual Choice VisitChoice(Choice node) {
   Contract.Requires(node != null);
   Contract.Ensures(Contract.Result<Choice>() != null);
   node.rs = this.VisitRESeq(node.rs);
   return node;
 }
Exemplo n.º 3
0
 public override Choice VisitChoice(Choice node)
 {
     Contract.Ensures(Contract.Result<Choice>() == node);
     this.VisitRESeq(node.rs);
     return node;
 }
Exemplo n.º 4
0
 public static RE Transform(Block b) {
   Contract.Requires(b != null);
   Contract.Ensures(Contract.Result<RE>() != null);
   TransferCmd tc = b.TransferCmd;
   if (tc is ReturnCmd) {
     return new AtomicRE(b);
   } else if (tc is GotoCmd) {
     GotoCmd/*!*/ g = (GotoCmd)tc;
     Contract.Assert(g != null);
     Contract.Assume(g.labelTargets != null);
     if (g.labelTargets.Count == 1) {
       return new Sequential(new AtomicRE(b), Transform(cce.NonNull(g.labelTargets[0])));
     } else {
       List<RE> rs = new List<RE>();
       foreach (Block/*!*/ target in g.labelTargets) {
         Contract.Assert(target != null);
         RE r = Transform(target);
         rs.Add(r);
       }
       RE second = new Choice(rs);
       return new Sequential(new AtomicRE(b), second);
     }
   } else {
     Contract.Assume(false);
     throw new cce.UnreachableException();
   }
 }