public static ForStatement For(this SourceCode source, Expression initialValueExpression, Expression endValueExpression)
        {
            var Index = source.AddVar(typeof(int), null, initialValueExpression);

            var loop = new ForStatement(initialValueExpression)
            {
                Where     = Expression.LessThan(Index, endValueExpression),
                Index     = Index,
                MoveIndex = Index.PostIncrementAssign(),
            };

            source.Add(loop);

            return(loop);
        }
        public static ConditionalStatement If(this SourceCode source, Expression test, SourceCode @then, SourceCode @else)
        {
            var n = new ConditionalStatement()
            {
                ConditionalExpression = test,
            };

            n.Then.Merge(@then);

            if (@else != null)
            {
                n.Else.Merge(@else);
            }

            source.Add(n);

            return(n);
        }
 public static SourceCode Assign(this SourceCode source, Expression left, Expression right)
 {
     source.Add(left.AssignFrom(right));
     return(source);
 }