mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-03 03:56:52 -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)
|
||||
- [ ] [racket](https://github.com/6cdh/tree-sitter-racket)
|
||||
- [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] [rego](https://github.com/FallenAngel97/tree-sitter-rego) (maintained by @FallenAngel97)
|
||||
- [x] [pip requirements](https://github.com/ObserverOfTime/tree-sitter-requirements) (maintained by @ObserverOfTime)
|
||||
|
|
|
|||
|
|
@ -455,6 +455,9 @@
|
|||
"rasi": {
|
||||
"revision": "371dac6bcce0df5566c1cfebde69d90ecbeefd2d"
|
||||
},
|
||||
"re2c": {
|
||||
"revision": "47aa19cf5f7aba2ed30e2b377f7172df76e819a6"
|
||||
},
|
||||
"regex": {
|
||||
"revision": "2354482d7e2e8f8ff33c1ef6c8aa5690410fbc96"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1357,6 +1357,14 @@ list.rasi = {
|
|||
maintainers = { "@Fymyte" },
|
||||
}
|
||||
|
||||
list.re2c = {
|
||||
install_info = {
|
||||
url = "https://github.com/amaanq/tree-sitter-re2c",
|
||||
files = { "src/parser.c" },
|
||||
},
|
||||
maintainers = { "@amaanq" },
|
||||
}
|
||||
|
||||
list.regex = {
|
||||
install_info = {
|
||||
url = "https://github.com/tree-sitter/tree-sitter-regex",
|
||||
|
|
|
|||
|
|
@ -4,6 +4,10 @@
|
|||
((comment) @injection.content
|
||||
(#set! injection.language "comment"))
|
||||
|
||||
((comment) @injection.content
|
||||
(#match? @injection.content "/\*!([a-zA-Z]+:)?re2c")
|
||||
(#set! injection.language "re2c"))
|
||||
|
||||
; TODO: add when asm is added
|
||||
; (gnu_asm_expression assembly_code: (string_literal) @injection.content
|
||||
; (#set! injection.language "asm"))
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
((comment) @injection.content
|
||||
((comment) @injection.content
|
||||
(#set! injection.language "comment"))
|
||||
|
||||
(call_expression
|
||||
|
|
@ -11,10 +11,14 @@
|
|||
"regexp.MustCompile"
|
||||
"regexp.MustCompilePOSIX")
|
||||
(argument_list
|
||||
.
|
||||
.
|
||||
[
|
||||
(raw_string_literal)
|
||||
(raw_string_literal)
|
||||
(interpreted_string_literal)
|
||||
] @injection.content
|
||||
(#offset! @injection.content 0 1 0 -1)
|
||||
(#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
|
||||
(raw_string_literal) @injection.content)
|
||||
(#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