public static UnifiedExpression CreateFor(XElement node) { Contract.Requires(node != null); Contract.Requires(node.Name() == "for"); Contract.Assert( node.NthElement(1).Name() == "lasgn" || node.NthElement(1).Name() == "masgn"); return(UnifiedForeach.Create( CreateExpresion(node.NthElement(0)), CreateExpresion(node.NthElement(1).FirstElement()), CreateBlock(node.NthElement(2)))); }
public UnifiedElement VisitForeachStatement( ForeachStatement stmt, object data) { var type = LookupType(stmt.VariableType); var name = stmt.VariableName.ToVariableIdentifier(); var set = stmt.InExpression.TryAcceptForExpression(this); var body = stmt.EmbeddedStatement.TryAcceptForExpression(this).ToBlock(); var varDec = UnifiedVariableDefinition.Create( type: type, name: name); return(UnifiedForeach.Create( varDec.ToVariableDefinitionList(), set, body)); }