(define (test) (for-each (lambda (x) (print (eval x)) (newline) ) test-cases)) ;;;;;;;;;;;;;;;;;;;;; TENTATIVE TEST CASES ;;;;;;;;;;;;;;;;;; ; Test cases for Assignment 5, CS 152, Fall 2006, Sections 5 & 6 (define test-cases '((evaluate "10") (evaluate "( + 5 6 )") (evaluate "( + ( * 10 1 ) 2 ) ") (evaluate "define f ( aa bb ) 13 end ( f 8 9 ) ") (evaluate "define f ( x y ) ( + ( * 10 x ) y ) end ( + 10 4 )") (evaluate "define f ( x y ) ( + ( * 10 x ) y ) end ( f 1 5 )") (evaluate "define f ( x y ) ( + ( * 10 x ) y ) end ( + 1 ( f 1 5 ) )") (evaluate "define f ( x y ) ( + ( * 10 x ) y ) end ( f ( * 10 2 ) 9 )") (evaluate "define f ( x y ) ( * 10 x ) end define g ( u v ) v end ( + ( f 1 2 ) ( g 3 7 ) )") (evaluate "define f ( y z ) define g ( u v ) ( + x ( + u v ) ) end ( + 10 ( g y z ) ) end define h ( x y ) ( f ( + x 1 ) ( + y 2 ) ) end ( h 1 3 )") (evaluate "define f ( x y ) define g ( u v ) ( + y u ) end define h ( y z ) ( g 1 3 ) end ( * ( * 10 ( g x y ) ) ( h x y ) ) end ( f 2 5 )") '---------------- ;; compile-time errors (evaluate "") (evaluate "( ") (evaluate "( + ") (evaluate "( + 3 ") (evaluate "( + 3 4 ") (evaluate "define") (evaluate "define f ( ") (evaluate "define f ( x") (evaluate "define f ( x y ") (evaluate "define f ( x y )") (evaluate "define f ( x y ) ( + ( * 10 x") (evaluate "define f ( x y ) ( + ( * 10 x ) y )") (evaluate "define f ( x y ) ( + ( * 10 x ) y ) end") (evaluate "define f ( x y ) ( + ( * 10 x ) y ) end (") (evaluate "define f ( x y ) ( + ( * 10 x ) y ) end ( f 1 5") (evaluate "define f ( x y ) ( + ( * 10 x ) y ) end ( * 10 ( f 1 2 )") '---------------- (evaluate "+ 3 4 ") (evaluate "( + )") (evaluate "( + 3 )") (evaluate "( + 3 4 5 )") (evaluate "( + 3 4 ) (* 3 4)") (evaluate "( * x3 4 )") (evaluate "( * 3x 4 )") (evaluate "( 3 4 5 )") '---------------- (evaluate "define f x y ) ( + ( * 10 x ) y ) end ( f 1 5 )") (evaluate "define f ) ( + ( * 10 x ) y ) end ( f 1 5 )") (evaluate "define 6 ( x y ) ( + ( * 10 x ) y ) end ( f 1 5 )") (evaluate "define f ( 7 y ) ( + ( * 10 x ) y ) end ( f 1 5 )") (evaluate "define f ( x 8 ) ( + ( * 10 x ) y ) end ( f 1 5 )") (evaluate "define f ( x y9 ) ( + ( * 10 x ) y ) end ( f 1 5 )") (evaluate "define f ( x y ) ( + ( * 10 x ) y ) end + 1 5 )") (evaluate "define f ( x y ( + ( * 10 x ) y ) end ( f 1 5 )") (evaluate "define f ( x y ) ( + ( * 10 x ) y ) end ( f 1 5 ) 6") (evaluate "define f ( ) ( + ( * 10 x ) y ) end ( + 10 4 )") (evaluate "define f ( x ) ( + ( * 10 x ) y ) end ( + 10 4 )") (evaluate "define f ( x y z ) ( + ( * y x ) z ) end ( f 1 2 )") (evaluate "define f ( x y ) ( + ( * 10 x ) y ) ( * 10 ( f 1 2 )") '---------------- ; run-time errors (evaluate "x") (evaluate "( + x 4 )") (evaluate "( f 3 4 )") (evaluate "define f ( x y ) ( + ( * 10 x ) y ) end ( g 1 5 )") (evaluate "define f ( x y ) ( + ( * 10 x ) y ) end ( f 1 ( f 2 ( g 1 5 ) ) )") (evaluate "define f ( x y ) define g ( u v ) ( + u v ) end ( g 6 7 ) end define h ( p q ) ( g 2 3 ) end ( * 10 ( h 1 4 ) )") (evaluate "define f ( y z ) define g ( u v ) ( + x ( + u v ) ) end ( * 10 ( g y z ) ) end define h ( x y ) ( f ( + x 1 ) ( + y 1 ) ) end ( f 1 3 )") ))