Unnamed repository; edit this file 'description' to name the repository.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
(self) @variable.builtin

(unit_definition (identifier) @function)

(parameter (identifier) @variable.parameter)

((pipeline_reg_marker) @keyword)

(scoped_identifier
  path: (identifier) @namespace)
(scoped_identifier
 (scoped_identifier
  name: (identifier) @namespace))

((builtin_type) @type.builtin)

((identifier) @type.builtin
 (#any-of?
    @type.builtin
    "uint"
    "Option"
    "Memory"))

((identifier) @type.enum.variant.builtin
 (#any-of? @type.enum.variant.builtin "Some" "None"))

((pipeline_stage_name) @label)

((stage_reference
    stage: (identifier) @label))

[
    "pipeline"
    "let"
    "set"
    "entity"
    "fn"
    "reg"
    "reset"
    "initial"
    "inst"
    "assert"
    "struct"
    "enum"
    "stage"
    "impl"
    "port"
    "decl"
    "mod"
    "where"
    "trait"
] @keyword

[
 "use"
] @keyword.import

[
    "gen"
] @keyword.directive

((gen_if_expression  ["if" "else"] @keyword.directive))
((naked_gen_if_expression  ["if" "else"] @keyword.directive))

((attribute) ["#" "[" "]"] @punctuation.delimiter)

[
  "else"
  "if"
  "match"
] @keyword.control.conditional

(bool_literal) @constant.builtin.boolean
(int_literal) @constant.numeric.integer

[
  "&"
  "inv"
  "-"
  "=>"
  ">"
  "<"
  "::<"
  "::$<"
  "="
  "->"
  "~"
  "!"
] @operator


((op_add) @operator)
((op_sub) @operator)
((op_mul) @operator)
((op_equals) @operator)
((op_lt) @operator)
((op_gt) @operator)
((op_le) @operator)
((op_ge) @operator)
((op_lshift) @operator)
((op_rshift) @operator)
((op_bitwise_and) @operator)
((op_bitwise_xor) @operator)
((op_bitwise_or) @operator)
((op_logical_and) @operator)
((op_logical_or) @operator)


[
  (line_comment)
  (block_comment)
] @comment

[
  (doc_comment)
] @comment.block.documentation


((identifier) @type
  (#match? @type "[A-Z]"))

((scoped_identifier
    name: (identifier) @type)
 (#match? @type "^[A-Z]"))

((identifier) @constant
 (#match? @constant "^[A-Z][A-Z\\d_]*$"))