package rpn.basic;

import java.util.Hashtable;
import rpn.Calculator;
import rpn.WhileStream;

public class WhileItem extends Item {
	
	public WhileItem(Calculator ca) {
		super(ca);
		ca.systemInstall(this);
	}
	
	public void exec() {
		if (ca.check(2)) {
			Item a = ca.peek(1);
			Item b = ca.peek(0);
			if (a instanceof ProcItem && b instanceof ProcItem) {
				Item test[] = ((ProcItem) a).a;
				Item proc[] = ((ProcItem) b).a;
				WhileStream r = new WhileStream(ca, test, proc);
				ca.pushExec(r);
				ca.pop(2);
			} else {
				ca.error(this, CalcErr.Type);
			}
		}
		else {
			// underflow
			ca.error(this, CalcErr.Underflow);
		}
	}
	
	public String toString() {
		return("while");
	}
}