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