The following programs illustrate how the Lisp reader can be implemented in terms of a function readtoken that reads an ``item'' from the input line and looks it up in the symbol table to get a pointer to its symbol structure.
;   Read an S-expression (Atom or List).
(define (read-sexpr)
  (let ((next (readtoken)))
    (if (eqv? next #\()
        (read-list)
        (if (eqv? next #\')
            (list 'quote (read-sexpr))
            next)) ) )
;   read a list of items.
(define (read-list)
  (let ((done #f) (next #f) (result '()))
    (while (not done)
      (set! next (read-sexpr))
      (if (eqv? next #\) )
          (set! done #t)
          (set! result (cons next result)) ) )
    (nreverse result) ) )
Contents    Page-10    Prev    Next    Index