1(preproc_def
2 "#define" @context
3 name: (_) @name) @item
4
5(preproc_function_def
6 "#define" @context
7 name: (_) @name
8 parameters: (preproc_params
9 "(" @context
10 ")" @context)) @item
11
12(namespace_definition
13 "inline"? @context
14 "namespace" @context
15 name: (_) @name) @item
16
17(type_definition
18 "typedef" @context
19 declarator: (_) @name) @item
20
21(struct_specifier
22 "struct" @context
23 name: (_) @name) @item
24
25(class_specifier
26 "class" @context
27 name: (_) @name) @item
28
29(enum_specifier
30 "enum" @context
31 [
32 "class"
33 "struct"
34 ]? @context
35 name: (_) @name) @item
36
37(union_specifier
38 "union" @context
39 name: (_) @name) @item
40
41(enumerator
42 name: (_) @name) @item
43
44(concept_definition
45 "concept" @context
46 name: (_) @name) @item
47
48(declaration
49 [
50 (storage_class_specifier)
51 (type_qualifier)
52 ]* @context
53 type: (_) @context
54 declarator: [
55 ; The declaration may define multiple variables, using @item on the
56 ; declarator so that they get distinct ranges.
57 (init_declarator
58 declarator: (_) @item @name)
59 (identifier) @item @name
60 ] @item)
61
62(function_definition
63 [
64 (storage_class_specifier)
65 (type_qualifier)
66 ]* @context
67 type: (_)? @context
68 declarator: [
69 (function_declarator
70 declarator: (_) @name
71 parameters: (parameter_list
72 "(" @context
73 ")" @context))
74 (pointer_declarator
75 "*" @context
76 declarator: (function_declarator
77 declarator: (_) @name
78 parameters: (parameter_list
79 "(" @context
80 ")" @context)))
81 (pointer_declarator
82 "*" @context
83 declarator: (pointer_declarator
84 "*" @context
85 declarator: (function_declarator
86 declarator: (_) @name
87 parameters: (parameter_list
88 "(" @context
89 ")" @context))))
90 (reference_declarator
91 [
92 "&"
93 "&&"
94 ] @context
95 (function_declarator
96 declarator: (_) @name
97 parameters: (parameter_list
98 "(" @context
99 ")" @context)))
100 ]
101 (type_qualifier)? @context) @item
102
103(declaration
104 [
105 (storage_class_specifier)
106 (type_qualifier)
107 ]* @context
108 type: (_)? @context
109 declarator: [
110 (field_identifier) @name
111 (pointer_declarator
112 "*" @context
113 declarator: (field_identifier) @name)
114 (function_declarator
115 declarator: (_) @name
116 parameters: (parameter_list
117 "(" @context
118 ")" @context))
119 (pointer_declarator
120 "*" @context
121 declarator: (function_declarator
122 declarator: (_) @name
123 parameters: (parameter_list
124 "(" @context
125 ")" @context)))
126 (pointer_declarator
127 "*" @context
128 declarator: (pointer_declarator
129 "*" @context
130 declarator: (function_declarator
131 declarator: (_) @name
132 parameters: (parameter_list
133 "(" @context
134 ")" @context))))
135 (reference_declarator
136 [
137 "&"
138 "&&"
139 ] @context
140 (function_declarator
141 declarator: (_) @name
142 parameters: (parameter_list
143 "(" @context
144 ")" @context)))
145 ]
146 (type_qualifier)? @context) @item
147
148(field_declaration
149 [
150 (storage_class_specifier)
151 (type_qualifier)
152 ]* @context
153 type: (_) @context
154 declarator: [
155 (field_identifier) @name
156 (pointer_declarator
157 "*" @context
158 declarator: (field_identifier) @name)
159 (function_declarator
160 declarator: (_) @name
161 parameters: (parameter_list
162 "(" @context
163 ")" @context))
164 (pointer_declarator
165 "*" @context
166 declarator: (function_declarator
167 declarator: (_) @name
168 parameters: (parameter_list
169 "(" @context
170 ")" @context)))
171 (pointer_declarator
172 "*" @context
173 declarator: (pointer_declarator
174 "*" @context
175 declarator: (function_declarator
176 declarator: (_) @name
177 parameters: (parameter_list
178 "(" @context
179 ")" @context))))
180 (reference_declarator
181 [
182 "&"
183 "&&"
184 ] @context
185 (function_declarator
186 declarator: (_) @name
187 parameters: (parameter_list
188 "(" @context
189 ")" @context)))
190 ; Fields declarations may define multiple fields, and so @item is on the
191 ; declarator so they each get distinct ranges.
192 ] @item
193 (type_qualifier)? @context)
194
195(comment) @annotation