Parsing Functions
The parser works by recursive descent, but with the ability to fail and back up and try another path.
(defun loc ()
 (let (locname)
  (saveptr)
  (if (and (eq *word* 'in) (next)
           (setq locname (cat 'city))
           (next))
      (progn
        (addrestrict
          (list 'equal
                (dbaccess 'customer-city)
                (kwote locname)))
        (success))
      (fail) ) ))