aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md1
-rw-r--r--lockfile.json3
-rw-r--r--lua/nvim-treesitter/parsers.lua8
-rw-r--r--queries/nasm/highlights.scm145
-rw-r--r--queries/nasm/injections.scm2
5 files changed, 159 insertions, 0 deletions
diff --git a/README.md b/README.md
index 15b97fb34..8e32deacf 100644
--- a/README.md
+++ b/README.md
@@ -295,6 +295,7 @@ We are looking for maintainers to add more parsers and to write query files for
- [ ] [mermaid](https://github.com/monaqa/tree-sitter-mermaid) (experimental)
- [x] [meson](https://github.com/Decodetalkers/tree-sitter-meson) (maintained by @Decodetalkers)
- [x] [mlir](https://github.com/artagnon/tree-sitter-mlir) (experimental, maintained by @artagnon)
+- [x] [nasm](https://github.com/naclsn/tree-sitter-nasm) (maintained by @ObserverOfTime)
- [ ] [nickel](https://github.com/nickel-lang/tree-sitter-nickel)
- [x] [ninja](https://github.com/alemuller/tree-sitter-ninja) (maintained by @alemuller)
- [x] [nix](https://github.com/cstrahan/tree-sitter-nix) (maintained by @leo60228)
diff --git a/lockfile.json b/lockfile.json
index 137f0e436..809211bf2 100644
--- a/lockfile.json
+++ b/lockfile.json
@@ -365,6 +365,9 @@
"mlir": {
"revision": "e2053f7c8856d91bc36c87604f697784845cee69"
},
+ "nasm": {
+ "revision": "3bc691d2cfba44bea339a775ad496c8bc552c60d"
+ },
"nickel": {
"revision": "b759233581fd8bae239e905c67a9ba453205da78"
},
diff --git a/lua/nvim-treesitter/parsers.lua b/lua/nvim-treesitter/parsers.lua
index d8dfb7124..13f885eac 100644
--- a/lua/nvim-treesitter/parsers.lua
+++ b/lua/nvim-treesitter/parsers.lua
@@ -1105,6 +1105,14 @@ list.mlir = {
maintainers = { "@artagnon" },
}
+list.nasm = {
+ install_info = {
+ url = "https://github.com/naclsn/tree-sitter-nasm",
+ files = { "src/parser.c" },
+ },
+ maintainers = { "@ObserverOfTime" },
+}
+
list.nickel = {
install_info = {
url = "https://github.com/nickel-lang/tree-sitter-nickel",
diff --git a/queries/nasm/highlights.scm b/queries/nasm/highlights.scm
new file mode 100644
index 000000000..1556f9ca5
--- /dev/null
+++ b/queries/nasm/highlights.scm
@@ -0,0 +1,145 @@
+;; adapted from https://github.com/naclsn/tree-sitter-nasm/blob/main/queries/highlights.scm
+
+(word) @variable
+((word) @constant
+ (#lua-match? @constant "^[A-Z_][?A-Z_0-9]+$"))
+((word) @constant.builtin
+ (#lua-match? @constant.builtin "^__%?[A-Z_a-z0-9]+%?__$"))
+
+[
+ (line_here_token)
+ (section_here_token)
+] @variable.builtin
+
+(label (word) @label)
+(assembl_directive_symbols (word) @label)
+(assembl_directive_sections (word) @label)
+
+(unary_expression
+ operator: _ @operator)
+(binary_expression
+ operator: _ @operator)
+
+"?" @constant.builtin
+
+(conditional_expression
+ [ "?" ":" ] @conditional.ternary)
+
+[
+ ":"
+ ","
+] @punctuation.delimiter
+
+[
+ "(" ")"
+ "[" "]"
+ "{" "}"
+] @punctuation.bracket
+
+(instruction_prefix) @keyword
+(actual_instruction
+ instruction: (word) @function.builtin)
+
+(call_syntax_expression
+ base: (word) @function.call)
+
+(size_hint) @type
+(struc_declaration
+ name: (word) @type)
+(struc_instance
+ name: (word) @type)
+
+(effective_address
+ hint: _ @type)
+(effective_address
+ segment: _ @constant.builtin)
+
+(register) @variable.builtin
+
+(string_literal) @string
+
+(float_literal) @float
+
+[
+ (packed_bcd_literal)
+ (number_literal)
+] @number
+
+[
+ (preproc_alias)
+ (preproc_multiline_macro)
+ (preproc_multiline_unmacro)
+ (preproc_rotate)
+ (preproc_pathsearch)
+ (preproc_depend)
+ (preproc_use)
+ (preproc_push)
+ (preproc_pop)
+ (preproc_repl)
+ (preproc_arg)
+ (preproc_stacksize)
+ (preproc_local)
+ (preproc_reporting)
+ (preproc_pragma)
+ (preproc_line)
+ (preproc_clear)
+] @preproc
+
+(preproc_include) @include
+
+(preproc_rep_loop) @repeat
+
+(preproc_if) @conditional
+
+[
+ (preproc_def)
+ (preproc_undef)
+] @define
+
+(preproc_function_def) @keyword.function
+
+[
+ (preproc_expression)
+ (preproc_arg)
+] @constant.macro
+
+(preproc_multiline_macro
+ name: (word) @function)
+
+[
+ (pseudo_instruction_dx)
+ (pseudo_instruction_resx)
+ (pseudo_instruction_incbin_command)
+ (pseudo_instruction_equ_command)
+ (pseudo_instruction_times_prefix)
+ (pseudo_instruction_alignx_macro)
+] @function
+
+[
+ (assembl_directive_target)
+ (assembl_directive_defaults)
+ (assembl_directive_sections)
+ (assembl_directive_absolute)
+ (assembl_directive_symbols)
+ (assembl_directive_common)
+ (assembl_directive_symbolfixes)
+ (assembl_directive_cpu)
+ (assembl_directive_floathandling)
+ (assembl_directive_org)
+ (assembl_directive_sectalign)
+ (assembl_directive_primitive_target)
+ (assembl_directive_primitive_defaults)
+ (assembl_directive_primitive_sections)
+ (assembl_directive_primitive_absolute)
+ (assembl_directive_primitive_symbols)
+ (assembl_directive_primitive_common)
+ (assembl_directive_primitive_symbolfixes)
+ (assembl_directive_primitive_cpu)
+ (assembl_directive_primitive_floathandling)
+ (assembl_directive_primitive_org)
+ (assembl_directive_primitive_sectalign)
+ (assembl_directive_primitive_warning)
+ (assembl_directive_primitive_map)
+] @keyword
+
+(comment) @comment @spell
diff --git a/queries/nasm/injections.scm b/queries/nasm/injections.scm
new file mode 100644
index 000000000..2f0e58eb6
--- /dev/null
+++ b/queries/nasm/injections.scm
@@ -0,0 +1,2 @@
+((comment) @injection.content
+ (#set! injection.language "comment"))