mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-01 19:17:02 -04:00
feat: add sourcepawn parser and queries (#5865)
This commit is contained in:
parent
3dbea103d8
commit
95036477c1
6 changed files with 337 additions and 0 deletions
|
|
@ -377,6 +377,7 @@ We are looking for maintainers to add more parsers and to write query files for
|
|||
- [x] [solidity](https://github.com/JoranHonig/tree-sitter-solidity) (maintained by @amaanq)
|
||||
- [x] [soql](https://github.com/aheber/tree-sitter-sfapex) (maintained by @aheber)
|
||||
- [x] [sosl](https://github.com/aheber/tree-sitter-sfapex) (maintained by @aheber)
|
||||
- [x] [sourcepawn](https://github.com/nilshelmig/tree-sitter-sourcepawn) (maintained by @Sarrus1)
|
||||
- [x] [sparql](https://github.com/BonaBeavis/tree-sitter-sparql) (maintained by @BonaBeavis)
|
||||
- [x] [sql](https://github.com/derekstride/tree-sitter-sql) (maintained by @derekstride)
|
||||
- [x] [squirrel](https://github.com/amaanq/tree-sitter-squirrel) (maintained by @amaanq)
|
||||
|
|
|
|||
|
|
@ -611,6 +611,9 @@
|
|||
"sosl": {
|
||||
"revision": "857077f9e6bb04df0f769c18d32bfe036911adc8"
|
||||
},
|
||||
"sourcepawn": {
|
||||
"revision": "846ec647109a1f3dfab17c025c80ecdf6fd56581"
|
||||
},
|
||||
"sparql": {
|
||||
"revision": "05f949d3c1c15e3261473a244d3ce87777374dec"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1791,6 +1791,15 @@ list.sosl = {
|
|||
maintainers = { "@aheber" },
|
||||
}
|
||||
|
||||
list.sourcepawn = {
|
||||
install_info = {
|
||||
url = "https://github.com/nilshelmig/tree-sitter-sourcepawn",
|
||||
files = { "src/parser.c", "src/scanner.c" },
|
||||
},
|
||||
maintainers = { "@Sarrus1" },
|
||||
tier = 3,
|
||||
}
|
||||
|
||||
list.sparql = {
|
||||
install_info = {
|
||||
url = "https://github.com/BonaBeavis/tree-sitter-sparql",
|
||||
|
|
|
|||
302
queries/sourcepawn/highlights.scm
Normal file
302
queries/sourcepawn/highlights.scm
Normal file
|
|
@ -0,0 +1,302 @@
|
|||
(identifier) @variable
|
||||
|
||||
; Assume all-caps names are constants
|
||||
((identifier) @constant
|
||||
(#lua-match? @constant "^[A-Z][A-Z0-9_]+$"))
|
||||
|
||||
; Function definitions/declarations
|
||||
(function_definition
|
||||
name: (identifier) @function)
|
||||
|
||||
(function_declaration
|
||||
name: (identifier) @function)
|
||||
|
||||
(parameter_declaration
|
||||
name: (identifier) @variable.parameter)
|
||||
|
||||
; Methods / Properties
|
||||
(field_access
|
||||
field: (identifier) @variable.member)
|
||||
|
||||
; Function calls
|
||||
(call_expression
|
||||
function: (identifier) @function)
|
||||
|
||||
(call_expression
|
||||
function:
|
||||
(field_access
|
||||
field: (identifier) @function.method.call))
|
||||
|
||||
; Types
|
||||
[
|
||||
(builtin_type)
|
||||
(any_type)
|
||||
] @type.builtin
|
||||
|
||||
(type
|
||||
(identifier) @type)
|
||||
|
||||
; Variables
|
||||
(variable_declaration
|
||||
name: (identifier) @variable)
|
||||
|
||||
(old_variable_declaration
|
||||
name: (identifier) @variable)
|
||||
|
||||
[
|
||||
(system_lib_string)
|
||||
(string_literal)
|
||||
] @string
|
||||
|
||||
; Preprocessor
|
||||
[
|
||||
"#include"
|
||||
"#tryinclude"
|
||||
] @keyword.import
|
||||
|
||||
[
|
||||
(preproc_assert)
|
||||
(preproc_pragma)
|
||||
(preproc_if)
|
||||
(preproc_else)
|
||||
(preproc_elseif)
|
||||
(preproc_endinput)
|
||||
(preproc_endif)
|
||||
(preproc_error)
|
||||
(preproc_warning)
|
||||
] @keyword.directive
|
||||
|
||||
[
|
||||
"#define"
|
||||
"#undef"
|
||||
] @keyword.directive.define
|
||||
|
||||
(macro_param) @variable.parameter
|
||||
|
||||
(preproc_define
|
||||
name: (identifier) @constant)
|
||||
|
||||
(preproc_macro
|
||||
name: (identifier) @function.macro)
|
||||
|
||||
(preproc_undefine
|
||||
name: (identifier) @constant)
|
||||
|
||||
; Expressions
|
||||
(view_as) @function.builtin
|
||||
|
||||
(sizeof_expression) @function.macro
|
||||
|
||||
[
|
||||
(this)
|
||||
; https://github.com/alliedmodders/sourcemod/blob/5c0ae11a4619e9cba93478683c7737253ea93ba6/plugins/include/handles.inc#L78
|
||||
(hardcoded_symbol)
|
||||
] @variable.builtin
|
||||
|
||||
; Comments
|
||||
(comment) @comment @spell
|
||||
|
||||
; General
|
||||
(parameter_declaration
|
||||
defaultValue: (identifier) @constant)
|
||||
|
||||
[
|
||||
(fixed_dimension)
|
||||
(dimension)
|
||||
] @punctuation.bracket
|
||||
|
||||
(escape_sequence) @string.escape
|
||||
|
||||
; Constructors
|
||||
(new_expression
|
||||
class: (identifier) @type
|
||||
arguments: (call_arguments) @constructor)
|
||||
|
||||
; Methodmaps
|
||||
(methodmap
|
||||
name: (identifier) @type)
|
||||
|
||||
(methodmap
|
||||
inherits: (identifier) @type)
|
||||
|
||||
(methodmap_method_constructor
|
||||
name: (identifier) @constructor)
|
||||
|
||||
(methodmap_method
|
||||
name: (identifier) @function.method)
|
||||
|
||||
(methodmap_native
|
||||
name: (identifier) @function.method)
|
||||
|
||||
(methodmap_property
|
||||
name: (identifier) @property)
|
||||
|
||||
[
|
||||
(methodmap_property_getter)
|
||||
(methodmap_property_setter)
|
||||
] @function.method
|
||||
|
||||
; Enum structs
|
||||
(enum_struct
|
||||
name: (identifier) @type)
|
||||
|
||||
(enum_struct_field
|
||||
name: (identifier) @variable.member)
|
||||
|
||||
(enum_struct_method
|
||||
name: (identifier) @function.method)
|
||||
|
||||
; Non-type Keywords
|
||||
(variable_storage_class) @keyword.storage
|
||||
|
||||
(visibility) @type.qualifier
|
||||
|
||||
(assertion) @function.builtin
|
||||
|
||||
(function_declaration_kind) @keyword.function
|
||||
|
||||
[
|
||||
"new"
|
||||
"delete"
|
||||
] @keyword.operator
|
||||
|
||||
[
|
||||
"."
|
||||
","
|
||||
] @punctuation.delimiter
|
||||
|
||||
; Operators
|
||||
[
|
||||
"+"
|
||||
"-"
|
||||
"*"
|
||||
"/"
|
||||
"%"
|
||||
"++"
|
||||
"--"
|
||||
"="
|
||||
"+="
|
||||
"-="
|
||||
"*="
|
||||
"/="
|
||||
"=="
|
||||
"!="
|
||||
"<"
|
||||
">"
|
||||
">="
|
||||
"<="
|
||||
"!"
|
||||
"&&"
|
||||
"||"
|
||||
"&"
|
||||
"|"
|
||||
"~"
|
||||
"^"
|
||||
"<<"
|
||||
">>"
|
||||
">>>"
|
||||
"|="
|
||||
"&="
|
||||
"^="
|
||||
"~="
|
||||
"<<="
|
||||
">>="
|
||||
(ignore_argument)
|
||||
(scope_access)
|
||||
(rest_operator)
|
||||
] @operator
|
||||
|
||||
; public Plugin myinfo
|
||||
(struct_declaration
|
||||
name: (identifier) @variable.builtin)
|
||||
|
||||
; Typedef/Typedef
|
||||
(typedef
|
||||
name: (identifier) @type)
|
||||
|
||||
(functag
|
||||
name: (identifier) @type)
|
||||
|
||||
(funcenum
|
||||
name: (identifier) @type)
|
||||
|
||||
(typeset
|
||||
name: (identifier) @type)
|
||||
|
||||
(typedef_expression) @keyword.function ; function void(int x)
|
||||
|
||||
; Enums
|
||||
(enum
|
||||
name: (identifier) @type)
|
||||
|
||||
(enum_entry
|
||||
name: (identifier) @constant)
|
||||
|
||||
(enum_entry
|
||||
value: (_) @constant)
|
||||
|
||||
; Literals
|
||||
(int_literal) @number
|
||||
|
||||
(char_literal) @character
|
||||
|
||||
(float_literal) @number.float
|
||||
|
||||
(string_literal) @string
|
||||
|
||||
(array_literal) @punctuation.bracket
|
||||
|
||||
(concatenated_string) @punctuation.delimiter
|
||||
|
||||
(bool_literal) @boolean
|
||||
|
||||
(null) @constant.builtin
|
||||
|
||||
((identifier) @constant.builtin
|
||||
(#eq? @constant.builtin "INVALID_HANDLE"))
|
||||
|
||||
; Keywords
|
||||
"return" @keyword.return
|
||||
|
||||
[
|
||||
"if"
|
||||
"else"
|
||||
"case"
|
||||
"default"
|
||||
"switch"
|
||||
] @keyword.conditional
|
||||
|
||||
[
|
||||
"do"
|
||||
"while"
|
||||
"for"
|
||||
"continue"
|
||||
"break"
|
||||
] @keyword.repeat
|
||||
|
||||
[
|
||||
"__nullable__"
|
||||
"defined"
|
||||
"delete"
|
||||
"enum"
|
||||
"funcenum"
|
||||
"functag"
|
||||
"get"
|
||||
"methodmap"
|
||||
"new"
|
||||
"property"
|
||||
"public"
|
||||
"set"
|
||||
"struct"
|
||||
"typedef"
|
||||
"typeset"
|
||||
"void"
|
||||
] @keyword
|
||||
|
||||
[
|
||||
"const"
|
||||
"native"
|
||||
"static"
|
||||
"stock"
|
||||
"forward"
|
||||
] @type.qualifier
|
||||
3
queries/sourcepawn/injections.scm
Normal file
3
queries/sourcepawn/injections.scm
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
; Parse JSDoc annotations in comments
|
||||
((comment) @injection.content
|
||||
(#set! injection.language "jsdoc"))
|
||||
19
queries/sourcepawn/locals.scm
Normal file
19
queries/sourcepawn/locals.scm
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
[
|
||||
(function_definition)
|
||||
(alias_declaration)
|
||||
(enum_struct_method)
|
||||
(methodmap_method)
|
||||
(methodmap_method_constructor)
|
||||
(methodmap_method_destructor)
|
||||
(methodmap_property_method)
|
||||
] @local.scope
|
||||
|
||||
; Definitions
|
||||
(variable_declaration
|
||||
name: (identifier) @local.definition)
|
||||
|
||||
(old_variable_declaration
|
||||
name: (identifier) @local.definition)
|
||||
|
||||
; References
|
||||
(identifier) @local.reference
|
||||
Loading…
Add table
Add a link
Reference in a new issue