anchor.diff:    `(funcall ,parser ,input))
   
   (defun compile-if (body input names state)
  -  (flet ((comp (x) (new-compile-form x input names state)))
  +  (flet ((comp (x) (compile-form x input names state)))
       (destructuring-bind (test then else) body
         `(if ,test ,(comp then) ,(comp else)))))
   
   (defun compile-tracer (form input names state)
  -  (new-compile-form `(tracer ,(cadr form) ',(cadr form)) input names state))
  +  (compile-form `(tracer ,(cadr form) ',(cadr form)) input names state))
   
   (defun compile-parser-call (exp names input state)
     (destructuring-bind (name &rest args) (rewrite-form exp names)
  
positive.code:                   ,@(restore-state state-bindings)
                    (return-from ,and nil)))))))))
  
  (defun new-rewrite-and-body (body)
    "Rewrite the list of forms to be compiled into a AND so that a (=> ...) form
  will have its result returned as the result of the AND. If the => form specifies
  a value expression it can refer to the value matched by the parser via the
  
negative.code:     ((and (symbolp form) (grammar-p form names)) (list form))
      (t form)))
  
  (defun parser-call-p (form names)
    (or
     (and (symbolp form) (grammar-p form names))
     (and (consp form) (symbolp (car form)) (grammar-p (car form) names))))
  