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