mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-01 19:17:02 -04:00
feat(t32): initial support
This commit is contained in:
parent
51df4212e7
commit
2d48cbc831
10 changed files with 371 additions and 0 deletions
|
|
@ -365,6 +365,9 @@
|
|||
"sxhkdrc": {
|
||||
"revision": "440d5f913d9465c9c776a1bd92334d32febcf065"
|
||||
},
|
||||
"t32": {
|
||||
"revision": "20fe21a5a4eb79e1788f6424dcc6a1f2bd023ffa"
|
||||
},
|
||||
"teal": {
|
||||
"revision": "1ae8c68e90523b26b93af56feb7868fe4214e2b2"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1206,6 +1206,19 @@ list.tiger = {
|
|||
maintainers = { "@ambroisie" },
|
||||
}
|
||||
|
||||
list.t32 = {
|
||||
install_info = {
|
||||
url = "https://codeberg.org/xasc/tree-sitter-t32",
|
||||
files = { "src/parser.c", "src/scanner.c" },
|
||||
branch = "main",
|
||||
revision = "675cd7de4eb80f2faa1e6d3bc9ee195fa9ef9790",
|
||||
generate_requires_npm = false,
|
||||
requires_generate_from_grammar = false,
|
||||
},
|
||||
filetype = "t32",
|
||||
maintainers = { "@xasc" },
|
||||
}
|
||||
|
||||
list.sxhkdrc = {
|
||||
install_info = {
|
||||
url = "https://github.com/RaafatTurki/tree-sitter-sxhkdrc",
|
||||
|
|
|
|||
1
queries/t32/folds.scm
Normal file
1
queries/t32/folds.scm
Normal file
|
|
@ -0,0 +1 @@
|
|||
(block) @fold
|
||||
141
queries/t32/highlights.scm
Normal file
141
queries/t32/highlights.scm
Normal file
|
|
@ -0,0 +1,141 @@
|
|||
[
|
||||
"="
|
||||
"^^"
|
||||
"||"
|
||||
"&&"
|
||||
"+"
|
||||
"-"
|
||||
"*"
|
||||
"/"
|
||||
"%"
|
||||
"|"
|
||||
"^"
|
||||
"=="
|
||||
"!="
|
||||
">"
|
||||
">="
|
||||
"<="
|
||||
"<"
|
||||
"<<"
|
||||
">>"
|
||||
".."
|
||||
"--"
|
||||
"++"
|
||||
"+"
|
||||
"-"
|
||||
"~"
|
||||
"!"
|
||||
"&"
|
||||
"->"
|
||||
"*"
|
||||
] @operator
|
||||
|
||||
[
|
||||
"("
|
||||
")"
|
||||
"{"
|
||||
"}"
|
||||
"["
|
||||
"]"
|
||||
] @punctuation.bracket
|
||||
|
||||
[
|
||||
","
|
||||
"."
|
||||
";"
|
||||
] @punctuation.delimiter
|
||||
|
||||
[
|
||||
(access_class)
|
||||
(address)
|
||||
(bitmask)
|
||||
(file_handle)
|
||||
(frequency)
|
||||
(integer)
|
||||
(percentage)
|
||||
(time)
|
||||
] @number
|
||||
|
||||
(float) @float
|
||||
|
||||
(string) @string
|
||||
|
||||
(path) @string.special
|
||||
|
||||
(symbol) @symbol
|
||||
|
||||
(character) @character
|
||||
|
||||
; Commands
|
||||
(command_expression
|
||||
command: (identifier) @keyword)
|
||||
(macro_definition
|
||||
command: (identifier) @keyword)
|
||||
|
||||
; Returns
|
||||
(
|
||||
(command_expression
|
||||
command: (identifier) @keyword.return)
|
||||
(#match? @keyword.return "^[eE][nN][dD]([dD][oO])?$")
|
||||
)
|
||||
(
|
||||
(command_expression
|
||||
command: (identifier) @keyword.return)
|
||||
(#match? @keyword.return "^[rR][eE][tT][uU][rR][nN]$")
|
||||
)
|
||||
|
||||
; Subroutine calls
|
||||
(subroutine_call_expression
|
||||
command: (identifier) @keyword
|
||||
subroutine: (identifier) @function.call)
|
||||
|
||||
; Variables, constants and labels
|
||||
(macro) @variable.builtin
|
||||
(internal_c_variable) @variable.builtin
|
||||
|
||||
(argument_list
|
||||
(identifier) @constant)
|
||||
(
|
||||
(argument_list (identifier) @constant.builtin)
|
||||
(#match? @constant.builtin "^[%/][a-zA-Z][a-zA-Z0-9.]*$")
|
||||
)
|
||||
|
||||
(
|
||||
(command_expression
|
||||
command: (identifier) @keyword
|
||||
arguments: (argument_list . (identifier) @label))
|
||||
(#match? @keyword "^[gG][oO][tT][oO]$")
|
||||
)
|
||||
(labeled_expression
|
||||
label: (identifier) @label)
|
||||
|
||||
; Subroutine blocks
|
||||
(subroutine_block
|
||||
command: (identifier) @keyword
|
||||
subroutine: (identifier) @function)
|
||||
|
||||
(labeled_expression
|
||||
label: (identifier) @function
|
||||
(block))
|
||||
|
||||
; Parameter declarations
|
||||
(parameter_declaration
|
||||
command: (identifier) @keyword
|
||||
macro: (macro) @parameter)
|
||||
|
||||
; Control flow
|
||||
(if_block
|
||||
command: (identifier) @conditional)
|
||||
(else_block
|
||||
command: (identifier) @conditional)
|
||||
|
||||
(while_block
|
||||
command: (identifier) @repeat)
|
||||
(repeat_block
|
||||
command: (identifier) @repeat)
|
||||
|
||||
(call_expression
|
||||
function: (identifier) @function.builtin)
|
||||
|
||||
(type_identifier) @type
|
||||
(comment) @comment @spell
|
||||
1
queries/t32/injections.scm
Normal file
1
queries/t32/injections.scm
Normal file
|
|
@ -0,0 +1 @@
|
|||
(comment) @comment
|
||||
35
queries/t32/locals.scm
Normal file
35
queries/t32/locals.scm
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
(block) @scope
|
||||
|
||||
; Parameter definitions
|
||||
(parameter_declaration
|
||||
command: (identifier)
|
||||
macro: (macro) @definition.parameter)
|
||||
|
||||
; Variable definitions
|
||||
(macro_definition
|
||||
command: (identifier)
|
||||
macro: (macro) @definition.var)
|
||||
|
||||
(command_expression
|
||||
command: (identifier)
|
||||
arguments: (argument_list
|
||||
variable: (identifier) @definition.var))
|
||||
|
||||
; Function definitions
|
||||
(subroutine_block
|
||||
command: (identifier)
|
||||
subroutine: (identifier) @definition.function)
|
||||
|
||||
(labeled_expression
|
||||
label: (identifier) @definition.function
|
||||
(block))
|
||||
|
||||
; References
|
||||
(
|
||||
(subroutine_call_expression
|
||||
command: (identifier)
|
||||
subroutine: (identifier) @reference)
|
||||
(set! reference.kind "function")
|
||||
)
|
||||
|
||||
(macro) @reference
|
||||
10
tests/query/highlights/t32/comments.cmm
Normal file
10
tests/query/highlights/t32/comments.cmm
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
// This is a comment
|
||||
; <- comment
|
||||
|
||||
; Another comment
|
||||
; <- comment
|
||||
|
||||
ECHO &a // This is a trailing comment
|
||||
; ^ comment
|
||||
|
||||
// vim: set ft=t32:
|
||||
103
tests/query/highlights/t32/keywords.cmm
Normal file
103
tests/query/highlights/t32/keywords.cmm
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
PRIVATE &password
|
||||
; <- keyword
|
||||
; ^ variable.builtin
|
||||
ENTRY &password
|
||||
; <- keyword
|
||||
; ^ parameter
|
||||
|
||||
IF "&password"==""
|
||||
; <- conditional
|
||||
; ^ string
|
||||
; ^ variable.builtin
|
||||
; ^ operator
|
||||
(
|
||||
ECHO "Failed to provide password."
|
||||
ENDDO
|
||||
; ^ keyword.return
|
||||
)
|
||||
ELSE
|
||||
; <- conditional
|
||||
(
|
||||
PRIVATE &pass
|
||||
|
||||
&pass=FALSE()
|
||||
; ^ function.builtin
|
||||
WHILE !&pass
|
||||
; ^ operator
|
||||
(
|
||||
GOSUB verify_password "&password"
|
||||
; ^ function.call
|
||||
RETURNVALUES &pass
|
||||
; ^ parameter
|
||||
WAIT 10.ms
|
||||
; ^ number
|
||||
)
|
||||
|
||||
IF !&pass
|
||||
GOTO fail
|
||||
; ^ label
|
||||
ELSE
|
||||
(
|
||||
GOSUB start_debug
|
||||
; ^ function.call
|
||||
)
|
||||
)
|
||||
|
||||
LOCAL &num
|
||||
; ^ variable.builtin
|
||||
|
||||
&num = 2.
|
||||
; ^ number
|
||||
|
||||
RePeaT &num PRINT "Password: &password"
|
||||
; ^ variable.builtin
|
||||
; ^ variable.builtin
|
||||
|
||||
WinCLEAR
|
||||
FramePOS ,,,,Maximized
|
||||
; ^ punctuation.delimiter
|
||||
; ^ constant
|
||||
WinPOS 0% 50% 100% 35%
|
||||
; ^ number
|
||||
COVerage.ListFunc
|
||||
|
||||
ENDDO
|
||||
|
||||
|
||||
fail:
|
||||
; <- label
|
||||
PRINT %ERROR "Password verification failed."
|
||||
END
|
||||
; ^ keyword.return
|
||||
|
||||
|
||||
verify_password:
|
||||
; <- function
|
||||
(
|
||||
PARAMETERS &password
|
||||
; ^ parameter
|
||||
|
||||
SYStem.Option.KEYCODE "&password"
|
||||
SYStem.JtagClock 1kHz
|
||||
; ^ number
|
||||
SYStem.Mode.Attach
|
||||
|
||||
Data.Set EAXI:0x34000000 %Long 0x34000100 0x34000021 /verify
|
||||
; ^ number
|
||||
; ^ constant.builtin
|
||||
; ^ constant
|
||||
|
||||
RETURN TRUE()
|
||||
; ^ keyword.return
|
||||
)
|
||||
|
||||
|
||||
SUBROUTINE start_debug
|
||||
; ^ function
|
||||
(
|
||||
Go main
|
||||
RETURN
|
||||
; ^ keyword.return
|
||||
)
|
||||
|
||||
// vim: set ft=t32:
|
||||
37
tests/query/highlights/t32/literals.cmm
Normal file
37
tests/query/highlights/t32/literals.cmm
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
WinPOS ,,1000.,,,,myWatchWindow
|
||||
; ^ number
|
||||
|
||||
PRinTer.OPEN "~~~/varwatch.txt" ASCIIE
|
||||
; ^ string
|
||||
|
||||
sYmbol.NEW _InitialSP 0x34000100
|
||||
; ^ number
|
||||
|
||||
DO ~~~~/test.cmm
|
||||
; ^ string.special
|
||||
|
||||
WAIT 1.ns
|
||||
; ^ number
|
||||
|
||||
SYStem.JtagClock 100.GHZ
|
||||
; ^ number
|
||||
|
||||
DATA.SET P:&HEAD+0x4 %LONG DATA.LONG(EA:&HEAD+0x4)&0xFFFFFF
|
||||
; ^ number
|
||||
|
||||
List `main`
|
||||
; ^ symbol
|
||||
|
||||
&range = 'a'--'z'||'0'--'9'
|
||||
; ^ character
|
||||
; ^ operator
|
||||
; ^ character
|
||||
|
||||
Data.Set 0xffff800000 0y0011xx01xx&&a
|
||||
; ^ number
|
||||
; ^ operator
|
||||
|
||||
WinPOS 0% 85% 100% 15%
|
||||
; ^ number
|
||||
|
||||
// vim: set ft=t32:
|
||||
27
tests/query/highlights/t32/var.cmm
Normal file
27
tests/query/highlights/t32/var.cmm
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
Var.NEWGLOBAL char[4][32] \myarr
|
||||
; <- keyword
|
||||
; ^ type
|
||||
; ^ variable.builtin
|
||||
LOCAL &i &data
|
||||
|
||||
&data="zero|one|two|three"
|
||||
|
||||
&i=0.
|
||||
WHILE &i<4
|
||||
(
|
||||
PRIVATE &val
|
||||
&val=STRing.SPLIT("&data","|",&i)
|
||||
Var.Assign \myarr[&i]="&val"
|
||||
; ^ variable.builtin
|
||||
&i=&i+1.
|
||||
)
|
||||
|
||||
Var.NEWLOCAL \x
|
||||
; <- keyword
|
||||
; ^ variable.builtin
|
||||
Var.set \x=func3(5,3)
|
||||
; ^ variable.builtin
|
||||
PRINT Var.VALUE(\x)
|
||||
; ^ variable.builtin
|
||||
|
||||
// vim: set ft=t32:
|
||||
Loading…
Add table
Add a link
Reference in a new issue