public virtual ExpressionList VisitExpressionList(ExpressionList list)
 {
     if (list == null) return null;
     for (int i = 0, n = list.Count; i < n; i++)
         list[i] = (Expression)this.Visit(list[i]);
     return list;
 }
Example #2
0
 public override ExpressionList VisitExpressionList(ExpressionList expressions){
   if (expressions == null) return null;
   for (int i = 0, n = expressions.Count; i < n; i++)
     expressions[i] = this.VisitExpression(expressions[i]);
   return expressions;
 }
Example #3
0
 public virtual ExpressionList VisitLoopInvariantList(ExpressionList expressions){
   if (expressions == null) return null;
   for (int i = 0, n = expressions.Count; i < n; i++)
     expressions[i] = this.VisitExpression(expressions[i]);
   return expressions;
 }
Example #4
0
 public virtual void VisitLoopInvariantList(ExpressionList expressions)
 {
   if (expressions == null) return;
   for (int i = 0, n = expressions.Count; i < n; i++)
     this.VisitExpression(expressions[i]);
 }
Example #5
0
 public override ExpressionList VisitExpressionList(ExpressionList expressions)
 {
     if (expressions == null) return null;
     return base.VisitExpressionList(expressions.Clone());
 }
Example #6
0
    //HS D
    //FIXME: move!
    public virtual Statement VisitBlockHole(BlockHole block){
	if (block == null) return null;

	SourceContext sctx = block.SourceContext;	
	ExpressionList args = new ExpressionList();
	args.Add(block.Repeat);
	args.Add(block.IfBranches);
	args.Add(block.BranchOps);
	args.Add(block.Conjunctions);
	args.Add(block.Ops);
	args.Add(block.CondVars);
	args.Add(block.ArgVars);
	Expression tgt = new Identifier("BlockHole", sctx);
	MethodCall c = new MethodCall(tgt, args);
	return new ExpressionStatement(c);

	/*
	//HACK FIXME...
	int repeatN = (int) block.Repeat.Value;
	object ifBranchesOrig = block.IfBranches.Value;	
	bool ifBranchesNoElse = !(ifBranchesOrig is int);
	int ifBranches = ifBranchesNoElse ? 
	    (int) ((double) ifBranchesOrig) : (int) ifBranchesOrig;
	int branchOps = (int) block.BranchOps.Value;
        int conjunctions = (int) block.Conjunctions.Value;
        ExpressionList ops = block.Ops.Initializers;
        ExpressionList condVars = block.CondVars.Initializers;
        ExpressionList argVars = block.ArgVars.Initializers;
	SourceContext sctx = block.SourceContext;
	Method declaringMethod = block.DeclaringMethod;
	Hashtable classOpMethods = block.ClassOpMethods;
	ParameterList callingMtdParams = declaringMethod.Parameters;
	Identifier opN = (Identifier) ((Literal) ops[0]).Value; //FIXME:
	Method op = (Method) classOpMethods[opN.Name]; //HACK FIXME
	Debug.Assert (op != null, "Did you forget to mark method " + opN.Name + " as operation?"); //FIXME	//op.IsOperation
	bool isVoid = IsVoidType(op.ReturnType);
	Expression tgt = new MemberBinding(null, op); //op.Name;	
	ParameterList ps = op.Parameters;
	bool opTr = op.IsTransformable;
	bool[] trPrms = new bool[ps.Count];
	for (int i = 0; i < ps.Count; i++) {
	    Parameter p = ps[i];
	    trPrms[i] = (p.Flags & ParameterFlags.Transformable) > 0;
	}
	StatementList stmts = new StatementList();
	for(int i = 1; i <= repeatN; i++)
	    stmts.Add(GenIfBranch(sctx, ifBranches, ifBranchesNoElse, conjunctions, tgt, condVars, argVars, ps, isVoid, opTr, trPrms, callingMtdParams));
	Block res = new Block(stmts);	
	Console.WriteLine("HS D - block hole...\n");
	PrintMe(0, res);
	return res;
	*/
    }