public void PreParseExpression(ParseContext context) { //var pl = context.Current; Condition.PreParseExpression(context); context.AddLevel(); foreach (var line in ThenCodeLines) { line.PreParseExpression(context); } context.RemoveLevel(); if (ElseCodeLines.Count > 0) { context.AddLevel(); foreach (var line in ElseCodeLines) { line.PreParseExpression(context); } context.RemoveLevel(); } }
public Expression ToExpression(ParseContext context) { var conditionExpression = Condition.ToExpression(context); context.AddLevel(); var thenLine = new List <Expression>(); var listOfThenVars = new List <ParameterExpression>(); foreach (var line in ThenCodeLines) { var expLine = line.ToExpression(context); var createVariable = line as CreateVariable; if (createVariable != null) { listOfThenVars.Add((ParameterExpression)expLine); expLine = createVariable.DefaultInitialize(context); } thenLine.Add(expLine); } var thenBlock = Expression.Block(listOfThenVars.ToArray(), thenLine); context.RemoveLevel(); var elseLine = new List <Expression>(); if (ElseCodeLines.Count > 0) { context.AddLevel(); var listOfElseVars = new List <ParameterExpression>(); foreach (var line in ElseCodeLines) { var expLine = line.ToExpression(context); var createVariable = line as CreateVariable; if (createVariable != null) { listOfElseVars.Add((ParameterExpression)expLine); expLine = createVariable.DefaultInitialize(context); } elseLine.Add(expLine); } context.RemoveLevel(); var elseBlock = Expression.Block(listOfElseVars, elseLine); return(Expression.IfThenElse(conditionExpression, thenBlock, elseBlock)); } return(Expression.IfThen(conditionExpression, thenBlock)); }
public Expression ToExpression(ParseContext context) { var conditionExpression = Condition.ToExpression(context); context.AddLevel(); var thenLine = new List <Expression>(); var listOfThenVars = new List <ParameterExpression>(); foreach (var line in CodeLines) { var expLine = line.ToExpression(context); var createVariable = line as CreateVariable; if (createVariable != null) { listOfThenVars.Add((ParameterExpression)expLine); expLine = createVariable.DefaultInitialize(context); } thenLine.Add(expLine); } var thenBlock = Expression.Block(listOfThenVars.ToArray(), thenLine); context.RemoveLevel(); LabelTarget label = Expression.Label(Guid.NewGuid().ToString()); var ifThenElse = Expression.IfThenElse( conditionExpression, thenBlock, Expression.Break(label)); return(Expression.Loop(ifThenElse, label)); }
public Expression ToExpression(ParseContext context) { var collectionVarExpr = CollectionSourceVar.ToExpression(context); //CollectionExpr context.AddLevel(); //Type itemType = CollectionSourceVar.ParsedType.GetGenericArguments().Single(); var item = LoopVar.ToExpression(context) as ParameterExpression; var loopContent = new List <Expression>(); foreach (var line in CodeLines) { var expLine = line.ToExpression(context); var createVariable = line as CreateVariable; if (createVariable != null) { //listOfThenVars.Add((ParameterExpression)expLine); expLine = createVariable.DefaultInitialize(context); } loopContent.Add(expLine); } return(ForEachExpr(collectionVarExpr, item, loopContent.ToArray(), context)); }
public override string ToString() { var ctx = new ParseContext(); ctx.AddLevel(); return(ToString(ctx)); }
public LambdaExpression ToExpression() { var ctx = new ParseContext(); ctx.AddLevel(); return((LambdaExpression)ToExpression(ctx)); }
private void PreParseExpression() { var ctx = new ParseContext(); ctx.AddLevel(); PreParseExpression(ctx); ctx.RemoveLevel(); }
public string ToString(ParseContext context) { var result = "if(" + Condition.ToString(context) + ")\n"; result += context.Pad + "{\n"; context.AddLevel(); foreach (var line in ThenCodeLines) { var createVariable = line as CreateVariable; if (createVariable != null) { createVariable.DefaultInitialize(context); } result += context.Pad + line.ToString(context) + ";\n"; } context.RemoveLevel(); result += context.Pad + "}"; if (ElseCodeLines.Count > 0) { result += context.Pad + "\n"; result += context.Pad + "else\n"; result += context.Pad + "{\n"; context.AddLevel(); foreach (var line in ElseCodeLines) { var createVariable = line as CreateVariable; if (createVariable != null) { createVariable.DefaultInitialize(context); } result += context.Pad + line.ToString(context) + ";\n"; } context.RemoveLevel(); result += context.Pad + "}"; } return(result); }
public void PreParseExpression(ParseContext context) { //var pl = context.Current; CollectionSourceVar.PreParseExpression(context); LoopVar = // CodeLine.CreateVariable(CollectionSourceVar.ParsedType, "loopvar"); CodeLine.CreateVariable(CollectionSourceVar.ParsedType.GetGenericArguments().Single(), LoopVarName); context.AddLevel(); LoopVar.PreParseExpression(context); foreach (var line in CodeLines) { line.PreParseExpression(context); } context.RemoveLevel(); }
public string ToString(ParseContext context) { var result = $"Foreach(var {LoopVarName} in {CollectionSourceVar.ToString(context)})\n"; result += context.Pad + "{\n"; context.AddLevel(); foreach (var line in CodeLines) { var createVariable = line as CreateVariable; createVariable?.DefaultInitialize(context); result += context.Pad + line.ToString(context) + ";\n"; } context.RemoveLevel(); result += context.Pad + "}"; return(result); }