Exemplo n.º 1
0
        public static Object For(Cons args, Environment environment)
        {
            Environment localEnvironment = new Environment(environment);

            Runtime.Eval(args.First(), localEnvironment);
            object test;

            while ((Conversions.ObjectToBoolean(test = Runtime.Eval(args.Second(), localEnvironment))))
            {
                foreach (object item in (Cons)args.Cdddr())
                {
                    Runtime.Eval(item, localEnvironment);
                }
                Runtime.Eval(args.Third(), localEnvironment);
            }
            return(test);
        }
Exemplo n.º 2
0
		/// <summary>
		/// (for initialiser test iterator statement)
		/// The for special form corresponds to the for construct found in most algebraic 
		/// programming languages. The initialiser is executed. The statement is executed 
		/// while test is true. The iterator is executed at the end of each statement execution. 
		/// </summary>
		/// <param name="args"></param>
		/// <param name="environment"></param>
		/// <returns></returns>
		public static Object For(Cons args, Environment environment) 
		{
			Environment localEnvironment = new Environment(environment);
			Runtime.Eval(args.First(),localEnvironment);
			object test;
			while ((Conversions.ObjectToBoolean(test = Runtime.Eval(args.Second(),localEnvironment)))) 
			{
				foreach (object item in (Cons)args.Cdddr()) 
				{
					Runtime.Eval(item, localEnvironment);
				}
				Runtime.Eval(args.Third(),localEnvironment);
			}
			return test;
		}
Exemplo n.º 3
0
    /// <summary>
    /// (for initialiser test iterator statement)
    /// </summary>
    public static Object For(Cons args, LSharp.Environment environment)
    {
        //string v = "//(for " + Printer.ConsToString(args) + ")" + NewLine + "{" + NewLine;
        string v = "{" + NewLine;
        LSharp.Environment localEnvironment = new LSharp.Environment(environment);
        v += Generate(args.First(),localEnvironment);
        v += Generate(args.Second(),localEnvironment);
        v += @"while ((Conversions.ObjectToBoolean(retval))
{
";
        foreach (object item in (Cons)args.Cdddr())
        {
            v += Generate(item, localEnvironment);
        }

        v += Generate(args.Third(),localEnvironment);

        v += Generate(args.Second(),localEnvironment);

        v += @"}
";
        return v + "}" + NewLine;
    }