anchor.diff:        (format stream "#<LITERAL-TOKEN ~W>" (token-value literal-token))))
   (define-make-load-form-for-class literal-token)
   
  -(defmacro define-literal-token (name string &optional superclasses slots &body options)
  +(defmacro define-literal-token (name string &optional (superclasses '(literal-token)) slots &body options)
     `(progn
  -     (defclass ,name (,@superclasses literal-token)
  +     (defclass ,name ,superclasses
          ((value :initform ,string)
           (string :initform ,string)
           ,@slots)
  
positive.code: 
  (defparameter *reserved-words* (fset:empty-map))
  
  (defclass reserved-word (a-word)
    ())
  (define-make-load-form-for-class reserved-word)
  
  (defmacro define-reserved-word (name string &optional superclasses slots &body options)
    (check-type name symbol)
    (check-type string string)
    `(progn
       (define-literal-token ,name ,string ,(cons 'reserved-word superclasses) ,slots ,@options)
       (fset:adjoinf *reserved-words* ,string ',name)))
  
  (define-reserved-word if-word "if")
  
negative.code: 
  (defparameter *operators* (fset:empty-map))
  
  (defclass operator (literal-token)
    ())
  
  (defmacro define-operator (name string &optional (superclasses '(operator)) slots &body options)
    (check-type name symbol)
    (check-type string string)
    `(progn
  