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

  "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-constant-face)    ; symbol
    ("#'\\([^']\\|\\'\\)*'" . font-lock-constant-face) ; quoted symbol
    ("\"\\([^\"]\\|\\\"\\)\"" . font-lock-comment-face) ; comment
    (,(concat "[$]\\([^\\\\]\\|\\\\[^x]\\|\\\\x" hexdigit-regexp hexdigit-regexp "[^\\]\\)")
     . font-lock-string-face)        ; character
    ("[^#$\\]'\\(.\\|\'\\)*'" . font-lock-string-face) ; string
    (,(concat "`\\(" slate-binop-regexp "\\|" slate-name-regexp ":?\\)")
