anchor.diff:  ;;;
   ;;; Parse a main-clause
   
  +;;; The HyperSpec defines main-clause like this:
  +;;;
  +;;;    main-clause::= unconditional | accumulation | conditional |
  +;;;                   termination-test | initial-final              
  +;;; 
  +;;; and we follow this example.  The reason the HyperSpec defines
  +;;; main-clause is because the loop body is a named-clause
  +;;; followed by zero or more variable-clauses followed by zero or more
  +;;; main-clauses, and initia-final is one possibility both for
  +;;; variable-clause and main-clause.  This means that an
  +;;; initially-clause or a finally-clause can appear anywhere after a
  +;;; named-clause.
  +
  +;;; FIXME: introduce a parse-conditional to make the code agree with
  +;;; the grammar.
  +
   (defun parse-main-clause (body)
     (parse-alternative body
   		     #'parse-unconditional
  
positive.code: ;;;
  ;;;    variable-clause::= with-clause | initial-final | for-as-clause 
  ;;; 
  ;;; and we follow this example.  Why the HyperSpec defines it that way
  ;;; is a mystery.  
  
  (defun parse-variable-clause (body)
    (parse-alternative body
  
negative.code:   (if (null body)
        (error 'expected-form-but-end)
        (values (car body) (cdr body))))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;
  