| { |
| "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" |
| } |