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