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 override bool Visit(UnifiedForeach element, VisitorArgument arg) { Writer.Write(ForeachKeyword); Writer.Write("("); element.Element.TryAccept(this, arg); Writer.Write(ForeachDelimiter); element.Set.TryAccept(this, arg.Set(CommaDelimiter)); Writer.Write(")"); element.Body.TryAccept(this, arg.Set(ForBlock)); return(false); }
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)); }
public override bool Visit(UnifiedForeach element, VisitorArgument arg) { Writer.Write("for "); element.Element.TryAccept(this, arg); Writer.Write(" in "); element.Set.TryAccept(this, arg); Writer.WriteLine(":"); element.Body.TryAccept(this, arg.IncrementDepth()); if (!element.ElseBody.IsEmptyOrNull()) { Writer.WriteLine("else:"); element.ElseBody.TryAccept(this, arg.IncrementDepth()); } return(false); }
public override bool Visit(UnifiedForeach element, VisitorArgument arg) { Writer.Write(ForeachKeyword); Writer.Write("("); element.Element.TryAccept(this, arg); Writer.Write(ForeachDelimiter); element.Set.TryAccept(this, arg.Set(CommaDelimiter)); Writer.Write(")"); element.Body.TryAccept(this, arg.Set(ForBlock)); return false; }
public static Namespace GetNamespace(UnifiedForeach foreachNode) { var type = NamespaceType.TemporaryScope; var parents = DetectorHelper.GetParentTypes(type).Select( t => DetectorHelper.Namespace2UnifiedType(t)); var parentNode = DetectorHelper.GetFirstFoundNode( foreachNode, parents); return new Namespace { Value = "(foreach)", NamespaceType = type, Parent = Dispatcher(parentNode) }; }
public override bool Visit(UnifiedForeach element, VisitorArgument arg) { Writer.Write("for "); element.Element.TryAccept(this, arg); Writer.Write(" in "); element.Set.TryAccept(this, arg); Writer.WriteLine(":"); element.Body.TryAccept(this, arg.IncrementDepth()); if (!element.ElseBody.IsEmptyOrNull()) { Writer.WriteLine("else:"); element.ElseBody.TryAccept(this, arg.IncrementDepth()); } return false; }