 (defn mangle-tokens [kind mangle-fn tokenizer]
   (fn mangle-tokens*
     ([string state]
-       (map (fn [[k t]]
-	 (if (= k kind)
-	   (mangle-fn k t)
-	   [k t]))
+       (map (fn [[k t s]]
+	 (if (or (nil? kind) (= k kind))
+	   (mangle-fn k t s)
+	   [k t s]))
 	    (tokenizer string state)))
     ([string]
        (mangle-tokens* string :initial))))

	  ([string]
	  (tokenizer* string :initial)))]
    (if-let [keywords (:keywords syntax)]
      (mangle-tokens :identifyer (fn [k t] (if (keywords t) [:keyword t] [k t])) tkn)
      tkn)))
			   (if-let [num (re-find number-re)]
			     num
			     nil))
			 (if-let [num (re-find #"^\d+(?:(?:/\d+)|(?:(?:\.\d*)?(?:e[+-]\d+)?))" s)]
			   num
			   nil)))]
  (def clj-syntax
