193 lines
3.2 KiB
Scheme
193 lines
3.2 KiB
Scheme
; Keywords
|
|
"function" @keyword
|
|
"if" @keyword.conditional
|
|
"else" @keyword.conditional
|
|
"while" @keyword.repeat
|
|
"for" @keyword.repeat
|
|
"return" @keyword.return
|
|
"break" @keyword
|
|
"continue" @keyword
|
|
"print" @keyword
|
|
"const" @keyword
|
|
"mut" @keyword
|
|
|
|
; Type keywords
|
|
"void" @type.builtin
|
|
"bool" @type.builtin
|
|
"char" @type.builtin
|
|
"string" @type.builtin
|
|
"int" @type.builtin
|
|
"uint" @type.builtin
|
|
"I8" @type.builtin
|
|
"int8_t" @type.builtin
|
|
"I16" @type.builtin
|
|
"int16_t" @type.builtin
|
|
"I32" @type.builtin
|
|
"int32_t" @type.builtin
|
|
"I64" @type.builtin
|
|
"int64_t" @type.builtin
|
|
"U8" @type.builtin
|
|
"uint8_t" @type.builtin
|
|
"U16" @type.builtin
|
|
"uint16_t" @type.builtin
|
|
"U32" @type.builtin
|
|
"uint32_t" @type.builtin
|
|
"U64" @type.builtin
|
|
"uint64_t" @type.builtin
|
|
|
|
; Predefined constants
|
|
"NULL" @constant.builtin
|
|
"true" @boolean
|
|
"false" @boolean
|
|
|
|
; Identifiers
|
|
(identifier) @variable
|
|
|
|
; Function names
|
|
(function_definition
|
|
name: (identifier) @function)
|
|
|
|
; Type specifiers
|
|
(type_specifier) @type
|
|
(int_type) @type.builtin
|
|
(uint_type) @type.builtin
|
|
(array_specifier) @type
|
|
|
|
; Type qualifiers
|
|
(type_qualifier) @type.qualifier
|
|
|
|
; Parameters
|
|
(parameter_declaration
|
|
name: (identifier) @parameter)
|
|
|
|
; Literals
|
|
(integer_literal) @number
|
|
(signed_integer_literal) @number
|
|
(unsigned_integer_literal) @number
|
|
(string_literal) @string
|
|
(char_literal) @string.special
|
|
|
|
; Operators
|
|
[
|
|
"+"
|
|
"-"
|
|
"*"
|
|
"/"
|
|
"="
|
|
"+="
|
|
"-="
|
|
"*="
|
|
"/="
|
|
"=="
|
|
"!="
|
|
"<"
|
|
">"
|
|
"&&"
|
|
"||"
|
|
"!"
|
|
"++"
|
|
"--"
|
|
] @operator
|
|
|
|
(leq_operator) @operator
|
|
(geq_operator) @operator
|
|
|
|
; Punctuation
|
|
[
|
|
"("
|
|
")"
|
|
"["
|
|
"]"
|
|
"{"
|
|
"}"
|
|
","
|
|
";"
|
|
"->"
|
|
] @punctuation.delimiter
|
|
|
|
; Comments
|
|
(comment) @comment
|
|
|
|
; Function calls
|
|
(postfix_expression
|
|
(base_expression (identifier) @function.call)
|
|
"(" (argument_expression_list)? ")")
|
|
|
|
; Array access
|
|
(postfix_expression
|
|
(base_expression (identifier) @variable)
|
|
"[" (expression) @variable "]")
|
|
|
|
; Variable declarations
|
|
(declaration
|
|
declarator: (init_declarator
|
|
name: (identifier) @variable))
|
|
|
|
; Variable assignments
|
|
(assignment_expression
|
|
(unary_expression
|
|
(postfix_expression
|
|
(base_expression (identifier) @variable)))
|
|
_ @operator)
|
|
|
|
; Return statements
|
|
(jump_statement
|
|
"return" @keyword.return
|
|
(expression)? @variable)
|
|
|
|
; Print statements
|
|
(print_statement
|
|
"print" @keyword
|
|
(expression) @variable)
|
|
|
|
; If statements
|
|
(selection_statement
|
|
"if" @keyword.conditional
|
|
(expression) @variable
|
|
(statement_block) @block
|
|
(statement_block)? @block)
|
|
|
|
; While loops
|
|
(iteration_statement
|
|
"while" @keyword.repeat
|
|
(expression) @variable
|
|
(secondary_block) @block)
|
|
|
|
; For loops
|
|
(iteration_statement
|
|
"for" @keyword.repeat
|
|
(_)? @variable
|
|
(expression)? @variable
|
|
(expression)? @variable
|
|
(secondary_block) @block)
|
|
|
|
; Function signatures
|
|
(function_signature
|
|
(parameter_list)? @parameter
|
|
(return_list)? @type)
|
|
|
|
; Cast expressions
|
|
(cast_expression
|
|
(type_specifier_qualifier) @type
|
|
(cast_expression) @variable)
|
|
|
|
; Binary expressions
|
|
[
|
|
(additive_expression)
|
|
(multiplicative_expression)
|
|
(relational_expression)
|
|
(equality_expression)
|
|
(logical_expression)
|
|
] @operator
|
|
|
|
; Unary expressions
|
|
(unary_expression
|
|
[
|
|
"++"
|
|
"--"
|
|
"+"
|
|
"-"
|
|
"!"
|
|
] @operator
|
|
(unary_expression) @variable)
|