core:
import java.io.PrintStream;
import edu.neu.ccs.demeter.*;
add: 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 constructor PrintVisitor() {{ super(); }}
public constructor 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_exps(Program source, Expression_List dest) {{
out.print("");
needSpace = false;
}}
public void after_exps(Program source, Expression_List 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) {{
indent--;
out.println();
for (int i = 0; i < indent; i++) out.print("\t");
needSpace = false;
out.print("");
needSpace = false;
}}
public void before(CNF host) {{
out.println();
for (int i = 0; i < indent; i++) out.print("\t");
needSpace = false;
out.print("");
needSpace = false;
}}
public void before_clauses(CNF source, Clause_List dest) {{
out.println();
for (int i = 0; i < indent; i++) out.print("\t");
needSpace = false;
out.print("");
needSpace = false;
out.print("\t");
indent++;
needSpace = false;
}}
public void after_clauses(CNF source, Clause_List dest) {{
indent--;
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_clausetype_list(CNFType source, ClauseType_List dest) {{
out.println();
for (int i = 0; i < indent; i++) out.print("\t");
needSpace = false;
out.print("");
needSpace = false;
out.print("\t");
indent++;
needSpace = false;
}}
public void after_clausetype_list(CNFType source, ClauseType_List dest) {{
indent--;
out.println();
for (int i = 0; i < indent; i++) out.print("\t");
needSpace = false;
out.print("");
needSpace = false;
}}
public void before_length(ClauseType source, ClauseLength dest) {{
out.println();
for (int i = 0; i < indent; i++) out.print("\t");
needSpace = false;
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, Literals dest) {{
indent--;
out.println();
for (int i = 0; i < indent; i++) out.print("\t");
needSpace = false;
out.print("");
needSpace = false;
}}
public void before_literals(Literals source, Literal_List dest) {{
out.println();
for (int i = 0; i < indent; i++) out.print("\t");
needSpace = false;
out.print("");
needSpace = false;
out.print("\t");
indent++;
needSpace = false;
}}
public void after_literals(Literals source, Literal_List dest) {{
indent--;
out.println();
for (int i = 0; i < indent; i++) out.print("\t");
needSpace = false;
out.print("");
needSpace = false;
}}
public void before_variable(Pos source, Variable dest) {{
out.println();
for (int i = 0; i < indent; i++) out.print("\t");
needSpace = false;
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.println();
for (int i = 0; i < indent; i++) out.print("\t");
needSpace = false;
out.print("");
needSpace = false;
}}
public void after_variable(Neg source, Variable dest) {{
out.print("");
needSpace = false;
}}
public void before_v(Variable source, Ident dest) {{
out.print(" ");
needSpace = false;
space();
out.print(source.get_v());
needSpace = true;
}}
public void after_v(Variable source, Ident dest) {{
out.print(" ");
needSpace = false;
}}
public void before_v(Weight source, String dest) {{
out.print(" ");
needSpace = false;
space();
out.print("\"" + source.get_v() + "\"");
needSpace = true;
}}
public void after_v(Weight source, String 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_v(ClauseLength source, String dest) {{
out.print(" ");
needSpace = false;
space();
out.print("\"" + source.get_v() + "\"");
needSpace = true;
}}
public void after_v(ClauseLength source, String 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_);
}
}}
}