(load "parser.scm") #| Test program for Assignment 4 CS 152, Fall 2005 |# ; syntactically correct program (define s1 (string-append " { f " " declare x int ;" " declare y real ;" " { g" " declare x real ;" " declare z real ;" " call f x ;" " call g y ;" " }" " print x ;" " }")) (parse s1) (newline) (display "---------------") (newline) ; syntactically correct program (define s2 (string-append " { f " " declare x int ;" " declare y real ;" " declare w string ;" " { g" " declare x real ;" " declare z real ;" " { h" " declare y boolean ;" " declare z boolean ;" " call f x ;" " call g z ;" " }" " call f x ;" " call g y ;" " }" " print x ;" " }")) (parse s2) (newline) (display "---------------") (newline) ; syntactically correct program (define s3 (string-append " { f " " declare x int ;" " declare y real ;" " declare w string ;" " { g" " declare x real ;" " declare z real ;" " call f x ;" " call g y ;" " }" " { h" " declare y boolean ;" " declare z boolean ;" " call f x ;" " call g z ;" " }" " print x ;" " }")) (parse s3) (newline) (display "---------------") (newline) ; bad block name (define s4 (string-append " { f " " declare x int ;" " declare y real ;" " { %g" " declare x real ;" " declare z real ;" " call f x ;" " call g y ;" " }" " print x ;" " }")) (parse s4) (newline) (display "---------------") (newline) ; bad variable (define s5 (string-append " { f " " declare x int ;" " declare y real ;" " { g" " declare x real ;" " declare # real ;" " call f x ;" " call g y ;" " }" " print x ;" " }")) (parse s5) (newline) (display "---------------") (newline) ; bad declaration (define s6 (string-append " { f " " declare x int ;" " declare y real ;" " { g" " declare x real ;" " declare z ;" " call f x ;" " call g y ;" " }" " print x ;" " }")) (parse s6) (newline) (display "---------------") (newline) ; duplicate identifier (define s7 (string-append " { f " " declare x int ;" " declare y real ;" " { g" " declare x real ;" " declare z real ;" " declare x real ;" " call f x ;" " call g y ;" " }" " print x ;" " }")) (parse s7) (newline) (display "---------------") (newline) ; duplicate identifier (define s8 (string-append " { f " " declare x int ;" " declare y real ;" " { y" " declare x real ;" " declare z real ;" " call f x ;" " call g y ;" " }" " print x ;" " }")) (parse s8) (newline) (display "---------------") (newline) ; program must begin with left brace (define s9 (string-append " f " " declare x int ;" " declare y real ;" " { g" " declare x real ;" " declare z real ;" " call f x ;" " call g y ;" " }" " print x ;" " }")) (parse s9) (newline) (display "---------------") (newline) ; g should not be recognized as a block (define s10 (string-append " { f " " declare x int ;" " declare y real ;" " g" " declare x real ;" " declare z real ;" " call f x ;" " call g y ;" " }" " print x ;" " }")) (parse s10) (newline) (display "---------------") (newline) ; bad statement (define s11 (string-append " { f " " declare x int ;" " declare y real ;" " { g" " declare x real ;" " declare z real ;" " call f x ;" " call g y ;" " }" " << x ;" " }")) (parse s11) (newline) (display "---------------") (newline) ; missing right brace (define s12 (string-append " { f " " declare x int ;" " declare y real ;" " { g" " declare x real ;" " declare z real ;" " call f x ;" " call g y ;" " print x ;" " }")) (parse s12) (newline) (display "---------------") (newline) ; program must end with right brace (define s13 (string-append " { f " " declare x int ;" " declare y real ;" " { g" " declare x real ;" " declare z real ;" " call f x ;" " call g y ;" " }" " print x ;")) (parse s13) (newline) (display "---------------") (newline) ; missing semicolon in declaration (define s14 (string-append " { f " " declare x int ;" " declare y real " " { g" " declare x real ;" " declare z real ;" " call f x ;" " call g y ;" " }" " print x ;" " }")) (parse s14) (newline) (display "---------------") (newline) ; missing semicolon in statement (define s15 (string-append " { f " " declare x int ;" " declare y real ;" " { g" " declare x real ;" " declare z real ;" " call f x ;" " call g y" " }" " print x ;" " }")) (parse s15) (newline)