public override AssignLhs VisitMapAssignLhs(MapAssignLhs node)
 {
     //Contract.Requires(node != null);
       Contract.Ensures(Contract.Result<AssignLhs>() != null);
       CheckTypeParams(node, cce.NonNull(node.TypeParameters));
       return base.VisitMapAssignLhs(node);
 }
Example #2
0
 public override AssignLhs VisitMapAssignLhs(MapAssignLhs node) {
   //Contract.Requires(node != null);
   Contract.Ensures(Contract.Result<AssignLhs>() != null);
   MapAssignLhs clone = (MapAssignLhs)node.Clone();
   clone.Indexes = new List<Expr/*!*/>(clone.Indexes);
   return base.VisitMapAssignLhs(clone);
 }
Example #3
0
 public override AssignLhs VisitMapAssignLhs(MapAssignLhs node)
 {
     Contract.Ensures(Contract.Result<AssignLhs>() == node);
     this.Visit(node.Map);
     for (int i = 0; i < node.Indexes.Count; ++i)
         this.Visit(node.Indexes[i]);
     return node;
 }
Example #4
0
 public virtual AssignLhs VisitMapAssignLhs(MapAssignLhs node) {
   Contract.Requires(node != null);
   Contract.Ensures(Contract.Result<AssignLhs>() != null);
   node.Map = cce.NonNull((AssignLhs)this.Visit(node.Map));
   for (int i = 0; i < node.Indexes.Count; ++i)
     node.Indexes[i] = cce.NonNull((Expr)this.Visit(node.Indexes[i]));
   return node;
 }
Example #5
0
	void LabelOrAssign(out Cmd c, out IToken label) {
		IToken/*!*/ id; IToken/*!*/ x, y; Expr/*!*/ e0;
		c = dummyCmd;  label = null;
		AssignLhs/*!*/ lhs;
		List<AssignLhs/*!*/>/*!*/ lhss;
		List<Expr/*!*/>/*!*/ rhss;
		List<Expr/*!*/>/*!*/ indexes;
		
		Ident(out id);
		x = t; 
		if (la.kind == 12) {
			Get();
			c = null;  label = x; 
		} else if (la.kind == 13 || la.kind == 18 || la.kind == 51) {
			lhss = new List<AssignLhs/*!*/>(); 
			lhs = new SimpleAssignLhs(id, new IdentifierExpr(id, id.val)); 
			while (la.kind == 18) {
				MapAssignIndex(out y, out indexes);
				lhs = new MapAssignLhs(y, lhs, indexes); 
			}
			lhss.Add(lhs); 
			while (la.kind == 13) {
				Get();
				Ident(out id);
				lhs = new SimpleAssignLhs(id, new IdentifierExpr(id, id.val)); 
				while (la.kind == 18) {
					MapAssignIndex(out y, out indexes);
					lhs = new MapAssignLhs(y, lhs, indexes); 
				}
				lhss.Add(lhs); 
			}
			Expect(51);
			x = t; /* use location of := */ 
			Expression(out e0);
			rhss = new List<Expr/*!*/> ();
			rhss.Add(e0); 
			while (la.kind == 13) {
				Get();
				Expression(out e0);
				rhss.Add(e0); 
			}
			Expect(9);
			c = new AssignCmd(x, lhss, rhss); 
		} else SynErr(111);
	}