Exam 2 Parser
; assume
;
; (str= s1 s2)
return true if two strings are equal
; (isNumber s1)
return true if s1 is "number"
; (prints
s1) print a string to screen
;
(space) print a blank
to screen
;
(tokenise) read one token from input
(def tokenise () ()
(set tok (sys 3)))
(def parseSym () ()
(do
(if (str= tok "ADD")
(do
(prints "OP:")
(prints tok))
(if (isNumber tok)
(prints tok)
; else
(do
(prints
"VAR:") (prints tok))))
(space)))
(def parseX () ()
0) ; forward declaration
(def parseL () ()
(do
(tokenise)
(if (not (str= tok ")"))
(do
(parseX)
(parseL)))))
(def parseX () ()
(do
(if (str= tok
"(") ; it is a list
(do
(tokenise)
(parseSym)
(parseL))
; else
(parseSym))))
(def main () ()
(do
(sys 11)
; readinfile
(tokenise)
(parseX)))
; End