public ForStatement(LoopControlVariableExpression loopControlVariable, Expression start, Expression end, Expression step, Statement embeddedStatement, ArrayList nextExpressions)
 {
     this.start = start;
     this.nextExpressions = nextExpressions;
     this.end = end;
     this.step = step;
     this.embeddedStatement = embeddedStatement;
     this.loopControlVariable = loopControlVariable;
 }
 public override object Visit(LoopControlVariableExpression loopControlVariableExpression, object data)
 {
     //TODO
     return null;
 }
 public override object Visit(LoopControlVariableExpression loopControlVariableExpression, object data)
 {
     AddVariable(loopControlVariableExpression.Type,
                 loopControlVariableExpression.Name,
                 loopControlVariableExpression.StartLocation,
                 CurrentBlock == null ? new Point(-1, -1) : CurrentBlock.EndLocation);
     return data;
 }
	void LoopControlVariable(
#line  2320 "VBNET.ATG" 
out LoopControlVariableExpression loopExpr) {

#line  2322 "VBNET.ATG" 
		loopExpr = null;
		//Expression expr = null;
		TypeReference type = null;
		ArrayList arrayModifiers = null;
		string name;
		
		Qualident(
#line  2328 "VBNET.ATG" 
out name);
		if (
#line  2329 "VBNET.ATG" 
IsRank()) {
			ArrayTypeModifiers(
#line  2329 "VBNET.ATG" 
out arrayModifiers);
		}
		if (la.kind == 49) {
			lexer.NextToken();
			TypeName(
#line  2330 "VBNET.ATG" 
out type);

#line  2330 "VBNET.ATG" 
			if (name.IndexOf('.') > 0) { Error("No type def for 'for each' member indexer allowed."); } 
		}

#line  2332 "VBNET.ATG" 
		if(type != null) {
		if(type.RankSpecifier != null && arrayModifiers != null) {
			Error("array rank only allowed one time");
		} else {
			type.RankSpecifier = arrayModifiers;
		}
		} else {
			type = new TypeReference("Integer", arrayModifiers);
		}
		loopExpr = new LoopControlVariableExpression(name, type);
		
	}
 public object Visit(LoopControlVariableExpression loopControlVariableExpression, object data)
 {
     // I think the LoopControlVariableExpression is only used in the for statement
     // and there it is handled
     DebugOutput(loopControlVariableExpression);
     return "Should Never happen : " + loopControlVariableExpression;
 }
 public virtual object Visit(LoopControlVariableExpression loopControlVariableExpression, object data)
 {
     return loopControlVariableExpression.Expression.AcceptVisitor(this, data);
 }
 public ForeachStatement(LoopControlVariableExpression loopControlVariable , Expression expression, Statement embeddedStatement, Expression element)
 {
     this.loopControlVariable = loopControlVariable;
     this.expression        = expression;
     this.embeddedStatement = embeddedStatement;
 }