bob2.text: the internal design document describing the Bob language

boblex.scm: a lexical analyzer, written in Scheme, for Bob.  It should
be easy to generalize this in many ways (like adding keywords or
special operators), but harder in others.

bobsyn.scm: a recursive descent parser built in the same fashion as
the age-old BCPL parser.  Easy (I think) to write and understand, but
limited in the languages it can parse.

bobxlt.scm: a translator that starts with the syntax tree generated by
bobsyn and produces Dylan code.

mit-bobrep.scm: A read-eval-print loop for Bob that runs in MIT
Scheme.

portable-bobrep.scm: A read-eval-print loop for Bob that's portable
but doesn't catch errors, etc.

pread.bob: A sample Bob program, the portable reader hand translated
to Bob.  May not work.

Here's what I used to do to load it up (you need Thomas, of course):
(load "load-thomas")
; (load "mit-specific")
; (load "p-read")
(load "boblex")
(load "bobsyn")
(load "bobxlt")
(load "bobrep")

(define (file->string file)
  (with-input-from-file file
    (lambda ()
      (let loop ((chars '()))
	(let ((ch (read-char)))
	  (if (eof-object? ch)
	      (list->string (reverse chars))
	      (loop (cons ch chars))))))))

Then I'd load an appropriate xxx-bobrep.scm and see what happened.

