gentracevis.beh.html
Program{
void addTraceVisitor(String name)(@
addClassDef(ClassDef.parse("*notparsed* *visitor* " + name
+ " = <indent> int."));
@)
void generateTraceVisitor(String name, File file)=allParts{
before Program (@
host.openOutputFile(file);
Program.out.println(host.genericOutputVisitorPreamble(name));
@)
(@ ClassName classname; @)
before ClassDef (@
classname = host.get_classname();
Program.out.println(classname.makeBefore(
" out.println(\"before " + classname + "\");\n"
+" indent++;\n"
+" for (int i = 0; i < indent; i++) out.print(\" \");\n"));
Program.out.println(classname.makeAfter(
" out.println(\"after " + classname + "\");\n"
+" indent--;\n"
+" for (int i = 0; i < indent; i++) out.print(\" \");\n"));
@)
before Part (@
String part = "-> " + classname + ", "
+ host.get_partname() + ", "
+ host.get_classname();
Program.out.println(host.makeBefore(classname,
" out.println(\"before " + part + " \");\n"
+" indent++;\n"
+" for (int i = 0; i < indent; i++) out.print(\" \");\n"));
Program.out.println(host.makeAfter(classname,
" out.println(\"after " + part + " \");\n"
+" indent--;\n"
+" for (int i = 0; i < indent; i++) out.print(\" \");\n"));
@)
after Program (@
Program.out.println("}");
host.closeOutputFile();
@)
}
}