More on HW #3: - The assignment assumes input restricted to expressions involving well-formed grammar. Error checking will on the most part not be implemented. When there is error checking, it will return a list of token(s) containing the error message and will NOT print a message. - The DRAWING link shows the flow diagram for the parsing of the string "(3^4)^5". Each parse_ function takes a list of tokens, but for brevity in the diagram, the token list is represented by the string. For instance, wherever there is "(3^4)^5" in the diagram, it is understood that this means (list "(" "3" "^" "4" ")" "^" "5") and similarly, a "4)^5" represents (list "4" ")" "^" "5"). Note also that in the homework, the supplied lexical analysis function, string->tokenlist is responsible for the initial breakup into tokens. That is, the initial parse_fmla call should be (parse_fmla (string->tokenlist "(3^4)^5")). - There are some conventions used in the drawing. First, flow always go from top to bottom whenever possible, though each line should only be followed once. Similarly, when two down lines are possible, the left one should be done first, and when the flow returns, the right one should be done. A "notice " implies that the function above it recognizes the , uses this recognition to indicate what block of a conditional structure it should be in, and removes the from the token list by passing rest (i.e. everything but the ) onto the next function in the flow.