aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortraxys <quentin+dev@familleboyer.net>2022-02-13 17:18:41 +0100
committerGitHub <noreply@github.com>2022-02-13 16:18:41 +0000
commitca64d8b028de11489bd9aebe1019af372e3f2879 (patch)
tree463370c4313fe1a0ae020206bfeeaf223e3584e3
parenttests: add failing test for incomplete arguments (diff)
downloadnvim-treesitter-ca64d8b028de11489bd9aebe1019af372e3f2879.tar
nvim-treesitter-ca64d8b028de11489bd9aebe1019af372e3f2879.tar.gz
nvim-treesitter-ca64d8b028de11489bd9aebe1019af372e3f2879.tar.bz2
nvim-treesitter-ca64d8b028de11489bd9aebe1019af372e3f2879.tar.lz
nvim-treesitter-ca64d8b028de11489bd9aebe1019af372e3f2879.tar.xz
nvim-treesitter-ca64d8b028de11489bd9aebe1019af372e3f2879.tar.zst
nvim-treesitter-ca64d8b028de11489bd9aebe1019af372e3f2879.zip
feat: add lalrpop parser (#2524)
LALRPOP is a parser generator for Rust. This only parses the LALRPOP side of the generator, not the nearly-rust code of the actions.
-rw-r--r--README.md1
-rw-r--r--lua/nvim-treesitter/parsers.lua9
-rw-r--r--queries/lalrpop/highlights.scm57
-rw-r--r--queries/lalrpop/locals.scm5
4 files changed, 72 insertions, 0 deletions
diff --git a/README.md b/README.md
index 7c2af86c1..8bb3f0b53 100644
--- a/README.md
+++ b/README.md
@@ -205,6 +205,7 @@ We are looking for maintainers to add more parsers and to write query files for
- [x] [JSON with comments](https://gitlab.com/WhyNotHugo/tree-sitter-jsonc.git) (maintained by @WhyNotHugo)
- [x] [julia](https://github.com/tree-sitter/tree-sitter-julia) (maintained by @mroavi, @theHamsta)
- [x] [kotlin](https://github.com/fwcd/tree-sitter-kotlin) (maintained by @SalBakraa)
+- [x] [lalrpop](https://github.com/traxys/tree-sitter-lalrpop) (maintained by @traxys)
- [x] [latex](https://github.com/latex-lsp/tree-sitter-latex) (maintained by @theHamsta, @clason)
- [x] [ledger](https://github.com/cbarrete/tree-sitter-ledger) (maintained by @cbarrete)
- [x] [llvm](https://github.com/benwilliamgraham/tree-sitter-llvm) (maintained by @benwilliamgraham)
diff --git a/lua/nvim-treesitter/parsers.lua b/lua/nvim-treesitter/parsers.lua
index 74c7c86e6..6bd316d65 100644
--- a/lua/nvim-treesitter/parsers.lua
+++ b/lua/nvim-treesitter/parsers.lua
@@ -920,6 +920,15 @@ list.vala = {
maintainers = { "@matbme" },
}
+list.lalrpop = {
+ install_info = {
+ url = "https://github.com/traxys/tree-sitter-lalrpop",
+ branch = "master",
+ files = { "src/parser.c", "src/scanner.c" },
+ },
+ maintainers = { "@traxys" },
+}
+
local M = {
list = list,
filetype_to_parsername = filetype_to_parsername,
diff --git a/queries/lalrpop/highlights.scm b/queries/lalrpop/highlights.scm
new file mode 100644
index 000000000..34040dd5f
--- /dev/null
+++ b/queries/lalrpop/highlights.scm
@@ -0,0 +1,57 @@
+[
+ "pub"
+ "grammar"
+ "match"
+ "extern"
+ "type"
+ "enum"
+] @keyword
+
+[
+ "+"
+ "*"
+ "?"
+] @operator
+
+(grammar_type_params
+ "<" @punctuation.bracket
+ ">" @punctuation.bracket)
+
+(symbol
+ "<" @punctuation.bracket
+ ">" @punctuation.bracket)
+
+(binding_symbol
+ "<" @punctuation.bracket
+ ">" @punctuation.bracket)
+
+(binding_symbol
+ name: (identifier) @parameter)
+
+(bare_symbol
+ (macro
+ ((macro_id) @function)))
+
+(bare_symbol
+ (identifier) @function)
+
+(nonterminal_name
+ (macro_id) @function)
+
+(nonterminal_name
+ (identifier) @function)
+
+(nonterminal
+ (type_ref) @type)
+
+"(" @punctuation.bracket
+")" @punctuation.bracket
+"[" @punctuation.bracket
+"]" @punctuation.bracket
+
+";" @punctuation.delimiter
+
+(lifetime (identifier) @label)
+
+(string_literal) @string
+(regex_literal) @string
diff --git a/queries/lalrpop/locals.scm b/queries/lalrpop/locals.scm
new file mode 100644
index 000000000..7a30cce9f
--- /dev/null
+++ b/queries/lalrpop/locals.scm
@@ -0,0 +1,5 @@
+(nonterminal_name
+ (macro_id) @definition.function)
+
+(nonterminal_name
+ (identifier) @definition.function)