OR-1 dataflow CPU sketch
1{
2 "scopeName": "source.dfasm",
3 "name": "dfasm",
4 "fileTypes": ["dfasm"],
5 "patterns": [
6 {
7 "match": "(@)([a-zA-Z_][a-zA-Z0-9_]*)(?:(\\|)([a-zA-Z_][a-zA-Z0-9_]*))?(?:(:)([a-zA-Z_][a-zA-Z0-9_]*|0x[0-9a-fA-F]+|[0-9]+))?",
8 "captures": {
9 "1": {
10 "name": "punctuation.definition.reference.node.dfasm"
11 },
12 "2": {
13 "name": "entity.name.type.node.dfasm"
14 },
15 "3": {
16 "name": "punctuation.separator.placement.dfasm"
17 },
18 "4": {
19 "name": "entity.other.attribute-name.placement.dfasm"
20 },
21 "5": {
22 "name": "punctuation.separator.port.dfasm"
23 },
24 "6": {
25 "name": "constant.numeric.dfasm"
26 }
27 }
28 },
29 {
30 "match": "(\\&)([a-zA-Z_][a-zA-Z0-9_]*)(?:(\\|)([a-zA-Z_][a-zA-Z0-9_]*))?(?:(:)([a-zA-Z_][a-zA-Z0-9_]*|0x[0-9a-fA-F]+|[0-9]+))?",
31 "captures": {
32 "1": {
33 "name": "punctuation.definition.reference.label.dfasm"
34 },
35 "2": {
36 "name": "entity.name.function.label.dfasm"
37 },
38 "3": {
39 "name": "punctuation.separator.placement.dfasm"
40 },
41 "4": {
42 "name": "entity.other.attribute-name.placement.dfasm"
43 },
44 "5": {
45 "name": "punctuation.separator.port.dfasm"
46 },
47 "6": {
48 "name": "constant.numeric.dfasm"
49 }
50 }
51 },
52 {
53 "match": "(\\$)([a-zA-Z_][a-zA-Z0-9_]*)(?:(\\|)([a-zA-Z_][a-zA-Z0-9_]*))?(?:(:)([a-zA-Z_][a-zA-Z0-9_]*|0x[0-9a-fA-F]+|[0-9]+))?",
54 "captures": {
55 "1": {
56 "name": "punctuation.definition.reference.function.dfasm"
57 },
58 "2": {
59 "name": "entity.name.type.function.dfasm"
60 },
61 "3": {
62 "name": "punctuation.separator.placement.dfasm"
63 },
64 "4": {
65 "name": "entity.other.attribute-name.placement.dfasm"
66 },
67 "5": {
68 "name": "punctuation.separator.port.dfasm"
69 },
70 "6": {
71 "name": "constant.numeric.dfasm"
72 }
73 }
74 },
75 {
76 "match": ";.*$",
77 "name": "comment.line.semicolon.dfasm"
78 },
79 {
80 "match": "@system\\b",
81 "name": "variable.language.pragma.dfasm"
82 },
83 {
84 "match": "\\|>",
85 "name": "keyword.operator.flow.out.dfasm"
86 },
87 {
88 "match": "<\\|",
89 "name": "keyword.operator.flow.in.dfasm"
90 },
91 {
92 "match": "\\b(?:(?:add|sub|inc|dec|shiftl|shiftr|ashiftr|and|or|xor|not|eq|lt|lte|gt|gte|breq|brgt|brge|brof|brty|sweq|swgt|swge|swof|swty|gate|sel|merge|pass|const|free_ctx|read|write|clear|alloc|free|rd_inc|rd_dec|cmp_sw|ior|iow|iorw|load_inst|change_tag|extract_tag|exec))\\b",
93 "name": "support.function.opcode.dfasm"
94 },
95 {
96 "match": "(#)((?:[a-zA-Z_][a-zA-Z0-9_]*))",
97 "captures": {
98 "1": {
99 "name": "punctuation.definition.macro.dfasm"
100 },
101 "2": {
102 "name": "entity.name.function.macro.dfasm"
103 }
104 }
105 },
106 {
107 "begin": "r\"",
108 "beginCaptures": {
109 "0": {
110 "name": "string.quoted.double.raw.dfasm"
111 }
112 },
113 "end": "\"",
114 "endCaptures": {
115 "0": {
116 "name": "string.quoted.double.raw.dfasm"
117 }
118 },
119 "name": "string.quoted.double.raw.dfasm"
120 },
121 {
122 "begin": "b\"",
123 "beginCaptures": {
124 "0": {
125 "name": "string.quoted.double.byte.dfasm"
126 }
127 },
128 "end": "\"",
129 "endCaptures": {
130 "0": {
131 "name": "string.quoted.double.byte.dfasm"
132 }
133 },
134 "name": "string.quoted.double.byte.dfasm",
135 "patterns": [
136 {
137 "match": "\\\\[ntr0\\\\\\\\\\'\\\"]",
138 "name": "constant.character.escape.dfasm"
139 },
140 {
141 "match": "\\\\x[0-9a-fA-F]{2}",
142 "name": "constant.character.escape.dfasm"
143 }
144 ]
145 },
146 {
147 "begin": "\"",
148 "beginCaptures": {
149 "0": {
150 "name": "string.quoted.double.dfasm"
151 }
152 },
153 "end": "\"",
154 "endCaptures": {
155 "0": {
156 "name": "string.quoted.double.dfasm"
157 }
158 },
159 "name": "string.quoted.double.dfasm",
160 "patterns": [
161 {
162 "match": "\\\\[ntr0\\\\\\\\\\'\\\"]",
163 "name": "constant.character.escape.dfasm"
164 },
165 {
166 "match": "\\\\x[0-9a-fA-F]{2}",
167 "name": "constant.character.escape.dfasm"
168 }
169 ]
170 },
171 {
172 "begin": "'",
173 "beginCaptures": {
174 "0": {
175 "name": "string.quoted.single.dfasm"
176 }
177 },
178 "end": "'",
179 "endCaptures": {
180 "0": {
181 "name": "string.quoted.single.dfasm"
182 }
183 },
184 "name": "string.quoted.single.dfasm",
185 "patterns": [
186 {
187 "match": "\\\\[ntr0\\\\\\\\\\'\\\"]",
188 "name": "constant.character.escape.dfasm"
189 },
190 {
191 "match": "\\\\x[0-9a-fA-F]{2}",
192 "name": "constant.character.escape.dfasm"
193 }
194 ]
195 },
196 {
197 "match": "(?:0x[0-9a-fA-F]+)",
198 "name": "constant.numeric.dfasm"
199 },
200 {
201 "match": "(?:[0-9]+)",
202 "name": "constant.numeric.dfasm"
203 },
204 {
205 "match": "((?:[a-zA-Z_][a-zA-Z0-9_]*))(=)",
206 "captures": {
207 "1": {
208 "name": "entity.other.attribute-name.dfasm"
209 }
210 }
211 },
212 {
213 "match": "="
214 },
215 {
216 "match": ",",
217 "name": "punctuation.separator.dfasm"
218 },
219 {
220 "begin": "\\{",
221 "beginCaptures": {
222 "0": {
223 "name": "punctuation.section.block.dfasm"
224 }
225 },
226 "end": "\\}",
227 "endCaptures": {
228 "0": {
229 "name": "punctuation.section.block.dfasm"
230 }
231 },
232 "name": "meta.function.body.dfasm",
233 "patterns": [
234 {
235 "include": "$self"
236 }
237 ]
238 },
239 {
240 "match": "\\}",
241 "name": "punctuation.section.block.dfasm"
242 },
243 {
244 "match": "\\|(?!>)",
245 "name": "punctuation.separator.placement.dfasm"
246 },
247 {
248 "match": ":",
249 "name": "punctuation.separator.port.dfasm"
250 },
251 {
252 "match": "\\s+"
253 }
254 ],
255 "repository": {}
256}