aboutsummaryrefslogtreecommitdiffstats
path: root/queries/re2c
diff options
context:
space:
mode:
authorAmaan Qureshi <amaanq12@gmail.com>2023-08-22 02:10:29 -0400
committerAmaan Qureshi <amaanq12@gmail.com>2023-08-24 02:52:48 -0400
commitc58694685d0a4387ea10aeac1932c6afc55bcf3e (patch)
treefcf5551992e32b84dc5dc4bf5662122268322d7d /queries/re2c
parentrefactor: replace some match & vim-match usages (diff)
downloadnvim-treesitter-c58694685d0a4387ea10aeac1932c6afc55bcf3e.tar
nvim-treesitter-c58694685d0a4387ea10aeac1932c6afc55bcf3e.tar.gz
nvim-treesitter-c58694685d0a4387ea10aeac1932c6afc55bcf3e.tar.bz2
nvim-treesitter-c58694685d0a4387ea10aeac1932c6afc55bcf3e.tar.lz
nvim-treesitter-c58694685d0a4387ea10aeac1932c6afc55bcf3e.tar.xz
nvim-treesitter-c58694685d0a4387ea10aeac1932c6afc55bcf3e.tar.zst
nvim-treesitter-c58694685d0a4387ea10aeac1932c6afc55bcf3e.zip
feat: add re2c
Diffstat (limited to 'queries/re2c')
-rw-r--r--queries/re2c/folds.scm4
-rw-r--r--queries/re2c/highlights.scm190
-rw-r--r--queries/re2c/indents.scm11
-rw-r--r--queries/re2c/injections.scm12
-rw-r--r--queries/re2c/locals.scm1
5 files changed, 218 insertions, 0 deletions
diff --git a/queries/re2c/folds.scm b/queries/re2c/folds.scm
new file mode 100644
index 000000000..b4cf5f24e
--- /dev/null
+++ b/queries/re2c/folds.scm
@@ -0,0 +1,4 @@
+[
+ (body)
+ (action)
+] @fold
diff --git a/queries/re2c/highlights.scm b/queries/re2c/highlights.scm
new file mode 100644
index 000000000..6d3a27f5a
--- /dev/null
+++ b/queries/re2c/highlights.scm
@@ -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
diff --git a/queries/re2c/indents.scm b/queries/re2c/indents.scm
new file mode 100644
index 000000000..72539143a
--- /dev/null
+++ b/queries/re2c/indents.scm
@@ -0,0 +1,11 @@
+[
+ (re2c)
+ (action)
+] @indent.begin
+
+"}" @indent.branch @indent.end
+
+[
+ (comment)
+ (linedir)
+] @indent.ignore
diff --git a/queries/re2c/injections.scm b/queries/re2c/injections.scm
new file mode 100644
index 000000000..e5e40a09d
--- /dev/null
+++ b/queries/re2c/injections.scm
@@ -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"))
diff --git a/queries/re2c/locals.scm b/queries/re2c/locals.scm
new file mode 100644
index 000000000..0a77995d5
--- /dev/null
+++ b/queries/re2c/locals.scm
@@ -0,0 +1 @@
+(body) @scope