mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-17 19:00:02 -04:00
feat: add re2c
This commit is contained in:
parent
05fe2c38a3
commit
c58694685d
11 changed files with 245 additions and 3 deletions
|
|
@ -325,6 +325,7 @@ We are looking for maintainers to add more parsers and to write query files for
|
||||||
- [x] [r](https://github.com/r-lib/tree-sitter-r) (maintained by @echasnovski)
|
- [x] [r](https://github.com/r-lib/tree-sitter-r) (maintained by @echasnovski)
|
||||||
- [ ] [racket](https://github.com/6cdh/tree-sitter-racket)
|
- [ ] [racket](https://github.com/6cdh/tree-sitter-racket)
|
||||||
- [x] [rasi](https://github.com/Fymyte/tree-sitter-rasi) (maintained by @Fymyte)
|
- [x] [rasi](https://github.com/Fymyte/tree-sitter-rasi) (maintained by @Fymyte)
|
||||||
|
- [x] [re2c](https://github.com/amaanq/tree-sitter-re2c) (maintained by @amaanq)
|
||||||
- [x] [regex](https://github.com/tree-sitter/tree-sitter-regex) (maintained by @theHamsta)
|
- [x] [regex](https://github.com/tree-sitter/tree-sitter-regex) (maintained by @theHamsta)
|
||||||
- [x] [rego](https://github.com/FallenAngel97/tree-sitter-rego) (maintained by @FallenAngel97)
|
- [x] [rego](https://github.com/FallenAngel97/tree-sitter-rego) (maintained by @FallenAngel97)
|
||||||
- [x] [pip requirements](https://github.com/ObserverOfTime/tree-sitter-requirements) (maintained by @ObserverOfTime)
|
- [x] [pip requirements](https://github.com/ObserverOfTime/tree-sitter-requirements) (maintained by @ObserverOfTime)
|
||||||
|
|
|
||||||
|
|
@ -455,6 +455,9 @@
|
||||||
"rasi": {
|
"rasi": {
|
||||||
"revision": "371dac6bcce0df5566c1cfebde69d90ecbeefd2d"
|
"revision": "371dac6bcce0df5566c1cfebde69d90ecbeefd2d"
|
||||||
},
|
},
|
||||||
|
"re2c": {
|
||||||
|
"revision": "47aa19cf5f7aba2ed30e2b377f7172df76e819a6"
|
||||||
|
},
|
||||||
"regex": {
|
"regex": {
|
||||||
"revision": "2354482d7e2e8f8ff33c1ef6c8aa5690410fbc96"
|
"revision": "2354482d7e2e8f8ff33c1ef6c8aa5690410fbc96"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1357,6 +1357,14 @@ list.rasi = {
|
||||||
maintainers = { "@Fymyte" },
|
maintainers = { "@Fymyte" },
|
||||||
}
|
}
|
||||||
|
|
||||||
|
list.re2c = {
|
||||||
|
install_info = {
|
||||||
|
url = "https://github.com/amaanq/tree-sitter-re2c",
|
||||||
|
files = { "src/parser.c" },
|
||||||
|
},
|
||||||
|
maintainers = { "@amaanq" },
|
||||||
|
}
|
||||||
|
|
||||||
list.regex = {
|
list.regex = {
|
||||||
install_info = {
|
install_info = {
|
||||||
url = "https://github.com/tree-sitter/tree-sitter-regex",
|
url = "https://github.com/tree-sitter/tree-sitter-regex",
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,10 @@
|
||||||
((comment) @injection.content
|
((comment) @injection.content
|
||||||
(#set! injection.language "comment"))
|
(#set! injection.language "comment"))
|
||||||
|
|
||||||
|
((comment) @injection.content
|
||||||
|
(#match? @injection.content "/\*!([a-zA-Z]+:)?re2c")
|
||||||
|
(#set! injection.language "re2c"))
|
||||||
|
|
||||||
; TODO: add when asm is added
|
; TODO: add when asm is added
|
||||||
; (gnu_asm_expression assembly_code: (string_literal) @injection.content
|
; (gnu_asm_expression assembly_code: (string_literal) @injection.content
|
||||||
; (#set! injection.language "asm"))
|
; (#set! injection.language "asm"))
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
((comment) @injection.content
|
((comment) @injection.content
|
||||||
(#set! injection.language "comment"))
|
(#set! injection.language "comment"))
|
||||||
|
|
||||||
(call_expression
|
(call_expression
|
||||||
|
|
@ -11,10 +11,14 @@
|
||||||
"regexp.MustCompile"
|
"regexp.MustCompile"
|
||||||
"regexp.MustCompilePOSIX")
|
"regexp.MustCompilePOSIX")
|
||||||
(argument_list
|
(argument_list
|
||||||
.
|
.
|
||||||
[
|
[
|
||||||
(raw_string_literal)
|
(raw_string_literal)
|
||||||
(interpreted_string_literal)
|
(interpreted_string_literal)
|
||||||
] @injection.content
|
] @injection.content
|
||||||
(#offset! @injection.content 0 1 0 -1)
|
(#offset! @injection.content 0 1 0 -1)
|
||||||
(#set! injection.language "regex")))
|
(#set! injection.language "regex")))
|
||||||
|
|
||||||
|
((comment) @injection.content
|
||||||
|
(#match? @injection.content "/\*!([a-zA-Z]+:)?re2c")
|
||||||
|
(#set! injection.language "re2c"))
|
||||||
|
|
|
||||||
4
queries/re2c/folds.scm
Normal file
4
queries/re2c/folds.scm
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
[
|
||||||
|
(body)
|
||||||
|
(action)
|
||||||
|
] @fold
|
||||||
190
queries/re2c/highlights.scm
Normal file
190
queries/re2c/highlights.scm
Normal file
|
|
@ -0,0 +1,190 @@
|
||||||
|
; Namespaces
|
||||||
|
|
||||||
|
[
|
||||||
|
"re2c"
|
||||||
|
"re2c"
|
||||||
|
"local"
|
||||||
|
"rules"
|
||||||
|
] @namespace
|
||||||
|
|
||||||
|
; Includes
|
||||||
|
|
||||||
|
[
|
||||||
|
"!use"
|
||||||
|
"!include"
|
||||||
|
] @include
|
||||||
|
|
||||||
|
; Keywords
|
||||||
|
|
||||||
|
[
|
||||||
|
"flags"
|
||||||
|
"define"
|
||||||
|
"cond"
|
||||||
|
"label"
|
||||||
|
"variable"
|
||||||
|
"yych"
|
||||||
|
"state"
|
||||||
|
"yybm"
|
||||||
|
"cgoto"
|
||||||
|
"api"
|
||||||
|
"tags"
|
||||||
|
"indent"
|
||||||
|
"yyfill"
|
||||||
|
"eof"
|
||||||
|
"sentinel"
|
||||||
|
"condprefix"
|
||||||
|
"condenumprefix"
|
||||||
|
"labelprefix"
|
||||||
|
"startlabel"
|
||||||
|
"posix-captures"
|
||||||
|
"max"
|
||||||
|
"maxnmatch"
|
||||||
|
"mtags"
|
||||||
|
"stags"
|
||||||
|
"header"
|
||||||
|
"getstate"
|
||||||
|
] @keyword
|
||||||
|
|
||||||
|
[
|
||||||
|
"*"
|
||||||
|
"+"
|
||||||
|
"?"
|
||||||
|
] @repeat
|
||||||
|
|
||||||
|
; Constants
|
||||||
|
|
||||||
|
[
|
||||||
|
"ignore"
|
||||||
|
"substitute"
|
||||||
|
"fail"
|
||||||
|
"default"
|
||||||
|
"custom"
|
||||||
|
"match-empty"
|
||||||
|
"match-none"
|
||||||
|
"error"
|
||||||
|
"functions"
|
||||||
|
"free-form"
|
||||||
|
"format"
|
||||||
|
"separator"
|
||||||
|
] @constant.builtin
|
||||||
|
|
||||||
|
(linedir) @constant.macro
|
||||||
|
|
||||||
|
; Operators
|
||||||
|
|
||||||
|
[
|
||||||
|
"="
|
||||||
|
"=>"
|
||||||
|
":=>"
|
||||||
|
"/"
|
||||||
|
"|"
|
||||||
|
"\\"
|
||||||
|
"->"
|
||||||
|
"^"
|
||||||
|
] @operator
|
||||||
|
|
||||||
|
[
|
||||||
|
"."
|
||||||
|
(default)
|
||||||
|
(end_of_input)
|
||||||
|
] @constant.macro
|
||||||
|
|
||||||
|
(field_expression
|
||||||
|
"." @operator)
|
||||||
|
|
||||||
|
(condition
|
||||||
|
(any) @constant.macro)
|
||||||
|
|
||||||
|
|
||||||
|
; Names
|
||||||
|
|
||||||
|
(name) @type
|
||||||
|
|
||||||
|
(block_name) @constant
|
||||||
|
|
||||||
|
(label) @label
|
||||||
|
|
||||||
|
(option_name) @constant.builtin
|
||||||
|
|
||||||
|
((option_name) @constant.macro
|
||||||
|
(#match? @constant.macro "^YY"))
|
||||||
|
|
||||||
|
(field_expression
|
||||||
|
argument: (identifier) @variable)
|
||||||
|
|
||||||
|
(field_identifier) @property
|
||||||
|
|
||||||
|
; Literals
|
||||||
|
|
||||||
|
(regex) @string.regex
|
||||||
|
|
||||||
|
[
|
||||||
|
(dstring) ; case sensitive
|
||||||
|
(sstring) ; case insensitive
|
||||||
|
] @string
|
||||||
|
|
||||||
|
[
|
||||||
|
(quote)
|
||||||
|
(ctrl_code)
|
||||||
|
(code_unit)
|
||||||
|
] @string.escape
|
||||||
|
|
||||||
|
(number) @number
|
||||||
|
|
||||||
|
[
|
||||||
|
"on"
|
||||||
|
"off"
|
||||||
|
] @boolean
|
||||||
|
|
||||||
|
[
|
||||||
|
(stag)
|
||||||
|
(mtag)
|
||||||
|
] @property
|
||||||
|
|
||||||
|
; Configurations
|
||||||
|
|
||||||
|
(define
|
||||||
|
option: (option_name) @_yy
|
||||||
|
value: (dstring) @type
|
||||||
|
(#eq? @_yy "YYCTYPE")
|
||||||
|
(#offset! @type 0 1 0 -1))
|
||||||
|
|
||||||
|
(set_header
|
||||||
|
value: (dstring) @string.special @text.underline)
|
||||||
|
|
||||||
|
(host_lang) @none
|
||||||
|
|
||||||
|
; Punctuation
|
||||||
|
|
||||||
|
[
|
||||||
|
":"
|
||||||
|
";"
|
||||||
|
","
|
||||||
|
"-"
|
||||||
|
] @punctuation.delimiter
|
||||||
|
|
||||||
|
[
|
||||||
|
"{" "}"
|
||||||
|
"[" "]"
|
||||||
|
"(" ")"
|
||||||
|
"<" ">"
|
||||||
|
] @punctuation.bracket
|
||||||
|
|
||||||
|
(repetition
|
||||||
|
(limits
|
||||||
|
["{" "}"] @punctuation.bracket))
|
||||||
|
|
||||||
|
[
|
||||||
|
"!"
|
||||||
|
"@"
|
||||||
|
"#"
|
||||||
|
] @punctuation.special
|
||||||
|
|
||||||
|
; Comments and error
|
||||||
|
|
||||||
|
[
|
||||||
|
(comment)
|
||||||
|
(ignore_block)
|
||||||
|
] @comment @spell
|
||||||
|
|
||||||
|
(ERROR) @error
|
||||||
11
queries/re2c/indents.scm
Normal file
11
queries/re2c/indents.scm
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
[
|
||||||
|
(re2c)
|
||||||
|
(action)
|
||||||
|
] @indent.begin
|
||||||
|
|
||||||
|
"}" @indent.branch @indent.end
|
||||||
|
|
||||||
|
[
|
||||||
|
(comment)
|
||||||
|
(linedir)
|
||||||
|
] @indent.ignore
|
||||||
12
queries/re2c/injections.scm
Normal file
12
queries/re2c/injections.scm
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
((host_lang) @injection.content
|
||||||
|
(#set! injection.parent))
|
||||||
|
|
||||||
|
((define
|
||||||
|
option: (option_name) @_yy
|
||||||
|
value: (dstring) @injection.content)
|
||||||
|
(#any-of? @_yy "YYPEEK" "YYSKIP" "YYBACKUP" "YYBACKUPCTX" "YYRESTORE" "YYRESTORECTX" "YYFILL" "YYSHIFT")
|
||||||
|
(#offset! @injection.content 0 1 0 -1)
|
||||||
|
(#set! injection.parent))
|
||||||
|
|
||||||
|
((comment) @injection.content
|
||||||
|
(#set! injection.language "comment"))
|
||||||
1
queries/re2c/locals.scm
Normal file
1
queries/re2c/locals.scm
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
(body) @scope
|
||||||
|
|
@ -37,3 +37,7 @@
|
||||||
arguments: (arguments
|
arguments: (arguments
|
||||||
(raw_string_literal) @injection.content)
|
(raw_string_literal) @injection.content)
|
||||||
(#set! injection.language "regex"))
|
(#set! injection.language "regex"))
|
||||||
|
|
||||||
|
((block_comment) @injection.content
|
||||||
|
(#match? @injection.content "/\*!([a-zA-Z]+:)?re2c")
|
||||||
|
(#set! injection.language "re2c"))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue