anchor.diff:           ,failure)))
   
   (defun compile-or (body txt st pos names)
  +  "Compile the forms in an OR so that the OR matches if any of the
  +elements matches, returning the result from the first match."
     (unless (null body)
       (with-gensyms (s p)
         (compile-wrapped-form
  
positive.code:     (t form)))
  
  (defun parser-function-invocation-p (form names)
    (and (consp form) (symbolp (car form)) (grammar-p (car form) names)))
  
  (defun binding-form-p (form)
    (and (consp form) (eql (car form) '->)))
  
  
  (defmacro defparserfun (name (&rest args) &body body)
    `(progn
  
negative.code:   (or (member name names) (get name 'parser-function)))
  
  (defun compile-progn (body txt st pos names)
    "Compile the forms in an PROGN so that the PROGN matches if each of
  the elements matches in sequence."
    (unless (null body)
      (with-gensyms (s p)
        (compile-wrapped-form
  