; Types
(primitive_type) @type
(type_identifier) @type
(sized_type_specifier) @type
(auto) @type

; Functions
(function_declarator
  declarator: (identifier) @function)
(call_expression
  function: (identifier) @function)
(call_expression
  function: (field_expression
    field: (field_identifier) @function))

; Strings
(string_literal) @string
(raw_string_literal) @string
(char_literal) @string
(system_lib_string) @string

; Numbers
(number_literal) @number

; Comments
(comment) @comment

; Constants
(true) @constant
(false) @constant
(null) @constant

; Properties/fields
(field_identifier) @property

; Variables (lower priority, goes last)
(identifier) @variable

; Basic keywords that work
"break" @keyword
"case" @keyword
"continue" @keyword
"default" @keyword
"do" @keyword
"else" @keyword
"for" @keyword
"if" @keyword
"return" @keyword
"sizeof" @keyword
"static" @keyword
"struct" @keyword
"switch" @keyword
"while" @keyword
"catch" @keyword
"class" @keyword
"delete" @keyword
"namespace" @keyword
"new" @keyword
"private" @keyword
"protected" @keyword
"public" @keyword
"template" @keyword
"throw" @keyword
"try" @keyword
"using" @keyword
"virtual" @keyword

; Preprocessor
"#include" @keyword
"#define" @keyword
"#if" @keyword
"#else" @keyword
"#endif" @keyword
