comparison dot_config/helix/runtime/queries/verilog/highlights.scm @ 877:56e26ce1a5ce draft

feat: improve verilog support
author Zeger Van de Vannet <zeger@vandevan.net>
date Tue, 16 Apr 2024 19:08:02 +0200
parents
children
comparison
equal deleted inserted replaced
876:8589883596fd 877:56e26ce1a5ce
1 ; Keywords
2
3 [
4 ; block delimiters
5 (module_keyword)
6 "endmodule"
7 "program"
8 "endprogram"
9 "class"
10 "endclass"
11 "interface"
12 "endinterface"
13 "package"
14 "endpackage"
15 "checker"
16 "endchecker"
17 "config"
18 "endconfig"
19
20 "pure"
21 "virtual"
22 "extends"
23 "implements"
24 "super"
25 (class_item_qualifier)
26
27 "parameter"
28 "localparam"
29 "defparam"
30 "assign"
31 "typedef"
32 "modport"
33 "fork"
34 "join"
35 "join_none"
36 "join_any"
37 "default"
38 "break"
39 "assert"
40 (unique_priority)
41 "tagged"
42 "extern"
43 ] @keyword
44
45 [
46 "function"
47 "endfunction"
48
49 "task"
50 "endtask"
51 ] @keyword.function
52
53 "return" @keyword.control.return
54
55 [
56 "begin"
57 "end"
58 ] @label
59
60 [
61 (always_keyword)
62 "generate"
63 "for"
64 "foreach"
65 "repeat"
66 "forever"
67 "initial"
68 "while"
69 ] @keyword.control
70
71 [
72 "if"
73 "else"
74 (case_keyword)
75 "endcase"
76 ] @keyword.control.conditional
77
78 (comment) @comment
79
80 (include_compiler_directive) @keyword.directive
81 (package_import_declaration
82 "import" @keyword.control.import)
83
84 (package_import_declaration
85 (package_import_item
86 (package_identifier
87 (simple_identifier) @constant)))
88
89 (text_macro_definition) @keyword.directive
90
91 (text_macro_identifier
92 (simple_identifier) @keyword.directive)
93
94 [
95 (id_directive)
96 (zero_directive)
97 ] @keyword.directive
98
99 (package_scope
100 (package_identifier
101 (simple_identifier) @constant))
102
103 (package_declaration
104 (package_identifier
105 (simple_identifier) @constant))
106
107 (parameter_port_list
108 "#" @constructor)
109
110 [
111 "="
112 "-"
113 "+"
114 "/"
115 "*"
116 "^"
117 "&"
118 "|"
119 "&&"
120 "||"
121 ":"
122 (unary_operator)
123 "{"
124 "}"
125 "'{"
126 "<="
127 "@"
128 "or"
129 "and"
130 "=="
131 "!="
132 "==="
133 "!=="
134 "-:"
135 "<"
136 ">"
137 ">="
138 "%"
139 ">>"
140 "<<"
141 "|="
142 (inc_or_dec_operator)
143 ] @keyword.operator
144
145 (cast
146 ["'" "(" ")"] @keyword.operator)
147
148 (edge_identifier) @constant
149
150 [
151 (port_direction)
152 (input_declaration)
153 (output_declaration)
154 ] @label
155
156 (port_identifier) @variable.parameter
157
158
159 [
160 (net_type)
161 (integer_vector_type)
162 (integer_atom_type)
163 ] @type.builtin
164
165 [
166 "signed"
167 "unsigned"
168 ] @label
169
170 (data_type
171 (simple_identifier) @type)
172
173 (method_call_body
174 (method_identifier) @variable.other.member)
175
176 (interface_identifier
177 (simple_identifier) @type)
178
179 (modport_identifier
180 (modport_identifier
181 (simple_identifier) @variable.other.member))
182
183 (net_port_type1
184 (simple_identifier) @type)
185
186 [
187 (double_quoted_string)
188 (string_literal)
189 ] @string
190
191 [
192 (include_compiler_directive)
193 (default_nettype_compiler_directive)
194 (timescale_compiler_directive)
195 ] @keyword.directive
196
197 ; begin/end label
198 (seq_block
199 (simple_identifier) @comment)
200
201 [
202 ";"
203 "::"
204 ","
205 "."
206 ] @punctuation.delimiter
207
208
209 (default_nettype_compiler_directive
210 (default_nettype_value) @string)
211
212 (text_macro_identifier
213 (simple_identifier) @function.macro)
214
215 (module_declaration
216 (module_header
217 (simple_identifier) @constructor))
218
219 (class_constructor_declaration
220 "new" @constructor)
221
222 (parameter_identifier
223 (simple_identifier) @variable.parameter)
224
225 [
226 (integral_number)
227 (unsigned_number)
228 (unbased_unsized_literal)
229 ] @constant.numeric
230
231 (time_unit) @constant
232
233 (checker_instantiation
234 (checker_identifier
235 (simple_identifier) @constructor))
236
237 (module_instantiation
238 (simple_identifier) @type)
239
240 (name_of_instance
241 (instance_identifier
242 (simple_identifier) @variable))
243
244 (interface_port_declaration
245 (interface_identifier
246 (simple_identifier) @type))
247
248 (net_declaration
249 (simple_identifier) @type)
250
251 (lifetime) @label
252
253 (function_identifier
254 (function_identifier
255 (simple_identifier) @function))
256
257 (function_subroutine_call
258 (subroutine_call
259 (tf_call
260 (simple_identifier) @function)))
261
262 (function_subroutine_call
263 (subroutine_call
264 (system_tf_call
265 (system_tf_identifier) @function.builtin)))
266
267 (task_identifier
268 (task_identifier
269 (simple_identifier) @function.method))
270
271 ;;TODO: fixme
272 ;(assignment_pattern_expression
273 ;(assignment_pattern
274 ;(parameter_identifier) @variable.other.member))
275
276 (type_declaration
277 (data_type ["packed"] @label))
278
279 (struct_union) @type
280
281 [
282 "enum"
283 ] @type
284
285 (enum_name_declaration
286 (enum_identifier
287 (simple_identifier) @constant))
288
289 (type_declaration
290 (simple_identifier) @type)
291
292 [
293 (integer_atom_type)
294 (non_integer_type)
295 "genvar"
296 ] @type.builtin
297
298 (struct_union_member
299 (list_of_variable_decl_assignments
300 (variable_decl_assignment
301 (simple_identifier) @variable.other.member)))
302
303 (member_identifier
304 (simple_identifier) @variable.other.member)
305
306 (struct_union_member
307 (data_type_or_void
308 (data_type
309 (simple_identifier) @type)))
310
311 (type_declaration
312 (simple_identifier) @type)
313
314 (generate_block_identifier) @comment
315
316 [
317 "["
318 "]"
319 "("
320 ")"
321 ] @punctuation.bracket
322
323 (attribute_instance) @attribute
324 (attribute_instance
325 (attr_spec) @label)
326
327 (ERROR) @error