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); }