      (1 'factor-font-lock-parsing-word)
      (2 'factor-font-lock-word)
      (3 'factor-font-lock-type-name))
-    (,factor-typedef-regex (1 'factor-font-lock-type-name)
+    (,factor-symbol-definition-regex (1 'factor-font-lock-parsing-word)
+                                     (2 'factor-font-lock-word))
+    (,factor-typedef-regex (1 'factor-font-lock-parsing-word)
                            (2 'factor-font-lock-type-name)
-                           (3 'factor-font-lock-invalid-syntax nil t))
+                           (3 'factor-font-lock-type-name))
     (,factor-c-global-regex (1 'factor-font-lock-type-name)
                             (2 'factor-font-lock-word)
                             (3 'factor-font-lock-invalid-syntax nil t))

  (regexp-opt factor-declaration-words 'symbols))

(defsubst factor-second-word-regex (prefixes)
  (format "%s +\\([^ \r\n]+\\)" (regexp-opt prefixes t)))

(defconst factor-method-definition-regex
  "^M::? +\\([^ ]+\\) +\\([^ ]+\\)")

    (,factor-constructor-regex . 'factor-font-lock-constructor)
    (,factor-setter-regex . 'factor-font-lock-setter-word)
    (,factor-getter-regex . 'factor-font-lock-getter-word)
    (,factor-bad-string-regex . 'factor-font-lock-invalid-syntax)
    ("\\_<\\(P\\|SBUF\\|DLL\\)\"" 1 'factor-font-lock-parsing-word)
    (,factor-constant-words-regex . 'factor-font-lock-constant)
