{
"name": "MLIR",
"fileTypes": [
"mlir"
],
"patterns": [
{
"include": "#comment"
},
{
"include": "#string"
},
{
"include": "#top_level_entity"
}
],
"repository": {
"comment": {
"match": "\/\/.*$",
"name": "comment.line.double-slash.mlir"
},
"number": {
"patterns": [
{
"match": "(\\W)?([0-9]+\\.[0-9]*)([eE][+-]?[0-9]+)?",
"name": "constant.numeric.mlir"
},
{
"match": "([\\W])?(0x[0-9a-zA-Z]+)",
"captures": {
"2": {
"name": "constant.numeric.mlir"
}
}
},
{
"match": "([\\Wx])?([0-9]+)",
"captures": {
"2": {
"name": "constant.numeric.mlir"
}
}
}
]
},
"string": {
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.mlir"
}
},
"patterns": [
{
"match": "\\\\[nt\"]",
"name": "constant.character.escape.mlir"
}
],
"end": "\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.mlir"
}
},
"name": "string.quoted.double.mlir"
},
"top_level_entity": {
"patterns": [
{
"include": "#attribute_alias_def"
},
{
"include": "#type_alias_def"
},
{
"include": "#operation_body"
}
]
},
"attribute_alias_def": {
"match": "^\\s*(\\#\\w+)\\b\\s+\\=",
"captures": {
"1": {
"name": "constant.language.mlir"
}
}
},
"type_alias_def": {
"match": "^\\s*(\\!\\w+)\\b\\s+\\=",
"captures": {
"1": {
"name": "entity.name.type.mlir"
}
}
},
"operation": {
"patterns": [
{
"match": "^\\s*(\\%[\\%\\w\\:\\,\\s]+)\\s+\\=\\s+([\\w\\.\\$\\-]+)\\b",
"captures": {
"1": {
"patterns": [
{
"include": "#ssa_value"
}
]
},
"2": {
"name": "variable.other.enummember.mlir"
}
}
},
{
"match": "^\\s*([\\w\\.\\$\\-]+)\\b(?=[^\\<\\:])",
"name": "variable.other.enummember.mlir"
}
]
},
"operation_body": {
"patterns": [
{
"include": "#operation"
},
{
"include": "#region_body_or_attr_dict"
},
{
"include": "#comment"
},
{
"include": "#ssa_value"
},
{
"include": "#block"
},
{
"include": "#attribute_value"
},
{
"include": "#bare_identifier"
}
]
},
"region_body_or_attr_dict": {
"patterns": [
{
"begin": "\\{\\s*(?=\\%|\\/|\\^)",
"patterns": [
{
"include": "#operation_body"
}
],
"end": "\\}"
},
{
"begin": "\\{\\s*(?=[^\\}]*$)",
"patterns": [
{
"include": "#operation_body"
}
],
"end": "\\}"
},
{
"begin": "\\{\\s*(?=\\%)",
"patterns": [
{
"include": "#operation_body"
}
],
"end": "\\}"
},
{
"begin": "\\{\\s*(?=.*$)",
"patterns": [
{
"include": "#attribute_dictionary_body"
}
],
"end": "\\}"
}
]
},
"attribute_value": {
"patterns": [
{
"include": "#string"
},
{
"include": "#comment"
},
{
"include": "#number"
},
{
"match": "\\b(false|true|unit)\\b",
"name": "constant.language.mlir"
},
{
"begin": "\\b(affine_map|affine_set)\\s*\\<",
"beginCaptures": {
"1": {
"name": "constant.language.mlir"
}
},
"patterns": [
{
"match": "\\b(ceildiv|floordiv|mod|symbol)\\b",
"name": "entity.name.function.mlir"
},
{
"match": "\\b([\\w\\.\\$\\-]+)\\b",
"name": "variable.mlir"
},
{
"include": "#number"
}
],
"end": "\\)\\>"
},
{
"begin": "\\b(dense|opaque|sparse)\\s*\\<",
"beginCaptures": {
"1": {
"name": "constant.language.mlir"
}
},
"patterns": [
{
"include": "#attribute_value"
}
],
"end": "\\>"
},
{
"begin": "\\[",
"patterns": [
{
"include": "#attribute_value"
},
{
"include": "#operation_body"
}
],
"end": "\\]"
},
{
"begin": "\\{",
"patterns": [
{
"include": "#attribute_dictionary_body"
}
],
"end": "\\}"
},
{
"match": "(\\@[\\w+\\$\\-\\.]*)",
"name": "entity.name.function.mlir"
},
{
"begin": "(\\#[\\w\\$\\-\\.]+)\\<",
"beginCaptures": {
"1": {
"name": "constant.language.mlir"
}
},
"patterns": [
{
"include": "#attribute_value"
},
{
"match": "\\-\\>|\\>\\="
},
{
"include": "#bare_identifier"
}
],
"end": "\\>"
},
{
"match": "\\#[\\w\\$\\-\\.]+\\b",
"name": "constant.language.mlir"
},
{
"include": "#type_value"
},
{
"begin": "\\<",
"patterns": [
{
"include": "#attribute_value"
},
{
"include": "#bare_identifier"
}
],
"end": "\\>"
}
]
},
"attribute_dictionary_body": {
"patterns": [
{
"include": "#comment"
},
{
"include": "#string"
},
{
"include": "#attribute_value"
},
{
"match": "(\\%)?\\b([\\w\\.\\-\\$\\:0-9]+)\\b\\s*(?=\\=|\\,|\\})",
"name": "variable.other.mlir"
}
]
},
"type_value": {
"patterns": [
{
"begin": "(\\![\\w\\$\\-\\.]+)\\<",
"beginCaptures": {
"1": {
"name": "entity.name.type.mlir"
}
},
"patterns": [
{
"include": "#attribute_value"
},
{
"match": "\\-\\>|\\>\\=",
"name": "punctuation.other.mlir"
},
{
"include": "#bare_identifier"
}
],
"end": "\\>"
},
{
"match": "\\![\\w\\$\\-\\.]+\\b",
"name": "entity.name.type.mlir"
},
{
"begin": "(complex|memref|tensor|tuple|vector)\\<",
"beginCaptures": {
"1": {
"name": "entity.name.type.mlir"
}
},
"patterns": [
{
"match": "[\\?x0-9\\[\\]]+",
"captures": {
"0": {
"patterns": [
{
"include": "#number"
}
]
}
}
},
{
"include": "#attribute_value"
},
{
"match": "\\-\\>|\\>\\=",
"name": "punctuation.other.mlir"
},
{
"include": "#bare_identifier"
}
],
"end": "\\>"
},
{
"match": "bf16|f16|f32|f64|f80|f128|index|none|(u|s)?i[0-9]+",
"name": "entity.name.type.mlir"
}
]
},
"bare_identifier": {
"match": "\\b([\\w\\.\\$\\-]+)\\b",
"name": "keyword.other.mlir"
},
"ssa_value": {
"match": "\\%[\\w\\.\\$\\:\\#]+",
"name": "variable.other.mlir"
},
"block": {
"match": "\\^[\\w\\d_$\\.-]+",
"name": "keyword.control.mlir"
}
},
"scopeName": "source.mlir"
}