      . font-lock-constant-face)    ; symbol
     ("#'\\([^']\\|\\'\\)*'" . font-lock-constant-face) ; quoted symbol
     ("\"\\([^\"]\\|\\\"\\)\"" . font-lock-comment-face) ; comment
-    ("[$]\\([^\\\\]\\|\\\\[^x]\\|\\\\x[0-9a-fA-F][0-9a-fA-F][^\\]\\)"
+    (,(concat "[$]\\([^\\\\]\\|\\\\[^x]\\|\\\\x" hexdigit-regexp hexdigit-regexp "[^\\]\\)")
      . font-lock-string-face)        ; character
     ("[^#$\\]'\\(.\\|\'\\)*'" . font-lock-string-face) ; string
     (,(concat "`\\(" slate-binop-regexp "\\|" slate-name-regexp ":?\\)")

  "A regular expression that matches a Slate optional-keyword")

(defconst slate-whitespace-chars " \t\n\f")

(defconst slate-mode-syntax-table
  (let ((table (make-syntax-table)))

     . font-lock-type-face)        ; type-declaration
    ("\\<[+-]?[0-9]+\\([.][0-9]+\\)?\\>"
     . font-lock-constant-face) ; numbers (integers and floats)
    (,(concat "\\<[+-]?[0-9_]+[Rr]" hexdigit-regexp "+\\([.]" hexdigit-regexp "+\\)?\\>")
     . font-lock-constant-face) ; numbers (integers and floats)
    ("\\([.]\\)\\(?:$\\|[^0-9\"]\\)"
     . font-lock-warning-face)        ; statement separators
