1 20 21 22 31 class Tprogram implements AST { 32 33 Tparlist parlist; Tdekllist dekllist; Texplist explist; Texplist arguments; 38 public Tprogram(Tparlist p, Tdekllist d, Texplist e, Texplist a) { 39 parlist=p; 40 dekllist=d; 41 explist=e; 42 arguments=a; 43 } 44 45 public String toString() { 46 return("Program:\n=============\ninput "+parlist+ 47 "\nfunctions\n"+dekllist+"\noutput "+explist+ 48 "\narguments "+arguments+"\nend"); 49 } 50 51 SymTab inputs; SymTab functions; 54 public void setSymtabs() { inputs = new SymTab(); parlist.setSymtab(inputs, true, 0); 57 functions = new SymTab(inputs); 58 dekllist.setSymtab(functions); 59 } 60 61 public void printSymtabs() { 62 System.out.print("Input variables-\n"+inputs); 63 System.out.print("Functions-\n"+functions); 64 dekllist.printSymtabs(); 65 } 66 67 public void checkcontext() { 68 dekllist.checkcontext(); explist.checkcontext(functions); arguments.checkcontext(new SymTab()); if (arguments.length()!=inputs.size()) 75 Main.error("Argument list and input variables list differ!"); 76 } 77 78 public void prepInterp() { dekllist.prepInterp(functions); 80 explist.prepInterp(functions); 81 } 82 83 public void interpret() { 84 int[] inputEnv = new int[inputs.size()]; 86 arguments.interpret(null,null,inputEnv,0); 87 88 System.out.println("Result:\n============="); 89 90 int[] ergebnis = new int[explist.length()]; 91 explist.interpret(inputEnv,null,ergebnis,0); 93 int i; 94 for (i=explist.length()-1; i > 0; i--) 95 System.out.print(ergebnis[i]+", "); 96 System.out.println(ergebnis[i]); 97 } 98 } 99 100
| Popular Tags
|