anchor.diff:               :scanner scanner
                :non-terminal-stack (copy-list *non-terminal-stack*)
                :expected-token expected-tokens
  -             :format-control "Unexpected token ~S (~S)~@[~%Expected ~S~]~%~S~@[~%~{~A --> ~S~}~]"
  +             :format-control "Unexpected token ~A (~S)~@[~%Expected ~A~]~%~S~@[~%~{~A --> ~S~}~]"
                :format-arguments (list
                                   (scanner-current-token scanner)
                                   (scanner-current-text scanner)
  
positive.code:               (if emptyp
                    `(when ,(gen-in-firsts target expected-tokens)
                       (,(gen-parse-function-name target grammar item) scanner))
                    `(loop                ; retrying
                                          :until ,(gen-in-firsts target expected-tokens)
                                          :do (ecase (error-unexpected-token scanner
                                                                             ',expected-tokens
                                                                             ',(assoc item (grammar-rules grammar)))
                                                (:retry)
                                                (:continue (loop-finish)))
                                          :finally (return (,(gen-parse-function-name target grammar item) scanner))))))
          (ecase (car item)
            ((seq)
             (destructuring-bind (seq items actions) item
  
negative.code:          (if non-terminals
               (let ((follow-sets (make-hash-table :size (length non-terminals)))
                     (normalized-follow-sets (compute-follow-sets grammar)))
                 #-(and)
                 (dolist (non-terminal non-terminals follow-sets)
                   (setf (gethash non-terminal follow-sets)
                         (gethash non-terminal normalized-follow-sets)))
                 normalized-follow-sets)
               (compute-follow-sets grammar))))
      ;; build the resulting function.
      (setf (grammar-follow-function grammar)
            (lambda (non-terminal)
              (if (eql non-terminal :get-table)
                  follow-sets
                  (or (gethash non-terminal follow-sets)
                      (error "~S is not a non-terminal of the grammar ~A"
                             non-terminal (grammar-name grammar))))))))
  
  
  
  