| { | 
 |   "name": "TableGen", | 
 |   "fileTypes": [ | 
 |     "td" | 
 |   ], | 
 |   "patterns": [ | 
 |     { | 
 |       "include": "#comments" | 
 |     }, | 
 |     { | 
 |       "include": "#preprocessor" | 
 |     }, | 
 |     { | 
 |       "include": "#strings" | 
 |     }, | 
 |     { | 
 |       "include": "#integer" | 
 |     }, | 
 |     { | 
 |       "include": "#builtin_types" | 
 |     }, | 
 |     { | 
 |       "include": "#keywords" | 
 |     }, | 
 |     { | 
 |       "include": "#classes" | 
 |     }, | 
 |     { | 
 |       "include": "#defs" | 
 |     }, | 
 |     { | 
 |       "include": "#values" | 
 |     } | 
 |   ], | 
 |   "repository": { | 
 |     "comments": { | 
 |       "patterns": [ | 
 |         { | 
 |           "match": "\/\/.*$", | 
 |           "name": "comment.line.double-slash.tablegen" | 
 |         }, | 
 |         { | 
 |           "begin": "/\\*", | 
 |           "end": "\\*/", | 
 |           "captures": { | 
 |             "0": { | 
 |               "name": "comment.block.tablegen" | 
 |             } | 
 |           }, | 
 |           "patterns": [ | 
 |             { | 
 |               "include": "#comments" | 
 |             } | 
 |           ], | 
 |           "name": "comment.block.tablegen" | 
 |         } | 
 |       ] | 
 |     }, | 
 |     "preprocessor": { | 
 |       "patterns": [ | 
 |         { | 
 |           "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", | 
 |           "captures": { | 
 |             "1": { | 
 |               "name": "entity.name.function.preprocessor.tablegen" | 
 |             } | 
 |           } | 
 |         }, | 
 |         { | 
 |           "match": "^#else", | 
 |           "name": "keyword.control.else.tablegen" | 
 |         }, | 
 |         { | 
 |           "match": "#endif", | 
 |           "name": "keyword.control.endif.tablegen" | 
 |         }, | 
 |         { | 
 |           "match": "#define\\s+(\\w+)", | 
 |           "name": "keyword.control.ifndef.tablegen", | 
 |           "captures": { | 
 |             "1": { | 
 |               "name": "entity.name.function.preprocessor.tablegen" | 
 |             } | 
 |           } | 
 |         }, | 
 |         { | 
 |           "match": "^include\\s+", | 
 |           "name": "keyword.control.include.tablegen" | 
 |         } | 
 |       ] | 
 |     }, | 
 |     "strings": { | 
 |       "patterns": [ | 
 |         { | 
 |           "name": "string.quoted.double.tablegen", | 
 |           "begin": "\"", | 
 |           "end": "\"", | 
 |           "beginCaptures": { | 
 |             "0": { | 
 |               "name": "punctuation.definition.string.begin.tablegen" | 
 |             } | 
 |           }, | 
 |           "patterns": [ | 
 |             { | 
 |               "match": "\\\\['nt\"]", | 
 |               "name": "constant.character.escape.tablegen" | 
 |             } | 
 |           ], | 
 |           "endCaptures": { | 
 |             "0": { | 
 |               "name": "punctuation.definition.string.end.tablegen" | 
 |             } | 
 |           } | 
 |         }, | 
 |         { | 
 |           "name": "string.quoted.triple.tablegen", | 
 |           "begin": "\\[{", | 
 |           "end": "}]", | 
 |           "beginCaptures": { | 
 |             "0": { | 
 |               "name": "punctuation.definition.string.begin.tablegen" | 
 |             } | 
 |           }, | 
 |           "patterns": [ | 
 |             { | 
 |               "match": "\\\\[nt\"]", | 
 |               "name": "constant.character.escape.tablegen" | 
 |             } | 
 |           ], | 
 |           "endCaptures": { | 
 |             "0": { | 
 |               "name": "punctuation.definition.string.end.tablegen" | 
 |             } | 
 |           } | 
 |         } | 
 |       ] | 
 |     }, | 
 |     "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" | 
 |         } | 
 |       ] | 
 |     }, | 
 |     "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" | 
 |             } | 
 |           }, | 
 |           "patterns": [ | 
 |             { | 
 |               "include": "#integer" | 
 |             } | 
 |           ], | 
 |           "end": "\\>" | 
 |         }, | 
 |         { | 
 |           "begin": "\\b(list)\\<", | 
 |           "beginCaptures": { | 
 |             "1": { | 
 |               "name": "entity.name.type.tablegen" | 
 |             } | 
 |           }, | 
 |           "patterns": [ | 
 |             { | 
 |               "include": "#types" | 
 |             } | 
 |           ], | 
 |           "end": "\\>" | 
 |         } | 
 |       ] | 
 |     }, | 
 |     "types": { | 
 |       "patterns": [ | 
 |         { | 
 |           "include": "#builtin_types" | 
 |         }, | 
 |         { | 
 |           "match": "\\b(\\w+)\\b", | 
 |           "name": "entity.name.type.tablegen" | 
 |         } | 
 |       ] | 
 |     }, | 
 |     "bang_operators": { | 
 |       "patterns": [ | 
 |         { | 
 |           "begin": "(\\!cast|\\!getdagop|\\!isa)\\<", | 
 |           "beginCaptures": { | 
 |             "1": { | 
 |               "name": "entity.name.function" | 
 |             } | 
 |           }, | 
 |           "patterns": [ | 
 |             { | 
 |               "include": "#types" | 
 |             } | 
 |           ], | 
 |           "end": "\\>" | 
 |         }, | 
 |         { | 
 |           "match": "(\\!\\w+)\\b", | 
 |           "name": "entity.name.function" | 
 |         } | 
 |       ] | 
 |     }, | 
 |     "keywords": { | 
 |       "patterns": [ | 
 |         { | 
 |           "match": "\\b(assert|else|foreach|defset|defvar|field|if|in|let|then)\\b", | 
 |           "name": "keyword.other.tablegen" | 
 |         } | 
 |       ] | 
 |     }, | 
 |     "record_body": { | 
 |       "patterns": [ | 
 |         { | 
 |           "begin": "\\:", | 
 |           "patterns": [ | 
 |             { | 
 |               "match": "\\b(\\w+)\\b", | 
 |               "name": "entity.name.type.tablegen" | 
 |             }, | 
 |             { | 
 |               "begin": "\\<", | 
 |               "patterns": [ | 
 |                 { | 
 |                   "include": "#values" | 
 |                 } | 
 |               ], | 
 |               "end": "\\>" | 
 |             } | 
 |           ], | 
 |           "end": "(?=\\;|\\{)" | 
 |         }, | 
 |         { | 
 |           "begin": "\\{", | 
 |           "patterns": [ | 
 |             { | 
 |               "include": "#keywords" | 
 |             }, | 
 |             { | 
 |               "include": "#builtin_types" | 
 |             }, | 
 |             { | 
 |               "match": "\\b(\\w+\\s+)?\\b(\\w+)\\b\\s+\\=", | 
 |               "captures": { | 
 |                 "1": { | 
 |                   "name": "entity.name.type.tablegen" | 
 |                 }, | 
 |                 "2": { | 
 |                   "name": "variable.other.tablegen" | 
 |                 } | 
 |               } | 
 |             }, | 
 |             { | 
 |               "include": "#values" | 
 |             } | 
 |           ], | 
 |           "end": "(?=\\})" | 
 |         } | 
 |       ] | 
 |     }, | 
 |     "classes": { | 
 |       "begin": "\\b(multiclass|class)\\b\\s+(\\w+)\\b", | 
 |       "beginCaptures": { | 
 |         "1": { | 
 |           "name": "keyword.other.class.tablegen" | 
 |         }, | 
 |         "2": { | 
 |           "name": "entity.name.type.tablegen" | 
 |         } | 
 |       }, | 
 |       "patterns": [ | 
 |         { | 
 |           "begin": "\\<", | 
 |           "patterns": [ | 
 |             { | 
 |               "include": "#builtin_types" | 
 |             }, | 
 |             { | 
 |               "match": "\\b(\\w+\\s+)?\\b(\\w+)\\b", | 
 |               "captures": { | 
 |                 "1": { | 
 |                   "name": "entity.name.type.tablegen" | 
 |                 }, | 
 |                 "2": { | 
 |                   "name": "variable.other.tablegen" | 
 |                 } | 
 |               } | 
 |             }, | 
 |             { | 
 |               "begin": "=", | 
 |               "patterns": [ | 
 |                 { | 
 |                   "include": "#values" | 
 |                 } | 
 |               ], | 
 |               "end": "(?=\\>|\\,)" | 
 |             } | 
 |           ], | 
 |           "end": "\\>" | 
 |         }, | 
 |         { | 
 |           "include": "#record_body" | 
 |         } | 
 |       ], | 
 |       "end": "(\\;|\\})" | 
 |     }, | 
 |     "defs": { | 
 |       "begin": "\\b(defm|def)\\b", | 
 |       "beginCaptures": { | 
 |         "1": { | 
 |           "name": "keyword.other.def.tablegen" | 
 |         } | 
 |       }, | 
 |       "patterns": [ | 
 |         { | 
 |           "include": "#record_body" | 
 |         }, | 
 |         { | 
 |           "include": "#values" | 
 |         } | 
 |       ], | 
 |       "end": "(\\;|\\})" | 
 |     }, | 
 |     "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": "\\{", | 
 |           "patterns": [ | 
 |             { | 
 |               "include": "#values" | 
 |             } | 
 |           ], | 
 |           "end": "\\}" | 
 |         }, | 
 |         { | 
 |           "begin": "\\[", | 
 |           "patterns": [ | 
 |             { | 
 |               "include": "#values" | 
 |             } | 
 |           ], | 
 |           "end": "(?=\\])" | 
 |         }, | 
 |         { | 
 |           "begin": "\\]\\s*\\<", | 
 |           "patterns": [ | 
 |             { | 
 |               "include": "#types" | 
 |             } | 
 |           ], | 
 |           "end": "\\>" | 
 |         }, | 
 |         { | 
 |           "begin": "\\(", | 
 |           "patterns": [ | 
 |             { | 
 |               "include": "#values" | 
 |             } | 
 |           ], | 
 |           "end": "\\)" | 
 |         }, | 
 |         { | 
 |           "include": "#keywords" | 
 |         }, | 
 |         { | 
 |           "begin": "\\b(\\w+)\\<", | 
 |           "beginCaptures": { | 
 |             "1": { | 
 |               "name": "entity.name.type.tablegen" | 
 |             } | 
 |           }, | 
 |           "patterns": [ | 
 |             { | 
 |               "include": "#values" | 
 |             } | 
 |           ], | 
 |           "end": "\\>" | 
 |         }, | 
 |         { | 
 |           "match": "(\\$\\w+)\\b", | 
 |           "name": "variable.other.enummember.tablegen" | 
 |         }, | 
 |         { | 
 |           "match": "\\b(\\w+)\\b", | 
 |           "name": "variable.other.tablegen" | 
 |         }, | 
 |         { | 
 |           "include": "#preprocessor" | 
 |         } | 
 |       ] | 
 |     } | 
 |   }, | 
 |   "scopeName": "source.tablegen" | 
 | } |