1(identifier) @variable
2
3(field_identifier) @property
4
5(namespace_identifier) @namespace
6
7(concept_definition
8 name: (identifier) @concept)
9
10(requires_clause
11 constraint: (template_type
12 name: (type_identifier) @concept))
13
14(module_name
15 (identifier) @module)
16
17(module_declaration
18 name: (module_name
19 (identifier) @module))
20
21(import_declaration
22 name: (module_name
23 (identifier) @module))
24
25(import_declaration
26 partition: (module_partition
27 (module_name
28 (identifier) @module)))
29
30(call_expression
31 function: (qualified_identifier
32 name: (identifier) @function))
33
34(call_expression
35 (qualified_identifier
36 (identifier) @function.call))
37
38(call_expression
39 (qualified_identifier
40 (qualified_identifier
41 (identifier) @function.call)))
42
43(call_expression
44 (qualified_identifier
45 (qualified_identifier
46 (qualified_identifier
47 (identifier) @function.call))))
48
49((qualified_identifier
50 (qualified_identifier
51 (qualified_identifier
52 (qualified_identifier
53 (identifier) @function.call)))) @_parent
54 (#has-ancestor? @_parent call_expression))
55
56(call_expression
57 function: (identifier) @function)
58
59(call_expression
60 function: (field_expression
61 field: (field_identifier) @function))
62
63(preproc_function_def
64 name: (identifier) @function.special)
65
66(template_function
67 name: (identifier) @function)
68
69(template_method
70 name: (field_identifier) @function)
71
72(function_declarator
73 declarator: (identifier) @function)
74
75(function_declarator
76 declarator: (qualified_identifier
77 name: (identifier) @function))
78
79(function_declarator
80 declarator: (field_identifier) @function)
81
82(operator_name
83 (identifier)? @operator) @function
84
85(operator_name
86 "<=>" @operator.spaceship)
87
88(destructor_name
89 (identifier) @function)
90
91((namespace_identifier) @type
92 (#match? @type "^[A-Z]"))
93
94(auto) @type
95
96(type_identifier) @type
97
98type: (primitive_type) @type.builtin
99
100(sized_type_specifier) @type.builtin
101
102; GNU __attribute__
103(attribute_specifier) @attribute
104
105(attribute_specifier
106 (argument_list
107 (identifier) @attribute))
108
109; C++11 [[attributes]]
110(attribute
111 prefix: (identifier) @attribute)
112
113(attribute
114 name: (identifier) @attribute)
115
116((identifier) @constant.builtin
117 (#match? @constant.builtin "^_*[A-Z][A-Z\\d_]*$"))
118
119(statement_identifier) @label
120
121(this) @variable.builtin
122
123"static_assert" @function.builtin
124
125[
126 "alignas"
127 "alignof"
128 "class"
129 "concept"
130 "consteval"
131 "constexpr"
132 "constinit"
133 "decltype"
134 "delete"
135 "enum"
136 "explicit"
137 "export"
138 "extern"
139 "final"
140 "friend"
141 "import"
142 "inline"
143 "module"
144 "namespace"
145 "new"
146 "noexcept"
147 "operator"
148 "override"
149 "private"
150 "protected"
151 "public"
152 "requires"
153 "sizeof"
154 "struct"
155 "template"
156 "thread_local"
157 "typedef"
158 "typename"
159 "union"
160 "using"
161 "virtual"
162 (storage_class_specifier)
163 (type_qualifier)
164] @keyword
165
166[
167 "break"
168 "case"
169 "catch"
170 "co_await"
171 "co_return"
172 "co_yield"
173 "continue"
174 "default"
175 "do"
176 "else"
177 "for"
178 "goto"
179 "if"
180 "return"
181 "switch"
182 "throw"
183 "try"
184 "while"
185] @keyword.control
186
187[
188 "#define"
189 "#elif"
190 "#elifdef"
191 "#elifndef"
192 "#else"
193 "#endif"
194 "#if"
195 "#ifdef"
196 "#ifndef"
197 "#include"
198 (preproc_directive)
199] @preproc
200
201(comment) @comment
202
203[
204 (true)
205 (false)
206] @boolean
207
208[
209 (null)
210 "nullptr"
211] @constant.builtin
212
213(number_literal) @number
214
215[
216 (string_literal)
217 (system_lib_string)
218 (char_literal)
219 (raw_string_literal)
220] @string
221
222(escape_sequence) @string.escape
223
224[
225 ","
226 ":"
227 "::"
228 ";"
229 (raw_string_delimiter)
230] @punctuation.delimiter
231
232[
233 "{"
234 "}"
235 "("
236 ")"
237 "["
238 "]"
239] @punctuation.bracket
240
241[
242 "."
243 ".*"
244 "->*"
245 "~"
246 "-"
247 "--"
248 "-="
249 "->"
250 "="
251 "!"
252 "!="
253 "|"
254 "|="
255 "||"
256 "^"
257 "^="
258 "&"
259 "&="
260 "&&"
261 "+"
262 "++"
263 "+="
264 "*"
265 "*="
266 "/"
267 "/="
268 "%"
269 "%="
270 "<<"
271 "<<="
272 ">>"
273 ">>="
274 "<"
275 "=="
276 ">"
277 "<="
278 ">="
279 "?"
280 "and"
281 "and_eq"
282 "bitand"
283 "bitor"
284 "compl"
285 "not"
286 "not_eq"
287 "or"
288 "or_eq"
289 "xor"
290 "xor_eq"
291] @operator
292
293"<=>" @operator.spaceship
294
295(binary_expression
296 operator: "<=>" @operator.spaceship)
297
298(conditional_expression
299 ":" @operator)
300
301(user_defined_literal
302 (literal_suffix) @operator)