anchor.diff:              (return (good (nreverse result) position))))))))
   
   (defparserfun many1 (p text position)
  -  "Match P as many times as possible but at least once. Returns a list
  -of the values returned by P."
  +  "Match P as many times as possible but at least once. Returns a list of the
  +values returned by P."
     (multiple-value-bind (ok r pos) (funcall p text position)
       (when ok
         (multiple-value-bind (ok r2 pos) (many p text pos)
  
positive.code: ;;
  ;; Copyright (c) 2017, Peter Seibel. All rights reserved.
  ;;
  
negative.code: 
  (defmacro defparserfun (name (&rest args) &body body)
    "Macro for defining hand-written functions that act as parsers. Used
  internally to define things that can't be expressed as normal parsers."
    `(progn
       (eval-when (:compile-toplevel :load-toplevel :execute)
         (setf (get ',name 'parser-function) t))
       (defun ,name (,@args) ,@body)))
  
  (defun value (x)
    "Return X as a value rather than interpreting it as a parser. Mostly useful
  for returning specific characters or strings."
    x)
  
  
  