[NFC] Add libcxx python reformat SHA to .git-blame-ignore-revs
[llvm-project.git] / mlir / utils / vscode / pdll-grammar.json
blob47c8968c3ac0c477ab59ce618a90d03aff759325
2   "name": "PDLL",
3   "fileTypes": [
4     "pdll"
5   ],
6   "patterns": [
7     {
8       "include": "#comment"
9     },
10     {
11       "include": "#string"
12     },
13     {
14       "include": "#string_block"
15     },
16     {
17       "include": "#integer"
18     },
19     {
20       "include": "#include"
21     },
22     {
23       "include": "#user_constraint"
24     },
25     {
26       "include": "#user_rewrite"
27     },
28     {
29       "include": "#pattern"
30     },
31     {
32       "include": "#inside_pattern"
33     }
34   ],
35   "repository": {
36     "comment": {
37       "match": "\/\/.*$",
38       "name": "comment.line.double-slash.pdll"
39     },
40     "string": {
41       "name": "string.quoted.double.pdll",
42       "begin": "\"",
43       "end": "\"",
44       "beginCaptures": {
45         "0": {
46           "name": "punctuation.definition.string.begin.pdll"
47         }
48       },
49       "patterns": [
50         {
51           "match": "\\\\[nt\"]",
52           "name": "constant.character.escape.pdll"
53         },
54         {
55           "match": "\\\\.",
56           "name": "invalid.illegal.pdll"
57         }
58       ],
59       "endCaptures": {
60         "0": {
61           "name": "punctuation.definition.string.end.pdll"
62         }
63       }
64     },
65     "string_block": {
66       "name": "string.quoted.triple.pdll",
67       "begin": "\\[{",
68       "end": "}]",
69       "beginCaptures": {
70         "0": {
71           "name": "punctuation.definition.string.begin.pdll"
72         }
73       },
74       "patterns": [
75         {
76           "match": "\\\\[nt\"]",
77           "name": "constant.character.escape.pdll"
78         },
79         {
80           "match": "\\\\.",
81           "name": "invalid.illegal.pdll"
82         }
83       ],
84       "endCaptures": {
85         "0": {
86           "name": "punctuation.definition.string.end.pdll"
87         }
88       }
89     },
90     "integer": {
91       "match": "[0-9]+",
92       "name": "constant.numeric.pdll"
93     },
94     "include": {
95       "patterns": [
96         {
97           "match": "(#include)",
98           "name": "keyword.control.pdll"
99         }
100       ]
101     },
102     "argument_or_result_list": {
103       "patterns": [
104         {
105           "match": "\\b([aA-zZ_0-9]*)\\b\\s*:\\s*([aA-zZ_0-9]+)\\b(\\<([^\\>]+)\\>)?",
106           "captures": {
107             "1": {
108               "name": "variable.parameter.pdll"
109             },
110             "2": {
111               "name": "entity.name.type.pdll"
112             },
113             "4": {
114               "name": "variable.other.enummember.pdll"
115             }
116           }
117         },
118         {
119           "match": "(\\(|\\>|,)\\s*([aA-zZ_0-9]+)\\b(\\<([^\\>]+)\\>)?\\s*(?=[^:])",
120           "captures": {
121             "2": {
122               "name": "entity.name.type.pdll"
123             },
124             "4": {
125               "name": "variable.other.enummember.pdll"
126             }
127           }
128         }
129       ]
130     },
131     "user_constraint": {
132       "patterns": [
133         {
134           "begin": "\\b(Constraint)\\b\\s*(\\b[aA-zZ_0-9]*\\b)?",
135           "beginCaptures": {
136             "1": {
137               "name": "keyword.other.pdll"
138             },
139             "2": {
140               "name": "entity.name.type.pdll"
141             }
142           },
143           "patterns": [
144             {
145               "begin": "(\\[{)",
146               "patterns": [
147                 {
148                   "include": "source.cpp"
149                 }
150               ],
151               "end": "(}])"
152             },
153             {
154               "begin": "(?=\\()",
155               "patterns": [
156                 {
157                   "include": "#argument_or_result_list"
158                 }
159               ],
160               "end": "\\)"
161             },
162             {
163               "include": "#argument_or_result_list"
164             },
165             {
166               "begin": "{",
167               "patterns": [
168                 {
169                   "include": "#inside_pattern"
170                 }
171               ],
172               "end": "(?=})"
173             },
174             {
175               "begin": "=>",
176               "patterns": [
177                 {
178                   "include": "#inside_pattern"
179                 }
180               ],
181               "end": "(?=;|,|\\))"
182             }
183           ],
184           "end": "(}|;|,)|(?=\\))"
185         }
186       ]
187     },
188     "user_rewrite": {
189       "patterns": [
190         {
191           "begin": "\\b(Rewrite)\\b\\s*(\\b[aA-zZ_0-9]*\\b)?",
192           "beginCaptures": {
193             "1": {
194               "name": "keyword.other.pdll"
195             },
196             "2": {
197               "name": "entity.name.function.pdll"
198             }
199           },
200           "patterns": [
201             {
202               "begin": "(\\[{)",
203               "patterns": [
204                 {
205                   "include": "source.cpp"
206                 }
207               ],
208               "end": "(}])"
209             },
210             {
211               "begin": "(?=\\()",
212               "patterns": [
213                 {
214                   "include": "#argument_or_result_list"
215                 }
216               ],
217               "end": "\\)"
218             },
219             {
220               "include": "#argument_or_result_list"
221             },
222             {
223               "begin": "{",
224               "patterns": [
225                 {
226                   "include": "#inside_pattern"
227                 }
228               ],
229               "end": "(?=})"
230             },
231             {
232               "begin": "=>",
233               "patterns": [
234                 {
235                   "include": "#inside_pattern"
236                 }
237               ],
238               "end": "(?=;|,|\\))"
239             }
240           ],
241           "end": "(}|;|,)|(?=\\))"
242         }
243       ]
244     },
245     "pattern_metadata": {
246       "patterns": [
247         {
248           "match": "\\b(with)\\b",
249           "name": "keyword.other.pdll"
250         },
251         {
252           "match": "\\b(benefit)\\b\\(([0-9]+)\\)",
253           "captures": {
254             "1": {
255               "name": "entity.name.variable.pdll"
256             },
257             "2": {
258               "name": "constant.numeric.pdll"
259             }
260           }
261         },
262         {
263           "match": "\\b(recursion)\\b",
264           "name": "entity.name.variable.pdll"
265         }
266       ]
267     },
268     "pattern": {
269       "patterns": [
270         {
271           "begin": "\\b(Pattern)\\b\\s*(\\b[aA-zZ_0-9]*\\b)?\\s*(\\bwith\\b\\s*[^\\{]*)?\\s*({)",
272           "beginCaptures": {
273             "1": {
274               "name": "keyword.other.pdll"
275             },
276             "2": {
277               "name": "entity.name.function.pdll"
278             },
279             "3": {
280               "patterns": [
281                 {
282                   "include": "#pattern_metadata"
283                 }
284               ]
285             }
286           },
287           "patterns": [
288             {
289               "include": "#inside_pattern"
290             }
291           ],
292           "end": "(})"
293         },
294         {
295           "begin": "\\b(Pattern)\\b\\s*(\\b[aA-zZ_0-9]*\\b)?\\s*(\\bwith\\b\\s*[^\\=]*)?\\s*(=>)",
296           "beginCaptures": {
297             "1": {
298               "name": "keyword.other.pdll"
299             },
300             "2": {
301               "name": "entity.name.function.pdll"
302             },
303             "3": {
304               "patterns": [
305                 {
306                   "include": "#pattern_metadata"
307                 }
308               ]
309             }
310           },
311           "patterns": [
312             {
313               "include": "#inside_pattern"
314             }
315           ],
316           "end": ";"
317         }
318       ]
319     },
320     "inside_pattern": {
321       "patterns": [
322         {
323           "match": "\\b(erase|let|replace|return|rewrite|with)\\b",
324           "captures": {
325             "1": {
326               "name": "keyword.control.pdll"
327             }
328           }
329         },
330         {
331           "include": "#expressions"
332         }
333       ]
334     },
335     "variable_constraint": {
336       "patterns": [
337         {
338           "match": "\\b(Op)<([a-zA-Z0-9_\\.$-]*)>",
339           "captures": {
340             "1": {
341               "name": "entity.name.type.pdll"
342             },
343             "2": {
344               "name": "variable.other.enummember.pdll"
345             }
346           }
347         },
348         {
349           "begin": "<",
350           "patterns": [
351             {
352               "include": "#expressions"
353             }
354           ],
355           "end": ">"
356         },
357         {
358           "match": "[a-zA-Z_0-9]+",
359           "name": "entity.name.type.pdll"
360         }
361       ]
362     },
363     "variable_definition": {
364       "patterns": [
365         {
366           "begin": "\\b([aA-zZ_0-9]*)\\b\\s*:\\s*\\[",
367           "beginCaptures": {
368             "1": {
369               "name": "entity.name.variable.pdll"
370             }
371           },
372           "patterns": [
373             {
374               "include": "#variable_constraint"
375             }
376           ],
377           "end": "\\]"
378         },
379         {
380           "match": "\\b([aA-zZ_0-9]*)\\b\\s*:\\s*([aA-zZ_0-9]+(\\<([^\\>]+)\\>)?)",
381           "captures": {
382             "1": {
383               "name": "entity.name.variable.pdll"
384             },
385             "2": {
386               "patterns": [
387                 {
388                   "include": "#variable_constraint"
389                 }
390               ]
391             }
392           }
393         }
394       ]
395     },
396     "expressions": {
397       "patterns": [
398         {
399           "include": "#user_constraint"
400         },
401         {
402           "include": "#user_rewrite"
403         },
404         {
405           "include": "#attr_expr"
406         },
407         {
408           "include": "#op_expr"
409         },
410         {
411           "include": "#type_expr"
412         },
413         {
414           "include": "#call_expr"
415         },
416         {
417           "include": "#variable_definition"
418         },
419         {
420           "include": "#identifier_expr"
421         },
422         {
423           "include": "#string"
424         },
425         {
426           "include": "#string_block"
427         },
428         {
429           "include": "#comment"
430         },
431         {
432           "begin": "{",
433           "patterns": [
434             {
435               "include": "#inside_pattern"
436             }
437           ],
438           "end": "}"
439         },
440         {
441           "begin": "\\(",
442           "patterns": [
443             {
444               "include": "#expressions"
445             }
446           ],
447           "end": "\\)"
448         }
449       ]
450     },
451     "attr_expr": {
452       "patterns": [
453         {
454           "begin": "(attr)<",
455           "beginCaptures": {
456             "1": {
457               "name": "keyword.other.pdll"
458             }
459           },
460           "patterns": [
461             {
462               "include": "#string"
463             },
464             {
465               "include": "#string_block"
466             }
467           ],
468           "end": ">"
469         }
470       ]
471     },
472     "call_expr": {
473       "begin": "\\b([a-zA-Z0-9_]+)\\(",
474       "beginCaptures": {
475         "1": {
476           "name": "entity.name.variable.pdll"
477         }
478       },
479       "patterns": [
480         {
481           "include": "#expressions"
482         }
483       ],
484       "end": "\\)"
485     },
486     "identifier_expr": {
487       "match": "\\b([a-zA-Z0-9_]+)\\b",
488       "name": "entity.name.variable.pdll"
489     },
490     "op_expr": {
491       "match": "\\b(op)<([0-9a-zA-Z_\\.]*)>",
492       "captures": {
493         "1": {
494           "name": "keyword.other.pdll"
495         },
496         "2": {
497           "name": "variable.other.enummember.pdll"
498         }
499       }
500     },
501     "type_expr": {
502       "patterns": [
503         {
504           "begin": "\\b(type)<",
505           "beginCaptures": {
506             "1": {
507               "name": "keyword.other.pdll"
508             }
509           },
510           "patterns": [
511             {
512               "include": "#string"
513             },
514             {
515               "include": "#string_block"
516             }
517           ],
518           "end": ">"
519         }
520       ]
521     }
522   },
523   "scopeName": "source.pdll"