; This function is the test program for Assignment 2, ; CS 152, Spring 2000 (define (a2test) (define f1 null) (define f2 null) (define f3 null) (define f4 null) (define f5 null) ; begin main ; begin f(x,y) ; end f ; f(1,2) ; end main (define e (make-environment)) (define f (make-frame null)) (add-binding f 0) (add-frame e f) (lookup-and-print e 0 0) (newline) (set! f1 (make-frame f)) (add-binding f1 1) (add-binding f1 2) (add-frame e f1) (lookup-and-print e 0 0) (lookup-and-print e 0 1) (lookup-and-print e 0 2) (lookup-and-print e 1 0) (newline) (delete-frame e) (lookup-and-print e 0 0) (newline) (delete-frame e) (newline) ; define main ; define f(x,y) ; end f ; f(3,4) ; end main (set! e (make-environment)) (set! f (make-frame null)) (add-binding f 0) (add-frame e f) (lookup-and-print e 0 0) (newline) (set! f1 (make-frame f)) (add-binding f1 3) (add-binding f1 4) (add-frame e f1) (lookup-and-print e 0 0) (lookup-and-print e 0 1) (lookup-and-print e 1 0) (newline) (delete-frame e) (lookup-and-print e 0 0) (newline) (delete-frame e) (newline) ; define main ; define f(x,y) ; g(15,16) ; end f ; define g(u,v) ; end g ; f(5,6) ; end main (set! e (make-environment)) (set! f (make-frame null)) (add-binding f 0) (add-frame e f) (lookup-and-print e 0 0) (newline) (set! f1 (make-frame f)) (add-binding f1 5) (add-binding f1 6) (add-frame e f1) (lookup-and-print e 0 0) (lookup-and-print e 0 1) (lookup-and-print e 1 0) (newline) (set! f2 (make-frame f)) (add-binding f2 15) (add-binding f2 16) (add-frame e f2) (lookup-and-print e 0 0) (lookup-and-print e 0 1) (lookup-and-print e 1 0) (lookup-and-print e 1 1) (lookup-and-print e 2 0) (newline) (delete-frame e) (lookup-and-print e 0 0) (lookup-and-print e 0 1) (lookup-and-print e 1 0) (newline) (delete-frame e) (lookup-and-print e 0 0) (newline) (delete-frame e) (newline) ; 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 (set! e (make-environment)) (set! f (make-frame null)) (add-binding f 0) (add-frame e f) (lookup-and-print e 0 0) (newline) (set! f1 (make-frame f)) (add-binding f1 5) (add-binding f1 6) (add-frame e f1) (lookup-and-print e 0 0) (lookup-and-print e 0 1) (lookup-and-print e 1 0) (newline) (set! f2 (make-frame f1)) (add-binding f2 15) (add-binding f2 16) (add-frame e f2) (lookup-and-print e 0 0) (lookup-and-print e 0 1) (lookup-and-print e 1 0) (lookup-and-print e 1 1) (lookup-and-print e 2 0) (newline) (set! f3 (make-frame f2)) (add-binding f3 25) (add-binding f3 26) (add-frame e f3) (lookup-and-print e 0 0) (lookup-and-print e 0 1) (lookup-and-print e 1 0) (lookup-and-print e 1 1) (lookup-and-print e 2 0) (lookup-and-print e 2 1) (lookup-and-print e 3 0) (newline) (delete-frame e) (lookup-and-print e 0 0) (lookup-and-print e 0 1) (lookup-and-print e 1 0) (lookup-and-print e 1 1) (lookup-and-print e 2 0) (newline) (delete-frame e) (lookup-and-print e 0 0) (lookup-and-print e 0 1) (lookup-and-print e 1 0) (newline) (delete-frame e) (lookup-and-print e 0 0) (newline) (delete-frame e) (newline) ; 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 (set! e (make-environment)) (set! f (make-frame null)) (add-binding f 0) (add-frame e f) (lookup-and-print e 0 0) (newline) (set! f1 (make-frame f)) (add-binding f1 5) (add-binding f1 6) (add-frame e f1) (lookup-and-print e 0 0) (lookup-and-print e 0 1) (lookup-and-print e 1 0) (newline) (set! f2 (make-frame f1)) (add-binding f2 15) (add-binding f2 16) (add-frame e f2) (lookup-and-print e 0 0) (lookup-and-print e 0 1) (lookup-and-print e 1 0) (lookup-and-print e 1 1) (lookup-and-print e 2 0) (newline) (set! f3 (make-frame f1)) (add-binding f3 25) (add-binding f3 26) (add-frame e f3) (lookup-and-print e 0 0) (lookup-and-print e 0 1) (lookup-and-print e 1 0) (lookup-and-print e 1 1) (lookup-and-print e 2 0) (newline) (delete-frame e) (lookup-and-print e 0 0) (lookup-and-print e 0 1) (lookup-and-print e 1 0) (lookup-and-print e 1 1) (lookup-and-print e 2 0) (newline) (delete-frame e) (lookup-and-print e 0 0) (lookup-and-print e 0 1) (lookup-and-print e 1 0) (newline) (delete-frame e) (lookup-and-print e 0 0) (newline) (delete-frame e) (newline) ; 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 (set! e (make-environment)) (set! f (make-frame null)) (add-binding f 0) (add-frame e f) (lookup-and-print e 0 0) (newline) (set! f1 (make-frame f)) ; call f (add-binding f1 7) (add-binding f1 8) (add-frame e f1) (lookup-and-print e 0 0) (lookup-and-print e 0 1) (lookup-and-print e 1 0) (newline) (set! f2 (make-frame f)) ; call h (add-binding f2 17) (add-binding f2 18) (add-frame e f2) (lookup-and-print e 0 0) (lookup-and-print e 0 1) (lookup-and-print e 1 0) (newline) (set! f3 (make-frame f2)) ; call k (add-binding f3 37) (add-binding f3 38) (add-frame e f3) (lookup-and-print e 0 0) (lookup-and-print e 0 1) (lookup-and-print e 1 1) (lookup-and-print e 2 0) (newline) (set! f4 (make-frame f)) ; call g (add-binding f4 47) (add-binding f4 48) (add-frame e f4) (lookup-and-print e 0 0) (lookup-and-print e 0 1) (lookup-and-print e 1 0) (newline) (delete-frame e) ; resume k (lookup-and-print e 0 0) (lookup-and-print e 0 1) (lookup-and-print e 1 1) (lookup-and-print e 2 0) (newline) (delete-frame e) (lookup-and-print e 0 0) (lookup-and-print e 0 1) (lookup-and-print e 1 0) (newline) (delete-frame e) (lookup-and-print e 0 0) (lookup-and-print e 0 1) (lookup-and-print e 1 0) (newline) (set! f5 (make-frame f)) ; call g (add-binding f5 27) (add-binding f5 28) (add-frame e f5) (lookup-and-print e 0 0) (lookup-and-print e 0 1) (lookup-and-print e 1 0) (newline) (delete-frame e) (lookup-and-print e 0 0) (lookup-and-print e 0 1) (lookup-and-print e 1 0) (newline) (delete-frame e) (lookup-and-print e 0 0) (newline) (delete-frame e) )