anchor.diff:                            :end1 (when (< end (length str))
                                     end))
                    (syntax-matched-word line syntax start end))
  -            (return-from syntax-scan-word-test (1- end)))))
  +            (return-from syntax-scan-token-test (values line (1- end))))))
          ((functionp (syntax-match-test syntax))
           (let ((end (syntax-position-word-end str start)))
             (when (and (funcall (syntax-match-test syntax) str start end)
                        (syntax-matched-word line syntax start end))
  -            (return-from syntax-scan-word-test end))))))))
  -
  -(defun syntax-scan-word (line start)
  +            (return-from syntax-scan-token-test (values line end)))))))))
  +
  +(defun syntax-scan-token (line start)
     (some #'(lambda (syn)
  -            (syntax-scan-word-test syn line start))
  +            (syntax-scan-token-test syn line start))
           (syntax-table-elements (current-syntax))))
   
   (defun syntax-scan-whitespaces (str i)
  
positive.code:                  (when (ppcre:scan (syntax-match-test syntax)
                                     (subseq str start end))
                     (syntax-matched-word line syntax start end)
                     (return-from syntax-scan-word-test (1- end)))))
                (t
                 (multiple-value-bind (start1 end1)
                     (ppcre:scan (syntax-match-test syntax)
  
negative.code:                        :start start)
        (length str)))
  
  (defgeneric syntax-scan-token-test (syntax line start))
  
  (defmethod syntax-scan-token-test ((syntax syntax-region) line start)
    )
  
  (defmethod syntax-scan-token-test ((syntax syntax-match) line start)
    (when (or (not (syntax-match-test-symbol syntax))
              (find (syntax-match-test-symbol syntax)
                    *syntax-symbol-tov-list*
  