 ;; Shamelessly ripped from jasmin.el
 ;; URL: http://www.neilvandyke.org/jasmin-emacs/jasmin.el
 
-(if (not tablegen-mode-syntax-table)
-    (progn
-      (setq tablegen-mode-syntax-table (make-syntax-table))
-      (mapcar (function
-               (lambda (n)
-                 (modify-syntax-entry (aref n 0)
-                                      (aref n 1)
-                                      tablegen-mode-syntax-table)))
-              '(
-                ;; whitespace (` ')
-                [?\^m " "]
-                [?\f  " "]
-                [?\n  " "]
-                [?\t  " "]
-                [?\   " "]
-                ;; word constituents (`w')
-                [?\%  "w"]
-                ;;[?_  "w  "]
-                ;; comments
-                [?\;  "< "]
-                [?\n  "> "]
-                ;;[?\r  "> "]
-                ;;[?\^m "> "]
-                ;; symbol constituents (`_')
-                ;; punctuation (`.')
-                ;; open paren (`(')
-                [?\(  "("]
-                [?\[  "("]
-                [?\{  "("]
-                [?\<  "("]
-                ;; close paren (`)')
-                [?\)  ")"]
-                [?\]  ")"]
-                [?\}  ")"]
-                [?\>  ")"]
-                ;; string quote ('"')
-                [?\"  "\""]
-                ))))
+(defvar tablegen-mode-syntax-table nil
+  "Syntax table used in `tablegen-mode' buffers.")
+(when (not tablegen-mode-syntax-table)
+  (setq tablegen-mode-syntax-table (make-syntax-table))
+  ;; whitespace (` ')
+  (modify-syntax-entry ?\   " "      tablegen-mode-syntax-table)
+  (modify-syntax-entry ?\t  " "      tablegen-mode-syntax-table)
+  (modify-syntax-entry ?\r  " "      tablegen-mode-syntax-table)
+  (modify-syntax-entry ?\n  " "      tablegen-mode-syntax-table)
+  (modify-syntax-entry ?\f  " "      tablegen-mode-syntax-table)
+  ;; word constituents (`w')
+  (modify-syntax-entry ?\%  "w"      tablegen-mode-syntax-table)
+  (modify-syntax-entry ?\_  "w"      tablegen-mode-syntax-table)
+  ;; comments
+  (modify-syntax-entry ?/   ". 124b" tablegen-mode-syntax-table)
+  (modify-syntax-entry ?*   ". 23"   tablegen-mode-syntax-table)
+  (modify-syntax-entry ?\n  "> b"    tablegen-mode-syntax-table)
+  ;; open paren (`(')
+  (modify-syntax-entry ?\(  "("      tablegen-mode-syntax-table)
+  (modify-syntax-entry ?\[  "("      tablegen-mode-syntax-table)
+  (modify-syntax-entry ?\{  "("      tablegen-mode-syntax-table)
+  (modify-syntax-entry ?\<  "("      tablegen-mode-syntax-table)
+  ;; close paren (`)')
+  (modify-syntax-entry ?\)  ")"      tablegen-mode-syntax-table)
+  (modify-syntax-entry ?\]  ")"      tablegen-mode-syntax-table)
+  (modify-syntax-entry ?\}  ")"      tablegen-mode-syntax-table)
+  (modify-syntax-entry ?\>  ")"      tablegen-mode-syntax-table)
+  ;; string quote ('"')
+  (modify-syntax-entry ?\"  "\""     tablegen-mode-syntax-table)
+  )
 
 ;; --------------------- Abbrev table -----------------------------
 

        )
    (list
     ;; Comments
     '("\/\/" . font-lock-comment-face)
     ;; Strings
     '("\"[^\"]+\"" . font-lock-string-face)
     ;; Hex constants

;; Maintainer:  The LLVM team, http://llvm.org/
;; Description: Major mode for TableGen description files (part of LLVM project)
;; Updated:     2007-12-18

(require 'comint)
(require 'custom)
(require 'ansi-color)

;; Create mode-specific tables.
(defvar td-decorators-face 'td-decorators-face
  "Face method decorators.")
(make-face 'td-decorators-face)
