// This class is used to test the environment // simulation of Assignment 4, CS 152, // Spring 2000. class A4 { public static void main(String argv[]){ /* begin main begin f(x,y) end f f(1,2) end main */ Environment e=new Environment(); Frame f=new Frame(null); f.addBinding(new Binding(0)); e.addFrame(f); e.lookupAndPrint(0,0); System.out.println(""); Frame f1=new Frame(f); f1.addBinding(new Binding(1)); f1.addBinding(new Binding(2)); e.addFrame(f1); e.lookupAndPrint(0,0); e.lookupAndPrint(0,1); e.lookupAndPrint(0,2); e.lookupAndPrint(1,0); System.out.println(""); e.deleteFrame(); e.lookupAndPrint(0,0); System.out.println(""); e.deleteFrame(); System.out.println(""); /* define main define f(x,y) end f f(3,4) end main */ e=new Environment(); f=new Frame(null); f.addBinding(new Binding(0)); e.addFrame(f); e.lookupAndPrint(0,0); System.out.println(""); f1=new Frame(f); f1.addBinding(new Binding(3)); f1.addBinding(new Binding(4)); e.addFrame(f1); e.lookupAndPrint(0,0); e.lookupAndPrint(0,1); e.lookupAndPrint(1,0); System.out.println(""); e.deleteFrame(); e.lookupAndPrint(0,0); System.out.println(""); e.deleteFrame(); System.out.println(""); /* define main define f(x,y) g(15,16) end f define g(u,v) end g f(5,6) end main */ e=new Environment(); f=new Frame(null); f.addBinding(new Binding(0)); e.addFrame(f); e.lookupAndPrint(0,0); System.out.println(""); f1=new Frame(f); f1.addBinding(new Binding(5)); f1.addBinding(new Binding(6)); e.addFrame(f1); e.lookupAndPrint(0,0); e.lookupAndPrint(0,1); e.lookupAndPrint(1,0); System.out.println(""); Frame f2=new Frame(f); f2.addBinding(new Binding(15)); f2.addBinding(new Binding(16)); e.addFrame(f2); e.lookupAndPrint(0,0); e.lookupAndPrint(0,1); e.lookupAndPrint(1,0); e.lookupAndPrint(1,1); e.lookupAndPrint(2,0); System.out.println(""); e.deleteFrame(); e.lookupAndPrint(0,0); e.lookupAndPrint(0,1); e.lookupAndPrint(1,0); System.out.println(""); e.deleteFrame(); e.lookupAndPrint(0,0); System.out.println(""); e.deleteFrame(); System.out.println(""); /* define main define f(x,y) define g(u,v) define h(z,w) end h h(25,26) end g g(15,16) end f f(5,6) end main */ e=new Environment(); f=new Frame(null); f.addBinding(new Binding(0)); e.addFrame(f); e.lookupAndPrint(0,0); System.out.println(""); f1=new Frame(f); f1.addBinding(new Binding(5)); f1.addBinding(new Binding(6)); e.addFrame(f1); e.lookupAndPrint(0,0); e.lookupAndPrint(0,1); e.lookupAndPrint(1,0); System.out.println(""); f2=new Frame(f1); f2.addBinding(new Binding(15)); f2.addBinding(new Binding(16)); e.addFrame(f2); e.lookupAndPrint(0,0); e.lookupAndPrint(0,1); e.lookupAndPrint(1,0); e.lookupAndPrint(1,1); e.lookupAndPrint(2,0); System.out.println(""); Frame f3=new Frame(f2); f3.addBinding(new Binding(25)); f3.addBinding(new Binding(26)); e.addFrame(f3); e.lookupAndPrint(0,0); e.lookupAndPrint(0,1); e.lookupAndPrint(1,0); e.lookupAndPrint(1,1); e.lookupAndPrint(2,0); e.lookupAndPrint(2,1); e.lookupAndPrint(3,0); System.out.println(""); e.deleteFrame(); e.lookupAndPrint(0,0); e.lookupAndPrint(0,1); e.lookupAndPrint(1,0); e.lookupAndPrint(1,1); e.lookupAndPrint(2,0); System.out.println(""); e.deleteFrame(); e.lookupAndPrint(0,0); e.lookupAndPrint(0,1); e.lookupAndPrint(1,0); System.out.println(""); e.deleteFrame(); e.lookupAndPrint(0,0); System.out.println(""); e.deleteFrame(); System.out.println(""); /* define main define f(x,y) define g(u,v) h(25,26) end g define h(z,w) end h g(15,16) end f f(5,6) end main */ e=new Environment(); f=new Frame(null); f.addBinding(new Binding(0)); e.addFrame(f); e.lookupAndPrint(0,0); System.out.println(""); f1=new Frame(f); f1.addBinding(new Binding(5)); f1.addBinding(new Binding(6)); e.addFrame(f1); e.lookupAndPrint(0,0); e.lookupAndPrint(0,1); e.lookupAndPrint(1,0); System.out.println(""); f2=new Frame(f1); f2.addBinding(new Binding(15)); f2.addBinding(new Binding(16)); e.addFrame(f2); e.lookupAndPrint(0,0); e.lookupAndPrint(0,1); e.lookupAndPrint(1,0); e.lookupAndPrint(1,1); e.lookupAndPrint(2,0); System.out.println(""); f3=new Frame(f1); f3.addBinding(new Binding(25)); f3.addBinding(new Binding(26)); e.addFrame(f3); e.lookupAndPrint(0,0); e.lookupAndPrint(0,1); e.lookupAndPrint(1,0); e.lookupAndPrint(1,1); e.lookupAndPrint(2,0); System.out.println(""); e.deleteFrame(); e.lookupAndPrint(0,0); e.lookupAndPrint(0,1); e.lookupAndPrint(1,0); e.lookupAndPrint(1,1); e.lookupAndPrint(2,0); System.out.println(""); e.deleteFrame(); e.lookupAndPrint(0,0); e.lookupAndPrint(0,1); e.lookupAndPrint(1,0); System.out.println(""); e.deleteFrame(); e.lookupAndPrint(0,0); System.out.println(""); e.deleteFrame(); System.out.println(""); /* define main define f(x,y) h(17,18) g(27,28) end f define g(u,v) end g define h(x,z) define k(x,w) g(47.48) end k k(37,38) end h f(7,8) end main */ e=new Environment(); f=new Frame(null); f.addBinding(new Binding(0)); e.addFrame(f); e.lookupAndPrint(0,0); System.out.println(""); f1=new Frame(f); // call f f1.addBinding(new Binding(7)); f1.addBinding(new Binding(8)); e.addFrame(f1); e.lookupAndPrint(0,0); e.lookupAndPrint(0,1); e.lookupAndPrint(1,0); System.out.println(""); f2=new Frame(f); // call h f2.addBinding(new Binding(17)); f2.addBinding(new Binding(18)); e.addFrame(f2); e.lookupAndPrint(0,0); e.lookupAndPrint(0,1); e.lookupAndPrint(1,0); System.out.println(""); f3=new Frame(f2); // call k f3.addBinding(new Binding(37)); f3.addBinding(new Binding(38)); e.addFrame(f3); e.lookupAndPrint(0,0); e.lookupAndPrint(0,1); e.lookupAndPrint(1,1); e.lookupAndPrint(2,0); System.out.println(""); Frame f4=new Frame(f); // call g f4.addBinding(new Binding(47)); f4.addBinding(new Binding(48)); e.addFrame(f4); e.lookupAndPrint(0,0); e.lookupAndPrint(0,1); e.lookupAndPrint(1,0); System.out.println(""); e.deleteFrame(); // resume k e.lookupAndPrint(0,0); e.lookupAndPrint(0,1); e.lookupAndPrint(1,1); e.lookupAndPrint(2,0); System.out.println(""); e.deleteFrame(); // resume h e.lookupAndPrint(0,0); e.lookupAndPrint(0,1); e.lookupAndPrint(1,0); System.out.println(""); e.deleteFrame(); // resume f e.lookupAndPrint(0,0); e.lookupAndPrint(0,1); e.lookupAndPrint(1,0); System.out.println(""); Frame f5=new Frame(f); // call g f5.addBinding(new Binding(27)); f5.addBinding(new Binding(28)); e.addFrame(f5); e.lookupAndPrint(0,0); e.lookupAndPrint(0,1); e.lookupAndPrint(1,0); System.out.println(""); e.deleteFrame(); // resume f e.lookupAndPrint(0,0); e.lookupAndPrint(0,1); e.lookupAndPrint(1,0); System.out.println(""); e.deleteFrame(); e.lookupAndPrint(0,0); System.out.println(""); e.deleteFrame(); } }