anchor.diff:        form))
   |#
   
  +(defmethod cpf-list (car form context env)
  +  "expand unknown forms as parse calls"
  +  ;; issue a warning for some forms?
  +  ;; e.g. (:keyword ...)
  +  (with-slots (string start end) context
  +    (destructuring-bind (head &rest rest) form
  +      `(,head ,string ,start ,end ,@rest))))
  +
   (defmethod cpf-list ((car (eql :parse)) form context env)
     (error ":parse not in :cl - ~S" form))
             
  
positive.code:           (v1 (gensym (symbol-name :v1-))))
        (values
         (if rest
             `(multiple-value-bind (,e1 ,v1) ,(cpf term context)
                (if ,e1
                    (values ,e1 ,v1)
                    ,(cpf (cons 'or rest) context)))
            (cpf term context))
         t))))
  
  (defrule test-or
    (or "hello" "world"))
  
negative.code: 
  ;; new flat method (less nesting is easier to read?)
  (defmethod cpf-list ((car (eql 'and)) form context env)
    (unless (cdr form) ; style tweak, doesn't change runtime, mimics (cl:and)
      (return-from cpf-list (slot-value context 'start)))
    (with-slots (string start end) context
      (let* ((args (cdr form))
             (blocksym (gensym (symbol-name :and-)))
  