feat(t32): initial support

This commit is contained in:
xasc 2022-11-06 17:44:50 +01:00 committed by Stephan Seitz
parent 51df4212e7
commit 2d48cbc831
10 changed files with 371 additions and 0 deletions

View file

@ -365,6 +365,9 @@
"sxhkdrc": {
"revision": "440d5f913d9465c9c776a1bd92334d32febcf065"
},
"t32": {
"revision": "20fe21a5a4eb79e1788f6424dcc6a1f2bd023ffa"
},
"teal": {
"revision": "1ae8c68e90523b26b93af56feb7868fe4214e2b2"
},

View file

@ -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
View file

@ -0,0 +1 @@
(block) @fold

141
queries/t32/highlights.scm Normal file
View 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

View file

@ -0,0 +1 @@
(comment) @comment

35
queries/t32/locals.scm Normal file
View 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

View 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:

View 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:

View 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:

View 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: