public override Object Visit(ForStatement node, Object obj) { for (int i = 0; i < node.InitializerCount; i++) { node.GetInitializerElement(i).Accept(this, obj); } for (int i = 0; i < node.AfterInit.Count; i++) { node.AfterInit[i].Accept(this, obj); } for (int i = 0; i < node.BeforeCondition.Count; i++) { node.BeforeCondition[i].Accept(this, obj); } node.Condition.Accept(this, obj); for (int i = 0; i < node.AfterCondition.Count; i++) { node.AfterCondition[i].Accept(this, obj); } node.Statements.Accept(this, obj); for (int i = 0; i < node.IteratorCount; i++) { node.GetIteratorElement(i).Accept(this, obj); } return(null); }
public override Object Visit(ForStatement node, Object obj) { int indent = Convert.ToInt32(obj); this.printIndentation(indent); this.output.WriteLine("ForStatement [{0}:{1}]", node.Location.Line, node.Location.Column); this.printIndentation(indent + 1); this.output.WriteLine("Initialization"); for (int i = 0; i < node.InitializerCount; i++) { node.GetInitializerElement(i).Accept(this, indent + 2); } this.printIndentation(indent + 1); this.output.WriteLine("After initialization"); for (int i = 0; i < node.AfterInit.Count; i++) { node.AfterInit[i].Accept(this, indent + 2); } this.printIndentation(indent + 1); this.output.WriteLine("Before condition"); for (int i = 0; i < node.BeforeCondition.Count; i++) { node.BeforeCondition[i].Accept(this, indent + 2); } this.printIndentation(indent + 1); this.output.WriteLine("Condition"); node.Condition.Accept(this, indent + 2); this.printIndentation(indent + 1); this.output.WriteLine("After condition"); for (int i = 0; i < node.AfterCondition.Count; i++) { node.AfterCondition[i].Accept(this, indent + 2); } this.printIndentation(indent + 1); this.output.WriteLine("Statements"); node.Statements.Accept(this, indent + 2); this.printIndentation(indent + 1); this.output.WriteLine("Iterators"); for (int i = 0; i < node.IteratorCount; i++) { node.GetIteratorElement(i).Accept(this, indent + 2); } return(null); }
public override Object Visit(ForStatement node, Object obj) { List <Statement> initializer = new List <Statement>(); for (int i = 0; i < node.InitializerCount; i++) { initializer.Add((Statement)node.GetInitializerElement(i).Accept(this, obj)); } List <MoveStatement> afterInit = new List <MoveStatement>(); for (int i = 0; i < node.AfterInit.Count; i++) { afterInit.Add((MoveStatement)node.AfterInit[i].Accept(this, obj)); } List <ThetaStatement> beforeCondition = new List <ThetaStatement>(); for (int i = 0; i < node.BeforeCondition.Count; i++) { beforeCondition.Add((ThetaStatement)node.BeforeCondition[i].Accept(this, obj)); } Expression condition = (Expression)node.Condition.Accept(this, obj); List <MoveStatement> afterCondition = new List <MoveStatement>(); for (int i = 0; i < node.AfterCondition.Count; i++) { afterCondition.Add((MoveStatement)node.AfterCondition[i].Accept(this, obj)); } Statement statements = (Statement)node.Statements.Accept(this, obj); List <Statement> iterator = new List <Statement>(); for (int i = 0; i < node.IteratorCount; i++) { iterator.Add((Statement)node.GetIteratorElement(i).Accept(this, obj)); } ForStatement forStatement = new ForStatement(initializer, condition, iterator, statements, node.Location); forStatement.AfterInit = afterInit; forStatement.BeforeCondition = beforeCondition; forStatement.AfterCondition = afterCondition; return(forStatement); }
public override Object Visit(ForStatement node, Object obj) { Object aux = null; this.map.SetScope(); for (int i = 0; i < node.InitializerCount; i++) { node.GetInitializerElement(i).Accept(this, false); } SSAMap map1 = this.map.Clone(); if ((aux = node.Condition.Accept(this, false)) is SingleIdentifierExpression) { node.Condition = (SingleIdentifierExpression)aux; } SSAMap map2 = this.map.Clone(); node.Statements.Accept(this, obj); SSAMap map3 = this.map.Clone(); for (int i = 0; i < node.IteratorCount; i++) { node.GetIteratorElement(i).Accept(this, false); } // map4 = this.map List <MoveStatement> mvSt = map1.GetMoveStatements(this.map, node.Location.FileName, node.Location.Line); if (mvSt.Count != 0) { node.AfterInit = mvSt; } List <ThetaStatement> thSt = map1.GetThetaStatements(map2, ref this.map, node.Location.FileName, node.Location.Line); if (thSt.Count != 0) { node.BeforeCondition = thSt; } mvSt = map1.GetMoveStatements(map2, this.map, node.Location.FileName, node.Location.Line); if (mvSt.Count != 0) { node.AfterCondition = mvSt; } SSAInfo info = new SSAInfo(null, null, map1, this.map); node.Condition.Accept(new VisitorSSA2(), info); info = new SSAInfo(this.map, null, map1, this.map); node.Statements.Accept(new VisitorSSA2(), info); info = new SSAInfo(this.map, null, map1, this.map); for (int i = 0; i < node.IteratorCount; i++) { node.GetIteratorElement(i).Accept(new VisitorSSA2(), info); } this.addLocalVariable(this.map.ResetScope(), node.AuxInitializer); node.UpdateInitializer(); return(null); }
public override Object Visit(ForStatement node, Object obj) { if (node.Location == ((AstNode)obj).Location || found) { found = true; return(this.table); } this.table.Set(); for (int i = 0; i < node.InitializerCount; i++) { if (found) { return(this.table); } node.GetInitializerElement(i).Accept(this, obj); } for (int i = 0; i < node.AfterInit.Count; i++) { if (found) { return(this.table); } node.AfterInit[i].Accept(this, obj); } for (int i = 0; i < node.BeforeCondition.Count; i++) { if (found) { return(this.table); } node.BeforeCondition[i].Accept(this, obj); } if (found) { return(this.table); } node.Condition.Accept(this, obj); if (found) { return(this.table); } for (int i = 0; i < node.AfterCondition.Count; i++) { if (found) { return(this.table); } node.AfterCondition[i].Accept(this, obj); } if (found) { return(this.table); } node.Statements.Accept(this, obj); if (found) { return(this.table); } for (int i = 0; i < node.IteratorCount; i++) { if (found) { return(this.table); } node.GetIteratorElement(i).Accept(this, obj); } if (found) { return(this.table); } this.table.Reset(); return(this.table); }