anchor.diff:  
   ;;; Runtime functions used by compiled parsers ;;;;;;;;;;;;;;;;;;;;;;;
   
  -(defun good (result position)
  +(defun good (result next-input)
     "Return values indicating a parser succeeded."
  -  (values t result position))
  +  (values t result next-input))
   
   
   ;;;;;; I/O protocol ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   
   (defgeneric matching-string (s len input)
  -  (:documentation "Does the string S (with length LEN) match at POSITION?"))
  +  (:documentation "Does the string S (with length LEN) match at INPUT?"))
   
   (defgeneric matching-char (c input)
  -  (:documentation "Does the char C match at POSITION?"))
  +  (:documentation "Does the char C match at INPUT?"))
   
   (defgeneric end-of-text-p (input)
     (:documentation "Are we at the end of the text?"))
   
   (defgeneric getc (input)
  -  (:documentation "Get the next character and the subsequent position."))
  -
  -(defgeneric initial-position (input)
  -  (:documentation "Get the initial position."))
  +  (:documentation "Get the next character and move forward to the next input."))
   
   (defgeneric gettext (input end)
     (:documentation "Get the text between START and END." ))
   
   (defgeneric input-position (input)
  -  (:documentation "Current position within the input"))
  -
  -;;;;;;;;; (cons string position) implementation ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  +  (:documentation "Current position within the input. This is only used for
  +  informational purposes in tracing output."))
  +
  +;;;;;;;;; (cons text position) implementation ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   
   (defmethod matching-string (s len (input cons))
     (destructuring-bind (text . position) input
  
positive.code:   (destructuring-bind (text . position) input
      (values (char text position) (cons text (1+ position)))))
  
  (defmethod initial-position ((input cons)) 0)
  
  (defmethod gettext ((input cons) end)
    (destructuring-bind (text . position) input
      (subseq text position (cdr end))))
  
negative.code: (defun and-wrapper (expr ok result p continuation state)
    "Wrap an expression to be part of a AND. Arranges to save the state, evaluate
  the expression. If it succeeds, invoke the continuation of the AND, if there is
  one, or succeed, returning the value and next-input returned by the expression.
  Otherwise fail, rolling back the state. "
    (if (null continuation)
        expr
  