Skip to content

Commit e65ba3b

Browse files
Add syntax highlighting for byte literals (#190)
1 parent d818276 commit e65ba3b

1 file changed

Lines changed: 136 additions & 42 deletions

File tree

syntaxes/effekt.tmLanguage.json

Lines changed: 136 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,33 @@
44
"foldingStartMarker": "(?<![\"'])(/\\*\\*|\\{\\s*$)",
55
"foldingStopMarker": "(?<![\"'])(\\*\\*/|^\\s*\\})",
66
"patterns": [
7-
{ "include": "#comments" },
8-
{ "include": "#definitions" },
9-
{ "include": "#regions" },
10-
{ "include": "#keywords" },
11-
{ "include": "#boxed_types" },
12-
{ "include": "#literals" },
13-
{ "include": "#names" },
14-
{ "include": "#holes" },
15-
{ "include": "#operators" }
7+
{
8+
"include": "#comments"
9+
},
10+
{
11+
"include": "#definitions"
12+
},
13+
{
14+
"include": "#regions"
15+
},
16+
{
17+
"include": "#keywords"
18+
},
19+
{
20+
"include": "#boxed_types"
21+
},
22+
{
23+
"include": "#literals"
24+
},
25+
{
26+
"include": "#names"
27+
},
28+
{
29+
"include": "#holes"
30+
},
31+
{
32+
"include": "#operators"
33+
}
1634
],
1735
"repository": {
1836
"comments": {
@@ -21,26 +39,34 @@
2139
"begin": "///",
2240
"end": "\\n",
2341
"beginCaptures": {
24-
"0": { "name": "punctuation.definition.comment.effekt" }
42+
"0": {
43+
"name": "punctuation.definition.comment.effekt"
44+
}
2545
},
2646
"name": "comment.line.documentation.effekt"
2747
},
2848
{
2949
"begin": "//",
3050
"end": "\\n",
3151
"beginCaptures": {
32-
"0": { "name": "punctuation.definition.comment.effekt" }
52+
"0": {
53+
"name": "punctuation.definition.comment.effekt"
54+
}
3355
},
3456
"name": "comment.line.double-slash.effekt"
3557
},
3658
{
3759
"begin": "/\\*",
3860
"beginCaptures": {
39-
"0": { "name": "punctuation.definition.comment.effekt" }
61+
"0": {
62+
"name": "punctuation.definition.comment.effekt"
63+
}
4064
},
4165
"end": "\\*/",
4266
"endCaptures": {
43-
"0": { "name": "punctuation.definition.comment.effekt" }
67+
"0": {
68+
"name": "punctuation.definition.comment.effekt"
69+
}
4470
},
4571
"name": "comment.block.effekt"
4672
}
@@ -52,48 +78,80 @@
5278
"begin": "\\s*(extern)\\s+(def)\\s+([a-zA-Z][a-z-A-Z0-9_$]*)\\b",
5379
"end": "(?=\\n)|(?<=\\S)\\s*(?==(?!>))",
5480
"captures": {
55-
"1": { "name": "storage.modifier.extern.effekt" },
56-
"2": { "name": "keyword.declaration.function.extern.effekt" },
57-
"3": { "name": "entity.name.function.effekt" }
81+
"1": {
82+
"name": "storage.modifier.extern.effekt"
83+
},
84+
"2": {
85+
"name": "keyword.declaration.function.extern.effekt"
86+
},
87+
"3": {
88+
"name": "entity.name.function.effekt"
89+
}
5890
},
5991
"patterns": [
60-
{ "include": "#parameters" },
61-
{ "include": "#comments" },
62-
{ "include": "#boxed_types" }
92+
{
93+
"include": "#parameters"
94+
},
95+
{
96+
"include": "#comments"
97+
},
98+
{
99+
"include": "#boxed_types"
100+
}
63101
]
64102
},
65103
{
66104
"begin": "\\s*(def)\\s+([a-zA-Z][a-z-A-Z0-9_$]*)\\b",
67105
"end": "(?=\\n)|(?<=\\S)\\s*(?==(?!>))",
68106
"captures": {
69-
"1": { "name": "keyword.declaration.function.effekt" },
70-
"2": { "name": "entity.name.function.effekt" }
107+
"1": {
108+
"name": "keyword.declaration.function.effekt"
109+
},
110+
"2": {
111+
"name": "entity.name.function.effekt"
112+
}
71113
},
72114
"patterns": [
73-
{ "include": "#parameters" },
74-
{ "include": "#comments" },
75-
{ "include": "#boxed_types" }
115+
{
116+
"include": "#parameters"
117+
},
118+
{
119+
"include": "#comments"
120+
},
121+
{
122+
"include": "#boxed_types"
123+
}
76124
]
77125
},
78126
{
79127
"match": "\\s*(val)\\s+([a-zA-Z][a-z-A-Z0-9_$]*)\\b",
80128
"captures": {
81-
"1": { "name": "keyword.declaration.val.effekt" },
82-
"2": { "name": "variable.other.effekt" }
129+
"1": {
130+
"name": "keyword.declaration.val.effekt"
131+
},
132+
"2": {
133+
"name": "variable.other.effekt"
134+
}
83135
}
84136
},
85137
{
86138
"begin": "\\s*(var)\\s+([a-zA-Z][a-z-A-Z0-9_$]*)\\b",
87139
"beginCaptures": {
88-
"1": { "name": "keyword.declaration.var.effekt" },
89-
"2": { "name": "variable.other.effekt" }
140+
"1": {
141+
"name": "keyword.declaration.var.effekt"
142+
},
143+
"2": {
144+
"name": "variable.other.effekt"
145+
}
90146
},
91147
"end": "(?:;|(?=\\n)|(?<=\\S)\\s*(?==(?!>)))",
92148
"patterns": [
93149
{
94150
"match": "\\s+(in)\\s+([a-zA-Z][a-z-A-Z0-9_$]*)\\b",
95151
"captures": {
96-
"1": { "name": "keyword.other.in.effekt" },
152+
"1": {
153+
"name": "keyword.other.in.effekt"
154+
},
97155
"2": {
98156
"patterns": [
99157
{
@@ -116,30 +174,48 @@
116174
{
117175
"match": "\\s*(extern)?\\s*(type|effect|interface|resource)\\s+([a-zA-Z][a-z-A-Z0-9_$]*)\\b",
118176
"captures": {
119-
"1": { "name": "storage.modifier.extern.effekt" },
120-
"2": { "name": "keyword.declaration.type.effekt" },
121-
"3": { "name": "entity.name.type.effekt" }
177+
"1": {
178+
"name": "storage.modifier.extern.effekt"
179+
},
180+
"2": {
181+
"name": "keyword.declaration.type.effekt"
182+
},
183+
"3": {
184+
"name": "entity.name.type.effekt"
185+
}
122186
}
123187
},
124188
{
125189
"match": "\\s*(namespace)\\s+([a-zA-Z][a-z-A-Z0-9_$]*)\\b",
126190
"captures": {
127-
"1": { "name": "keyword.declaration.namespace.effekt" },
128-
"2": { "name": "entity.name.namespace.effekt" }
191+
"1": {
192+
"name": "keyword.declaration.namespace.effekt"
193+
},
194+
"2": {
195+
"name": "entity.name.namespace.effekt"
196+
}
129197
}
130198
},
131199
{
132200
"match": "\\s*(module)\\s+((?:[a-zA-Z][a-zA-Z0-9_]*(?:/[a-zA-Z][a-zA-Z0-9_]*)*))\\b",
133201
"captures": {
134-
"1": { "name": "keyword.declaration.module.effekt" },
135-
"2": { "name": "entity.name.module.effekt" }
202+
"1": {
203+
"name": "keyword.declaration.module.effekt"
204+
},
205+
"2": {
206+
"name": "entity.name.module.effekt"
207+
}
136208
}
137209
},
138210
{
139211
"match": "\\s*(import)\\s+((?:[a-zA-Z][a-zA-Z0-9_]*(?:/[a-zA-Z][a-zA-Z0-9_]*)*))\\b",
140212
"captures": {
141-
"1": { "name": "keyword.other.import.effekt" },
142-
"2": { "name": "entity.name.module.import.effekt" }
213+
"1": {
214+
"name": "keyword.other.import.effekt"
215+
},
216+
"2": {
217+
"name": "entity.name.module.import.effekt"
218+
}
143219
}
144220
}
145221
]
@@ -256,6 +332,14 @@
256332
"match": "\\b([0-9]+)\\b",
257333
"name": "constant.numeric.integer.effekt"
258334
},
335+
{
336+
"match": "\\b0x(?:(?![0-9A-Fa-f])|[0-9A-Fa-f](?![0-9A-Fa-f])|[0-9A-Fa-f]{3,}|[^0-9A-Fa-f]\\w*)",
337+
"name": "invalid.illegal.byte.effekt"
338+
},
339+
{
340+
"match": "\\b0x[0-9A-Fa-f]{2}(?![0-9A-Fa-f])",
341+
"name": "constant.numeric.byte.effekt"
342+
},
259343
{
260344
"include": "#characters"
261345
},
@@ -336,7 +420,9 @@
336420
{
337421
"match": "\\b([a-z][a-zA-Z0-9_]*)\\b[\\s]*[({\\[]",
338422
"captures": {
339-
"1": { "name": "entity.name.function.effekt" }
423+
"1": {
424+
"name": "entity.name.function.effekt"
425+
}
340426
}
341427
},
342428
{
@@ -358,10 +444,16 @@
358444
},
359445
"end": "\\}",
360446
"endCaptures": {
361-
"0": { "name": "punctuation.definition.template-expression.end.effekt" }
447+
"0": {
448+
"name": "punctuation.definition.template-expression.end.effekt"
449+
}
362450
},
363451
"name": "meta.embedded.line.effekt",
364-
"patterns": [{ "include": "$self" }]
452+
"patterns": [
453+
{
454+
"include": "$self"
455+
}
456+
]
365457
},
366458
"punctuation": {
367459
"patterns": [
@@ -414,7 +506,9 @@
414506
{
415507
"match": "\\b(region)\\s+([a-zA-Z][a-zA-Z0-9_]*)\\b",
416508
"captures": {
417-
"1": { "name": "keyword.other.region.effekt" },
509+
"1": {
510+
"name": "keyword.other.region.effekt"
511+
},
418512
"2": {
419513
"name": "variable.other.capability.effekt entity.name.region.effekt"
420514
}

0 commit comments

Comments
 (0)