diff options
| author | xasc <xasc@xasc.noreply.github.com> | 2022-11-06 17:44:50 +0100 |
|---|---|---|
| committer | Stephan Seitz <stephan.seitz@fau.de> | 2022-12-21 23:57:06 +0100 |
| commit | 2d48cbc831dcfc4ccce4380467d82e908effd0ee (patch) | |
| tree | 54c7903955828537858017a87928679560c39a2d | |
| parent | Update parsers: c_sharp (diff) | |
| download | nvim-treesitter-2d48cbc831dcfc4ccce4380467d82e908effd0ee.tar nvim-treesitter-2d48cbc831dcfc4ccce4380467d82e908effd0ee.tar.gz nvim-treesitter-2d48cbc831dcfc4ccce4380467d82e908effd0ee.tar.bz2 nvim-treesitter-2d48cbc831dcfc4ccce4380467d82e908effd0ee.tar.lz nvim-treesitter-2d48cbc831dcfc4ccce4380467d82e908effd0ee.tar.xz nvim-treesitter-2d48cbc831dcfc4ccce4380467d82e908effd0ee.tar.zst nvim-treesitter-2d48cbc831dcfc4ccce4380467d82e908effd0ee.zip | |
feat(t32): initial support
| -rw-r--r-- | lockfile.json | 3 | ||||
| -rw-r--r-- | lua/nvim-treesitter/parsers.lua | 13 | ||||
| -rw-r--r-- | queries/t32/folds.scm | 1 | ||||
| -rw-r--r-- | queries/t32/highlights.scm | 141 | ||||
| -rw-r--r-- | queries/t32/injections.scm | 1 | ||||
| -rw-r--r-- | queries/t32/locals.scm | 35 | ||||
| -rw-r--r-- | tests/query/highlights/t32/comments.cmm | 10 | ||||
| -rw-r--r-- | tests/query/highlights/t32/keywords.cmm | 103 | ||||
| -rw-r--r-- | tests/query/highlights/t32/literals.cmm | 37 | ||||
| -rw-r--r-- | tests/query/highlights/t32/var.cmm | 27 |
10 files changed, 371 insertions, 0 deletions
diff --git a/lockfile.json b/lockfile.json index 5320ab7ff..18f9e4b57 100644 --- a/lockfile.json +++ b/lockfile.json @@ -365,6 +365,9 @@ "sxhkdrc": { "revision": "440d5f913d9465c9c776a1bd92334d32febcf065" }, + "t32": { + "revision": "20fe21a5a4eb79e1788f6424dcc6a1f2bd023ffa" + }, "teal": { "revision": "1ae8c68e90523b26b93af56feb7868fe4214e2b2" }, diff --git a/lua/nvim-treesitter/parsers.lua b/lua/nvim-treesitter/parsers.lua index 0246cde81..d0ef4a97a 100644 --- a/lua/nvim-treesitter/parsers.lua +++ b/lua/nvim-treesitter/parsers.lua @@ -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", diff --git a/queries/t32/folds.scm b/queries/t32/folds.scm new file mode 100644 index 000000000..fd7d23999 --- /dev/null +++ b/queries/t32/folds.scm @@ -0,0 +1 @@ +(block) @fold diff --git a/queries/t32/highlights.scm b/queries/t32/highlights.scm new file mode 100644 index 000000000..9fd1816ba --- /dev/null +++ b/queries/t32/highlights.scm @@ -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 diff --git a/queries/t32/injections.scm b/queries/t32/injections.scm new file mode 100644 index 000000000..4bb7d675d --- /dev/null +++ b/queries/t32/injections.scm @@ -0,0 +1 @@ +(comment) @comment diff --git a/queries/t32/locals.scm b/queries/t32/locals.scm new file mode 100644 index 000000000..dd03b4246 --- /dev/null +++ b/queries/t32/locals.scm @@ -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 diff --git a/tests/query/highlights/t32/comments.cmm b/tests/query/highlights/t32/comments.cmm new file mode 100644 index 000000000..0bab130f6 --- /dev/null +++ b/tests/query/highlights/t32/comments.cmm @@ -0,0 +1,10 @@ +// This is a comment +; <- comment + +; Another comment +; <- comment + +ECHO &a // This is a trailing comment +; ^ comment + +// vim: set ft=t32: diff --git a/tests/query/highlights/t32/keywords.cmm b/tests/query/highlights/t32/keywords.cmm new file mode 100644 index 000000000..e9eb0e37f --- /dev/null +++ b/tests/query/highlights/t32/keywords.cmm @@ -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: diff --git a/tests/query/highlights/t32/literals.cmm b/tests/query/highlights/t32/literals.cmm new file mode 100644 index 000000000..f63348490 --- /dev/null +++ b/tests/query/highlights/t32/literals.cmm @@ -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: diff --git a/tests/query/highlights/t32/var.cmm b/tests/query/highlights/t32/var.cmm new file mode 100644 index 000000000..a2d6f9b2a --- /dev/null +++ b/tests/query/highlights/t32/var.cmm @@ -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: |
