anchor.diff:  
   (defmacro define-parser (name ll &rest body)
     `(progn (defun ,name ,ll (lambda () ,@body))
  -			 (push ',name *parser-list*)))
  +          (push ',name *parser-list*)))
   
   (defmacro parse (string form)
     `(let* ((*source* ,string)
  
positive.code:          (finally (return string))))
  
  (define-parser one-of (string)
  	(if (test-remaining 1) 
  		 (iter (for char in-string string)
  			    (with c = (char *source* *index*))
  				 (if (eql c char)
  					  (leave (succeed char 1)))
  				 (finally (return (fail string))))
  		 (fail string)))
  
  (define-parser none-of (string)
  	(if (test-remaining 1) 
  		 (iter (for char in-string string)
  			    (with c = (char *source* *index*))
  				 (if (eql c char)
  					  (leave (fail string)))
  				 (finally (return (succeed c 1))))
  		 (fail string)))
  
  (define-parser try (p)
     (let* ((*index* *index*))
  
negative.code:           (funcall ,form)))
  
  (defmacro defparser (name ll exp)
     `(define-parser ,name ,ll (funcall ,exp)))
  
  (declaim (inline run-parser))
  (defun run-parser (p)
     (iter (for h in *run-hooks*) (setf p (funcall h p)))
     (funcall p))
  
  ;; chr      ~ matches a single character
  ;; str      ~ explicitly matches a string
  