parsing actions
(define (parse_stmt)
(if (assign?)
(parse_assign)
(parse_print)))
(define (parse_assign)
(let* ((v (parse_atom))
(discard (parse_atom))
(e (parse_expr)))
(list v e)))
(define (parse_expr)
(if (compound?)
(let* ((s (parse_atom))
(o (parse_atom))
(e (parse_expr)))
(list o s e))
(parse_atom)))