1{
2	"scopeName": "source.spirv",
3	"name": "SPIR-V",
4	"comment": "Generated by {{GenerateArguments}}. Do not modify this file directly.",
5	"patterns": [
6{{range $o := .All.OperandKinds}}{{if len $o.Enumerants}}		{ "include": "#{{$o.Category}}_{{$o.Kind}}" },
7{{end}}{{end}}		{ "include": "#opcode" },
8		{ "include": "#extopcode" },
9		{ "include": "#identifier" },
10		{ "include": "#number" },
11		{ "include": "#string" },
12		{ "include": "#comment" },
13		{ "include": "#operator" }
14	],
15	"repository": { {{range $o := .All.OperandKinds}}{{if len $o.Enumerants}}
16		"{{$o.Category}}_{{$o.Kind}}": {
17			"match": "\\b({{OperandKindsMatch $o}})\\b",
18			"name": "keyword.spirv"
19		},{{end}}{{end}}
20		"opcode": {
21			"match": "(Op[a-zA-Z]+)",
22			"name": "entity.name.function.spirv"
23		},
24		"extopcode": {
25			"match": "({{AllExtOpcodes}})",
26			"name": "entity.name.function.ext"
27		},
28		"identifier": {
29			"match": "%[a-zA-Z0-9_]+",
30			"name": "variable.spirv"
31		},
32		"number": {
33			"match": "\\b[0-9]+.?[0-9]*\\b",
34			"name": "constant.numeric.spirv"
35		},
36		"comment": {
37			"match": ";[^\n]*",
38			"name": "comment.line.spirv"
39		},
40		"operator": {
41			"match": "=",
42			"name": "keyword.operator.spirv"
43		},
44		"string": {
45			"begin": "\"",
46			"beginCaptures": {
47				"0": {
48					"name": "punctuation.definition.string.begin.spirv"
49				}
50			},
51			"end": "\"",
52			"endCaptures": {
53				"0": {
54					"name": "punctuation.definition.string.end.spirv"
55				}
56			},
57			"name": "string.quoted.double.spirv",
58			"patterns": [ { "include": "#string_escaped_char" } ]
59		},
60		"string_escaped_char": {
61			"patterns": [
62				{
63					"match": "\\\\([0-7]{3}|[abfnrtv\\\\'\"]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})",
64					"name": "constant.character.escape.spirv"
65				}, {
66					"match": "\\\\[^0-7xuUabfnrtv\\'\"]",
67					"name": "invalid.illegal.unknown-escape.spirv"
68				}
69			]
70		}
71	}
72}
73