feat(wing): add parser (#5021)

Co-authored-by: Christian Clason <c.clason@uni-graz.at>
Co-authored-by: ObserverOfTime <chronobserver@disroot.org>
This commit is contained in:
Glib Shpychka 2023-06-29 13:34:46 +03:00 committed by GitHub
parent 99a7e8d268
commit f460cc8ee7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 147 additions and 0 deletions

18
queries/wing/folds.scm Normal file
View file

@ -0,0 +1,18 @@
[
(class_definition)
(class_implementation)
(resource_definition)
(resource_implementation)
(interface_definition)
(interface_implementation)
(for_in_loop)
(while_statement)
(if_statement)
(if_let_statement)
(elif_block)
(struct_definition)
(enum_definition)
(try_catch_statement)
(method_definition)
(inflight_method_definition)
] @fold

View file

@ -0,0 +1,86 @@
(identifier) @variable
(reference_identifier) @variable
(member_identifier) @property
; Classes
(custom_type) @type
(class_field
name: (identifier) @field)
(class_definition
name: (identifier) @type)
(method_definition
name: (identifier) @method)
(inflight_method_definition
name: (identifier) @method)
; Functions
(keyword_argument_key) @parameter
(call
caller: (reference
(nested_identifier
property: (member_identifier) @method.call)))
(call
caller: (reference
(reference_identifier) @method.call))
; Primitives
(number) @number
(duration) @constant
(string) @string
(bool) @boolean
(builtin_type) @type.builtin
(json_container_type) @type.builtin
; Special
(comment) @comment
[
"("
")"
"{"
"}"
] @punctuation.bracket
[
"-"
"+"
"*"
"/"
"%"
"<"
"<="
"="
"=="
"!"
"!="
">"
">="
"&&"
"??"
"||"
] @operator
[
";"
"."
","
] @punctuation.delimiter
[
"as"
"bring"
"class"
"else"
"for"
"if"
"in"
"init"
"let"
"new"
"return"
(inflight_specifier)
] @keyword

5
queries/wing/locals.scm Normal file
View file

@ -0,0 +1,5 @@
(block) @scope
(variable_definition_statement
name: (identifier) @definition)
; TODO: Missing "@local.reference" usage tuned for each relevant identifier location