package code.instr;

import code.space.Computation;
import code.space.Space;
import code.stuff.Logger;
import code.stuff.Tracer;
import code.term.Term;
import code.term.Variable;

/**
 * Construct a fresh (anonymous) variable and push it on the pre-term stack.
 *
 * @author Sergio Antoy
 * @since June 17, 2003
 */

public class MakeAnon implements Instruction {

    private MakeAnon() {}
    public final static MakeAnon singleton = new MakeAnon();

    public void execute(Computation computation) {
        Variable v = new Variable();
        Term term = new Term(v);
        Space.instance.preTerm.push(term);
        if (Tracer.instruction) {
            Logger.logln(computation.getIdString() + ": MakeAnon: " + term);
        }
    }

    public String printAsTxtLoadable() { return "MakeAnon"; }
}
