merico-dev / tree-sitter-objc

Tree-sitter parser for Objective-C
MIT License
16 stars 7 forks source link

highlights.scm basing on c lang,usable but still has query error prompted #9

Open wellcomez opened 2 years ago

wellcomez commented 2 years ago

(identifier) @variable (self) @variable.builtin (super) @variable.builtin (strong) @variable.builtin (nonatomic) @variable.builtin (weak) @variable.builtin

[ "in" "@interface" "@protocol" "@property" "@end" "@implementation" "const" "default" "enum" "extern" "inline" "static" "struct" "typedef" "union" "volatile" "goto" "register" ] @keyword

"sizeof" @keyword.operator "return" @keyword.return

[ "while" "for" "do" "continue" "break" ] @repeat

[ "if" "else" "case" "switch" ] @conditional

"#define" @constant.macro [ "#if" "#ifdef" "#ifndef" "#else" "#elif" "#endif" (preproc_directive) ] @keyword

"#include" @include "#import" @include

[ "="

"-" "*" "/" "+" "%"

"~" "|" "&" "^" "<<" ">>"

"->"

"<" "<=" ">=" ">" "==" "!="

"!" "&&" "||"

"-=" "+=" "*=" "/=" "%=" "|=" "&=" "^=" ">>=" "<<=" "--" "++" "@" ] @operator

[ (true) (false) ] @boolean

[ "." ";" ":" "," ] @punctuation.delimiter

"..." @punctuation.special

(conditional_expression [ "?" ":" ] @conditional)

[ "(" ")" "[" "]" "{" "}"] @punctuation.bracket

(string_literal) @string (system_lib_string) @string (escape_sequence) @string.escape

(null) @constant.builtin (number_literal) @number (char_literal) @character

[ (preproc_arg) (preproc_defined) ] @function.macro

(((field_expression (field_identifier) @property)) @_parent (#not-has-parent? @_parent template_method function_declarator call_expression))

(((field_identifier) @property) (#has-ancestor? @property field_declaration) (#not-has-ancestor? @property function_declarator))

(statement_identifier) @label

[ (type_identifier) (primitive_type) (sized_type_specifier) (type_descriptor) ] @type

(declaration (type_qualifier) @type) (cast_expression type: (type_descriptor) @type) (sizeof_expression value: (parenthesized_expression (identifier) @type))

((identifier) @constant (#match? @constant "^[A-Z][A-Z0-9_]+$"))

;; Preproc def / undef (preprocdef name: () @constant) (preproc_call directive: (preproc_directive) @u argument: () @constant (#eq? @_u "#undef"))

(call_expression function: (identifier) @function) (call_expression function: (field_expression field: (field_identifier) @function)) (function_declarator declarator: (identifier) @function) (preproc_function_def name: (identifier) @function.macro)

(comment) @comment

;; Parameters (parameter_declaration declarator: (identifier) @parameter)

(parameter_declaration declarator: (pointer_declarator) @parameter)

(preproc_params (identifier)) @parameter

[ "attribute" "cdecl" "clrcall" "stdcall" "fastcall" "thiscall" "vectorcall" "_unaligned" "unaligned" "declspec" ] @attribute

(ERROR) @error

wellcomez commented 2 years ago

As objc is supper-set of c, we just need append some extendable syntax.