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