public String Print(LoopNode lnode)
        {
            string str = "loop(int " + lnode.name + "="
                         + lnode.init + "," + lnode.times
                         + ")" + "\n" + "{";

            foreach (Expression exp in lnode.lexpr)
            {
                str += "\n \t" + Print(exp);
            }

            return(str + "\n" + "}" + "\n");
        }
        private bool VerifyLoopNode(LoopNode lnode, Environment env)
        {
            Func <GrammarNode, bool> f = gnode => !IsFixedInt(GetType(gnode, env));

            string            name = lnode.name;
            type              t    = TypeNodeToType(lnode.typeNode, env);
            List <Expression> lexp = lnode.lexpr;

            Environment newEnv = env.Duplicate();

            newEnv.Add(name, new FixedType(new IntType()));

            if (f(lnode.init) || f(lnode.times))
            {
                return(false);
            }

            foreach (Expression exp in lexp)
            {
                GetType(exp, newEnv);
            }

            return(true);
        }