anchor.diff:       :while rules
        :collect (let ((rule (pop rules)))
                   (destructuring-bind (nt rhs) rule
  +                  (assert rhs (rule) "Invalid rule, missing right-hand-side: ~S" rule)
                     (labels ((new-rule (nt rhs)
                                (push nt non-terminals)
                                (push (list nt rhs) rules))
  
positive.code: 
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;; THE END ;;;;
  
  
negative.code:                              (list nt (if (singleton-sequence-rhs-p (first new-items))
                                            `(seq (,(first (second (first new-items))))
                                                  ((progn ,@(third (first new-items)))))
                                            `(seq (,(first new-items)) (,(dollar 1))))))))
                          (otherwise (error "Invalid operator ~S in rule ~S" op rule))))))))
     non-terminals))
  
  
  