diff --git a/llvm/utils/textmate/TableGen.tmbundle/info.plist b/llvm/utils/textmate/TableGen.tmbundle/Info.plist
rename from llvm/utils/textmate/TableGen.tmbundle/info.plist
rename to llvm/utils/textmate/TableGen.tmbundle/Info.plist
diff --git a/llvm/utils/textmate/TableGen.tmbundle/Syntaxes/TableGen.tmLanguage b/llvm/utils/textmate/TableGen.tmbundle/Syntaxes/TableGen.tmLanguage
--- a/llvm/utils/textmate/TableGen.tmbundle/Syntaxes/TableGen.tmLanguage
+++ b/llvm/utils/textmate/TableGen.tmbundle/Syntaxes/TableGen.tmLanguage
@@ -17,31 +17,197 @@
#comments
- match
- \b(def|let|in|code|dag|string|list|bits|bit|field|include|defm|foreach|class|multiclass|int)\b
- name
- keyword.control.tablegen
+ include
+ #preprocessor
- begin
- "
- end
- "
- name
- string.quoted.double.untitled
+ include
+ #strings
+
+
+ include
+ #integer
+
+
+ include
+ #builtin_types
+
+
+ include
+ #keywords
+
+
+ include
+ #classes
+
+
+ include
+ #defs
+
+
+ include
+ #values
+
+
+ repository
+
+ bang_operators
+
patterns
+
+ begin
+ (\!cast|\!getdagop|\!isa)\<
+ beginCaptures
+
+ 1
+
+ name
+ entity.name.function
+
+
+ end
+ \>
+ patterns
+
+
+ include
+ #types
+
+
+
match
- \\.
+ (\!\w+)\b
name
- constant.character.escape.tablegen
+ entity.name.function
+
+
+
+ builtin_types
+
+ patterns
+
+
+ match
+ \b(?:bit|code|dag|int|string)\b
+ name
+ entity.name.type.tablegen
+
+
+ begin
+ \b(bits)\<
+ beginCaptures
+
+ 1
+
+ name
+ entity.name.type.tablegen
+
+
+ end
+ \>
+ patterns
+
+
+ include
+ #integer
+
+
+
+
+ begin
+ \b(list)\<
+ beginCaptures
+
+ 1
+
+ name
+ entity.name.type.tablegen
+
+
+ end
+ \>
+ patterns
+
+
+ include
+ #types
+
+
+
+
+
+ classes
+
+ begin
+ \b(multiclass|class)\b\s+(\w+)\b
+ beginCaptures
+
+ 1
+
+ name
+ keyword.other.class.tablegen
+
+ 2
+
+ name
+ entity.name.type.tablegen
+
+
+ end
+ (\;|\})
+ patterns
+
+
+ begin
+ \<
+ end
+ \>
+ patterns
+
+
+ include
+ #builtin_types
+
+
+ captures
+
+ 1
+
+ name
+ entity.name.type.tablegen
+
+ 2
+
+ name
+ variable.other.tablegen
+
+
+ match
+ \b(\w+\s+)?\b(\w+)\b
+
+
+ begin
+ =
+ end
+ (?=\>|\,)
+ patterns
+
+
+ include
+ #values
+
+
+
+
+
+
+ include
+ #record_body
-
- repository
-
comments
patterns
@@ -123,6 +289,433 @@
+ defs
+
+ begin
+ \b(defm|def)\b
+ beginCaptures
+
+ 1
+
+ name
+ keyword.other.def.tablegen
+
+
+ end
+ (\;|\})
+ patterns
+
+
+ include
+ #record_body
+
+
+ include
+ #values
+
+
+
+ integer
+
+ patterns
+
+
+ match
+ \b\d+\b
+ name
+ constant.numeric.tablegen
+
+
+ match
+ \b0[xX][a-fA-F0-9]+\b
+ name
+ constant.numeric.hex.tablegen
+
+
+ match
+ \b0b[01]+\b
+ name
+ constant.numeric.binary.tablegen
+
+
+
+ keywords
+
+ patterns
+
+
+ match
+ \b(assert|else|foreach|defset|defvar|field|if|in|let|then)\b
+ name
+ keyword.other.tablegen
+
+
+
+ preprocessor
+
+ patterns
+
+
+ captures
+
+ 1
+
+ name
+ entity.name.function.preprocessor.tablegen
+
+
+ match
+ ^#ifdef\s+(\w+)
+ name
+ keyword.control.ifdef.tablegen
+
+
+ captures
+
+ 1
+
+ name
+ entity.name.function.preprocessor.tablegen
+
+
+ match
+ ^#ifndef\s+(\w+)
+ name
+ keyword.control.ifndef.tablegen
+
+
+ match
+ ^#else
+ name
+ keyword.control.else.tablegen
+
+
+ match
+ #endif
+ name
+ keyword.control.endif.tablegen
+
+
+ captures
+
+ 1
+
+ name
+ entity.name.function.preprocessor.tablegen
+
+
+ match
+ #define\s+(\w+)
+ name
+ keyword.control.ifndef.tablegen
+
+
+ match
+ ^include\s+
+ name
+ keyword.control.include.tablegen
+
+
+
+ record_body
+
+ patterns
+
+
+ begin
+ \:
+ end
+ (?=\;|\{)
+ patterns
+
+
+ match
+ \b(\w+)\b
+ name
+ entity.name.type.tablegen
+
+
+ begin
+ \<
+ end
+ \>
+ patterns
+
+
+ include
+ #values
+
+
+
+
+
+
+ begin
+ \{
+ end
+ (?=\})
+ patterns
+
+
+ include
+ #keywords
+
+
+ include
+ #builtin_types
+
+
+ captures
+
+ 1
+
+ name
+ entity.name.type.tablegen
+
+ 2
+
+ name
+ variable.other.tablegen
+
+
+ match
+ \b(\w+\s+)?\b(\w+)\b\s+\=
+
+
+ include
+ #values
+
+
+
+
+
+ strings
+
+ patterns
+
+
+ begin
+ "
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.tablegen
+
+
+ end
+ "
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.end.tablegen
+
+
+ name
+ string.quoted.double.tablegen
+ patterns
+
+
+ match
+ \\['nt"]
+ name
+ constant.character.escape.tablegen
+
+
+
+
+ begin
+ \[{
+ beginCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.begin.tablegen
+
+
+ end
+ }]
+ endCaptures
+
+ 0
+
+ name
+ punctuation.definition.string.end.tablegen
+
+
+ name
+ string.quoted.triple.tablegen
+ patterns
+
+
+ match
+ \\[nt"]
+ name
+ constant.character.escape.tablegen
+
+
+
+
+
+ types
+
+ patterns
+
+
+ include
+ #builtin_types
+
+
+ match
+ \b(\w+)\b
+ name
+ entity.name.type.tablegen
+
+
+
+ values
+
+ patterns
+
+
+ include
+ #builtin_types
+
+
+ include
+ #bang_operators
+
+
+ include
+ #classes
+
+
+ include
+ #defs
+
+
+ include
+ #comments
+
+
+ include
+ #integer
+
+
+ include
+ #strings
+
+
+ match
+ \b(?:false|true)\b
+ name
+ keyword.other.tablegen
+
+
+ match
+ (\?)
+ name
+ keyword.other.tablegen
+
+
+ begin
+ \{
+ end
+ \}
+ patterns
+
+
+ include
+ #values
+
+
+
+
+ begin
+ \[
+ end
+ (?=\])
+ patterns
+
+
+ include
+ #values
+
+
+
+
+ begin
+ \]\s*\<
+ end
+ \>
+ patterns
+
+
+ include
+ #types
+
+
+
+
+ begin
+ \(
+ end
+ \)
+ patterns
+
+
+ include
+ #values
+
+
+
+
+ include
+ #keywords
+
+
+ begin
+ \b(\w+)\<
+ beginCaptures
+
+ 1
+
+ name
+ entity.name.type.tablegen
+
+
+ end
+ \>
+ patterns
+
+
+ include
+ #values
+
+
+
+
+ match
+ (\$\w+)\b
+ name
+ variable.other.enummember.tablegen
+
+
+ match
+ \b(\w+)\b
+ name
+ variable.other.tablegen
+
+
+ include
+ #preprocessor
+
+
+
scopeName
source.tablegen