anchor.diff:                      (,listsym (cons nil nil))
                       (,tailsym ,listsym))))
              (last (last inner 1)))
  -      (unless args
  -        (return-from cpf-list (values `(values) t)))
         (dolist (f args)
           (pushback
            `(setf (values ,endsym ,valsym) ,(cpf f new-context env))
  
positive.code:       `(block ,blocksym ,inner))))
        
  
  (defrule test-and0 (and))
  
  (defrule test-and (and "hello" " " "world"))
  ;;(test-and "hello world")
  
  
  (defmethod cpf-list ((car (eql 'or)) form context)
    "Apply the parse forms in order, returning the value of the first that matches or nil in none match."
    (with-slots (string start end) context
      (let ((term (cadr form))
  
negative.code:        (or "c" "d")))
  
  
  (defmethod cpf-list ((car (eql 'repeat)) form context env)
    "(repeat min max form) where min is 0 or more and max is an integer or nil for unlimited"
    (with-slots (string start end) context
      (destructuring-bind (min max body) (cdr form)
  