import edu.neu.ccs.demeter.*;
class PrintVisitor extends UniversalVisitor {
protected int indent;
public int get_indent() { return indent; }
public void set_indent(int new_indent) { indent = new_indent; }
protected boolean needSpace;
public boolean get_needSpace() { return needSpace; }
public void set_needSpace(boolean new_needSpace) { needSpace = new_needSpace; }
public PrintVisitor() { super(); }
public PrintVisitor(int indent, boolean needSpace) {
super();
set_indent(indent);
set_needSpace(needSpace);
}
protected java.io.PrintWriter out = new java.io.PrintWriter(System.out, true);
java.io.PrintWriter get_out() { return out; }
void set_out(java.io.PrintWriter new_out) { out = new_out; }
PrintVisitor(java.io.PrintWriter out) { set_out(out); }
PrintVisitor(java.io.PrintStream out)
{ set_out(new java.io.PrintWriter(out, true)); }
public void finish() { out.flush(); }
protected void space() {
if (needSpace) out.print(" ");
needSpace = false;
}
public void before_cnf(CNFwithType source, CNF dest) {
out.print("");
needSpace = false;
}
public void before_cnftype(CNFwithType source, CNFType dest) {
space();
out.print("type");
needSpace = true;
}
public void before_correct(CNFwithType source, Boolean dest) {
space();
out.print("correct");
needSpace = true;
space();
out.print(source.get_correct());
needSpace = true;
}
public void after_correct(CNFwithType source, Boolean dest) {
out.print("");
needSpace = false;
}
public void before_pair_plist(CNFType source, Pair_PList dest) {
out.print("(");
needSpace = false;
}
public void after_pair_plist(CNFType source, Pair_PList dest) {
out.print(")");
needSpace = false;
}
public void before_listLength(Pair source, int dest) {
out.print("(");
needSpace = false;
space();
out.print(source.get_listLength());
needSpace = true;
}
public void before_posLits(Pair source, int dest) {
out.print(",");
needSpace = false;
space();
out.print(source.get_posLits());
needSpace = true;
}
public void after_posLits(Pair source, int dest) {
out.print(")");
needSpace = false;
}
public void before_exps(FinishedProduct source, Expression_PList dest) {
out.print("");
needSpace = false;
}
public void after_exps(FinishedProduct source, Expression_PList dest) {
out.print("");
needSpace = false;
}
public void before_assignment(LetExp source, Literal dest) {
out.println();
for (int i = 0; i < indent; i++) out.print("\t");
needSpace = false;
out.print("");
needSpace = false;
out.print("");
needSpace = false;
}
public void before_body(LetExp source, Expression dest) {
out.print("");
needSpace = false;
out.print("\t");
indent++;
needSpace = false;
}
public void after_body(LetExp source, Expression dest) {
out.print("");
needSpace = false;
indent--;
}
public void before_clauses(CNF source, Clause_PList dest) {
out.println();
for (int i = 0; i < indent; i++) out.print("\t");
needSpace = false;
out.print("");
needSpace = false;
}
public void before_sat(CNF source, ClauseCount dest) {
out.println();
for (int i = 0; i < indent; i++) out.print("\t");
needSpace = false;
out.print("");
needSpace = false;
}
public void after_sat(CNF source, ClauseCount dest) {
out.print("");
needSpace = false;
}
public void before_unsat(CNF source, ClauseCount dest) {
out.println();
for (int i = 0; i < indent; i++) out.print("\t");
needSpace = false;
out.print("");
needSpace = false;
}
public void after_unsat(CNF source, ClauseCount dest) {
out.print("");
needSpace = false;
}
public void after(CNF host) {
out.print("");
needSpace = false;
}
public void before_weight(Clause source, Weight dest) {
out.println();
for (int i = 0; i < indent; i++) out.print("\t");
needSpace = false;
out.print("");
needSpace = false;
}
public void after_literals(Clause source, Literal_PList dest) {
out.print("");
needSpace = false;
}
public void before_variable(Pos source, Variable dest) {
out.print("");
needSpace = false;
}
public void after_variable(Pos source, Variable dest) {
out.print("");
needSpace = false;
}
public void before_variable(Neg source, Variable dest) {
out.print("");
needSpace = false;
}
public void after_variable(Neg source, Variable dest) {
out.print("");
needSpace = false;
}
public void before_v(Variable source, Ident dest) {
space();
out.print(source.get_v());
needSpace = true;
}
public void before_v(Weight source, int dest) {
out.print("");
needSpace = false;
space();
out.print(source.get_v());
needSpace = true;
}
public void after_v(Weight source, int dest) {
out.print("");
needSpace = false;
}
public void before_v(ClauseCount source, int dest) {
out.print("");
needSpace = false;
space();
out.print(source.get_v());
needSpace = true;
}
public void after_v(ClauseCount source, int dest) {
out.print("");
needSpace = false;
}
public void before_s(Main source, String dest) {
space();
out.print("\"" + source.get_s() + "\"");
needSpace = true;
}
public void before_indent(PrintVisitor source, int dest) {
space();
out.print(source.get_indent());
needSpace = true;
}
public void before_needSpace(PrintVisitor source, boolean dest) {
space();
out.print(source.get_needSpace());
needSpace = true;
}
public void before_copy(CopyVisitor source, Object dest) {
space();
out.print(source.get_copy());
needSpace = true;
}
public void before_is_equal(SubgraphVisitor source, boolean dest) {
space();
out.print(source.get_is_equal());
needSpace = true;
}
public void before_is_equal(EqualVisitor source, boolean dest) {
space();
out.print(source.get_is_equal());
needSpace = true;
}
public void before_indent(DisplayVisitor source, int dest) {
space();
out.print(source.get_indent());
needSpace = true;
}
public void before_indent(TraceVisitor source, int dest) {
space();
out.print(source.get_indent());
needSpace = true;
}
void universal_trv0_bef(UniversalVisitor _v_) {
super.universal_trv0_bef(_v_);
}
void universal_trv0_aft(UniversalVisitor _v_) {
super.universal_trv0_aft(_v_);
}
void universal_trv0(UniversalVisitor _v_) {
universal_trv0_bef(_v_);
super.universal_trv0(_v_);
universal_trv0_aft(_v_);
}
}