forked from OSchip/llvm-project
[TableGen] Add a new json textmate description for syntax highlighting
There isn't really a good pre-existing syntax highlighter for tablegen, so this commit adds a textmate version that covers nearly everything in the current spec. Differential Revision: https://reviews.llvm.org/D125427
This commit is contained in:
parent
da766cea56
commit
f0792c715d
|
@ -0,0 +1,452 @@
|
|||
{
|
||||
"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"
|
||||
}
|
Loading…
Reference in New Issue