anchor.diff:    ;;                  { html-seq: [(first attribute) (rest nil) ] }
     ;;                | attribute attributes 
     ;;                  { html-seq: [(first attribute) (rest attributes)] };
  -  (make-html-seq :first (parse-attribute parser)
  -                 :rest  (when (eq (html-parser-token parser) :identifier)
  -                          (parse-attributes parser))))
  +  (loop
  +    :while (member (html-parser-token parser) '(:identifier :string))
  +    :collect (parse-attribute parser)))
   
   
   (defun parse-attribute (parser)
  
positive.code:   (advance parser)
    (unless (eq :identifier (html-parser-token parser))
      (report-error parser "Expected an identifier"))
    (let ((ident (html-parser-value parser)))
      (advance parser)
      (if (eq :end-tag (html-parser-token parser))
          (progn (advance parser) (make-definition :name ident :attributes nil))
          (let ((attributes (parse-aivs parser)))
            (if (eq :end-tag (html-parser-token parser))
                (advance parser)
                (report-error parser "Expected a \">\""))
            (make-definition :name ident :attributes attributes)))))
  
  
  #-(and)
  (defun parse-aivs (parser)
    ;; aivs -->   aiv      { html-seq: [(first aiv) (rest nil) ] }
    ;;          | aiv aivs { html-seq: [(first aiv) (rest aivs)] } ;
    ;; aiv  --> attribute | ident | value ;
    (make-html-seq :first (if (eq :string (html-parser-token parser))
                              (prog1 (html-parser-value parser) (advance parser))
                              (parse-attribute parser))
                   :rest  (when (member (html-parser-token parser)
                                        '(:string :identifier))
                            (parse-aivs parser))))
  
  
  (defun parse-aivs (parser)
    ;; aivs -->   aiv      { html-seq: [(first aiv) (rest nil) ] }
    ;;          | aiv aivs { html-seq: [(first aiv) (rest aivs)] } ;
    ;; aiv  --> attribute | ident | value ;
    (when (member (html-parser-token parser) '(:string :identifier))
      (make-html-seq :first (prog1 (html-parser-value parser) (advance parser))
                     :rest  (parse-aivs parser))))
  
  (defun parse-open-tag (parser)
    ;;         | "<" ident ">"
  
negative.code: (defstruct close-tag name attributes)
  
  
  (defun normalize-tag (tag)
    (intern (string-upcase tag) *tag-package*))
  
  (defstruct html-parser  
    scanner
    token value
  