452 lines · json
1{2 "name": "TableGen",3 "fileTypes": [4 "td"5 ],6 "patterns": [7 {8 "include": "#comments"9 },10 {11 "include": "#preprocessor"12 },13 {14 "include": "#strings"15 },16 {17 "include": "#integer"18 },19 {20 "include": "#builtin_types"21 },22 {23 "include": "#keywords"24 },25 {26 "include": "#classes"27 },28 {29 "include": "#defs"30 },31 {32 "include": "#values"33 }34 ],35 "repository": {36 "comments": {37 "patterns": [38 {39 "match": "\/\/.*$",40 "name": "comment.line.double-slash.tablegen"41 },42 {43 "begin": "/\\*",44 "end": "\\*/",45 "captures": {46 "0": {47 "name": "comment.block.tablegen"48 }49 },50 "patterns": [51 {52 "include": "#comments"53 }54 ],55 "name": "comment.block.tablegen"56 }57 ]58 },59 "preprocessor": {60 "patterns": [61 {62 "match": "^#ifdef\\s+(\\w+)",63 "name": "keyword.control.ifdef.tablegen",64 "captures": {65 "1": {66 "name": "entity.name.function.preprocessor.tablegen"67 }68 }69 },70 {71 "match": "^#ifndef\\s+(\\w+)",72 "name": "keyword.control.ifndef.tablegen",73 "captures": {74 "1": {75 "name": "entity.name.function.preprocessor.tablegen"76 }77 }78 },79 {80 "match": "^#else",81 "name": "keyword.control.else.tablegen"82 },83 {84 "match": "#endif",85 "name": "keyword.control.endif.tablegen"86 },87 {88 "match": "#define\\s+(\\w+)",89 "name": "keyword.control.ifndef.tablegen",90 "captures": {91 "1": {92 "name": "entity.name.function.preprocessor.tablegen"93 }94 }95 },96 {97 "match": "^include\\s+",98 "name": "keyword.control.include.tablegen"99 }100 ]101 },102 "strings": {103 "patterns": [104 {105 "name": "string.quoted.double.tablegen",106 "begin": "\"",107 "end": "\"",108 "beginCaptures": {109 "0": {110 "name": "punctuation.definition.string.begin.tablegen"111 }112 },113 "patterns": [114 {115 "match": "\\\\['nt\"]",116 "name": "constant.character.escape.tablegen"117 }118 ],119 "endCaptures": {120 "0": {121 "name": "punctuation.definition.string.end.tablegen"122 }123 }124 },125 {126 "name": "string.quoted.triple.tablegen",127 "begin": "\\[{",128 "end": "}]",129 "beginCaptures": {130 "0": {131 "name": "punctuation.definition.string.begin.tablegen"132 }133 },134 "patterns": [135 {136 "match": "\\\\[nt\"]",137 "name": "constant.character.escape.tablegen"138 }139 ],140 "endCaptures": {141 "0": {142 "name": "punctuation.definition.string.end.tablegen"143 }144 }145 }146 ]147 },148 "integer": {149 "patterns": [150 {151 "match": "\\b\\d+\\b",152 "name": "constant.numeric.tablegen"153 },154 {155 "match": "\\b0[xX][a-fA-F0-9]+\\b",156 "name": "constant.numeric.hex.tablegen"157 },158 {159 "match": "\\b0b[01]+\\b",160 "name": "constant.numeric.binary.tablegen"161 }162 ]163 },164 "builtin_types": {165 "patterns": [166 {167 "match": "\\b(?:bit|code|dag|int|string)\\b",168 "name": "entity.name.type.tablegen"169 },170 {171 "begin": "\\b(bits)\\<",172 "beginCaptures": {173 "1": {174 "name": "entity.name.type.tablegen"175 }176 },177 "patterns": [178 {179 "include": "#integer"180 }181 ],182 "end": "\\>"183 },184 {185 "begin": "\\b(list)\\<",186 "beginCaptures": {187 "1": {188 "name": "entity.name.type.tablegen"189 }190 },191 "patterns": [192 {193 "include": "#types"194 }195 ],196 "end": "\\>"197 }198 ]199 },200 "types": {201 "patterns": [202 {203 "include": "#builtin_types"204 },205 {206 "match": "\\b(\\w+)\\b",207 "name": "entity.name.type.tablegen"208 }209 ]210 },211 "bang_operators": {212 "patterns": [213 {214 "begin": "(\\!cast|\\!getdagop|\\!isa)\\<",215 "beginCaptures": {216 "1": {217 "name": "entity.name.function"218 }219 },220 "patterns": [221 {222 "include": "#types"223 }224 ],225 "end": "\\>"226 },227 {228 "match": "(\\!\\w+)\\b",229 "name": "entity.name.function"230 }231 ]232 },233 "keywords": {234 "patterns": [235 {236 "match": "\\b(assert|else|foreach|defset|defvar|field|if|in|let|then)\\b",237 "name": "keyword.other.tablegen"238 }239 ]240 },241 "record_body": {242 "patterns": [243 {244 "begin": "\\:",245 "patterns": [246 {247 "match": "\\b(\\w+)\\b",248 "name": "entity.name.type.tablegen"249 },250 {251 "begin": "\\<",252 "patterns": [253 {254 "include": "#values"255 }256 ],257 "end": "\\>"258 }259 ],260 "end": "(?=\\;|\\{)"261 },262 {263 "begin": "\\{",264 "patterns": [265 {266 "include": "#keywords"267 },268 {269 "include": "#builtin_types"270 },271 {272 "match": "\\b(\\w+\\s+)?\\b(\\w+)\\b\\s+\\=",273 "captures": {274 "1": {275 "name": "entity.name.type.tablegen"276 },277 "2": {278 "name": "variable.other.tablegen"279 }280 }281 },282 {283 "include": "#values"284 }285 ],286 "end": "(?=\\})"287 }288 ]289 },290 "classes": {291 "begin": "\\b(multiclass|class)\\b\\s+(\\w+)\\b",292 "beginCaptures": {293 "1": {294 "name": "keyword.other.class.tablegen"295 },296 "2": {297 "name": "entity.name.type.tablegen"298 }299 },300 "patterns": [301 {302 "begin": "\\<",303 "patterns": [304 {305 "include": "#builtin_types"306 },307 {308 "match": "\\b(\\w+\\s+)?\\b(\\w+)\\b",309 "captures": {310 "1": {311 "name": "entity.name.type.tablegen"312 },313 "2": {314 "name": "variable.other.tablegen"315 }316 }317 },318 {319 "begin": "=",320 "patterns": [321 {322 "include": "#values"323 }324 ],325 "end": "(?=\\>|\\,)"326 }327 ],328 "end": "\\>"329 },330 {331 "include": "#record_body"332 }333 ],334 "end": "(\\;|\\})"335 },336 "defs": {337 "begin": "\\b(defm|def)\\b",338 "beginCaptures": {339 "1": {340 "name": "keyword.other.def.tablegen"341 }342 },343 "patterns": [344 {345 "include": "#record_body"346 },347 {348 "include": "#values"349 }350 ],351 "end": "(\\;|\\})"352 },353 "values": {354 "patterns": [355 {356 "include": "#builtin_types"357 },358 {359 "include": "#bang_operators"360 },361 {362 "include": "#classes"363 },364 {365 "include": "#defs"366 },367 {368 "include": "#comments"369 },370 {371 "include": "#integer"372 },373 {374 "include": "#strings"375 },376 {377 "match": "\\b(?:false|true)\\b",378 "name": "keyword.other.tablegen"379 },380 {381 "match": "(\\?)",382 "name": "keyword.other.tablegen"383 },384 {385 "begin": "\\{",386 "patterns": [387 {388 "include": "#values"389 }390 ],391 "end": "\\}"392 },393 {394 "begin": "\\[",395 "patterns": [396 {397 "include": "#values"398 }399 ],400 "end": "(?=\\])"401 },402 {403 "begin": "\\]\\s*\\<",404 "patterns": [405 {406 "include": "#types"407 }408 ],409 "end": "\\>"410 },411 {412 "begin": "\\(",413 "patterns": [414 {415 "include": "#values"416 }417 ],418 "end": "\\)"419 },420 {421 "include": "#keywords"422 },423 {424 "begin": "\\b(\\w+)\\<",425 "beginCaptures": {426 "1": {427 "name": "entity.name.type.tablegen"428 }429 },430 "patterns": [431 {432 "include": "#values"433 }434 ],435 "end": "\\>"436 },437 {438 "match": "(\\$\\w+)\\b",439 "name": "variable.other.enummember.tablegen"440 },441 {442 "match": "\\b(\\w+)\\b",443 "name": "variable.other.tablegen"444 },445 {446 "include": "#preprocessor"447 }448 ]449 }450 },451 "scopeName": "source.tablegen"452}