01: package dk.brics.soot.intermediate.representation;
02:
03: public class ToStringVisitor extends StatementProcessor<String> {
04:
05: @Override
06: public String process(FooMethodCall s) {
07: return "" + s.getAssignmentTarget() + " = "
08: + s.getTarget().getName() + "()";
09: }
10:
11: @Override
12: public String process(SomeMethodCall s) {
13: return "" + s.getTarget().getName() + "("
14: + getArgs(s.getArgs()) + ")";
15: }
16:
17: private String getArgs(Variable[] args) {
18: String s = "";
19: for (Variable v : args) {
20: //System.err.println(v);
21: s += v.toString() + ", ";
22: }
23: if (s.length() > 2)
24: return s.substring(0, s.length() - 2);
25: return s;
26: }
27:
28: @Override
29: public String process(FooInit s) {
30: return "" + s.getAssignmentTarget() + " = new Foo();";
31: }
32:
33: @Override
34: public String process(FooAssignment s) {
35: return "" + "f = f";
36: }
37:
38: @Override
39: public String process(Return s) {
40: if (s.getAssignmentTarget() != null)
41: return "return " + s.getAssignmentTarget();
42: return "return";
43: }
44:
45: @Override
46: public String process(Nop s) {
47: return "nop";
48: }
49:
50: @Override
51: public String process(MethodHead s) {
52: return "methodhead";
53: }
54: }
|