mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-01 19:17:02 -04:00
CEL
https://cel.dev `.cel` (supported on nvim nightly: https://github.com/neovim/neovim/pull/37834) CEL is an expression-based language that's embeddable, so sorry for the short example. (Many more on https://celbyexample.com.) <details> <summary>Representative code sample</summary> ``` // From cel.dev homepage // Simple predicates 'tacocat'.startsWith('taco') ``` </details> https://github.com/bufbuild/tree-sitter-cel <details> <summary>Parsed tree for code sample</summary> ``` (expr ; [0, 0] - [3, 0] (comment) ; [0, 0] - [0, 24] (comment) ; [1, 0] - [1, 20] (member_call_expression ; [2, 0] - [2, 28] operand: (string_literal ; [2, 0] - [2, 9] (single_quoted_string_literal)) ; [2, 0] - [2, 9] function: (identifier) ; [2, 10] - [2, 20] arguments: (arguments ; [2, 20] - [2, 28] (string_literal ; [2, 21] - [2, 27] (single_quoted_string_literal))))) ; [2, 21] - [2, 27] ``` </details> Source of queries: written from scratch; cobbled together from other tree-sitter repositories. <details> <summary>Screenshots of code sample</summary> <!-- paste screenshot of code sample using provided queries here --> </details> <!-- CHECKLIST: _Before_ submitting, make sure * `./scripts/install-parsers.lua <language>` works without warnings * `./scripts/install-parsers.lua --generate <language>` works without warnings * `make query` works without warning * `make docs` is run -->
This commit is contained in:
parent
3edb01f912
commit
decca28b35
7 changed files with 143 additions and 0 deletions
1
SUPPORTED_LANGUAGES.md
generated
1
SUPPORTED_LANGUAGES.md
generated
|
|
@ -36,6 +36,7 @@ Language | Tier | Queries | Maintainer
|
||||||
[caddy](https://github.com/opa-oz/tree-sitter-caddy) | unmaintained | `HFIJ ` |
|
[caddy](https://github.com/opa-oz/tree-sitter-caddy) | unmaintained | `HFIJ ` |
|
||||||
[cairo](https://github.com/tree-sitter-grammars/tree-sitter-cairo) | unstable | `HFIJL` | @amaanq
|
[cairo](https://github.com/tree-sitter-grammars/tree-sitter-cairo) | unstable | `HFIJL` | @amaanq
|
||||||
[capnp](https://github.com/tree-sitter-grammars/tree-sitter-capnp) | unstable | `HFIJL` | @amaanq
|
[capnp](https://github.com/tree-sitter-grammars/tree-sitter-capnp) | unstable | `HFIJL` | @amaanq
|
||||||
|
[cel](https://github.com/bufbuild/tree-sitter-cel) | unstable | `HFIJL` | @stefanvanburen
|
||||||
[chatito](https://github.com/tree-sitter-grammars/tree-sitter-chatito) | unstable | `HFIJL` | @ObserverOfTime
|
[chatito](https://github.com/tree-sitter-grammars/tree-sitter-chatito) | unstable | `HFIJL` | @ObserverOfTime
|
||||||
[circom](https://github.com/Decurity/tree-sitter-circom) | unstable | `HF JL` | @alexandr-martirosyan
|
[circom](https://github.com/Decurity/tree-sitter-circom) | unstable | `HF JL` | @alexandr-martirosyan
|
||||||
[clojure](https://github.com/sogaiu/tree-sitter-clojure) | unstable | `HF JL` | @NoahTheDuke
|
[clojure](https://github.com/sogaiu/tree-sitter-clojure) | unstable | `HF JL` | @NoahTheDuke
|
||||||
|
|
|
||||||
|
|
@ -267,6 +267,14 @@ return {
|
||||||
maintainers = { '@jakestanger' },
|
maintainers = { '@jakestanger' },
|
||||||
tier = 2,
|
tier = 2,
|
||||||
},
|
},
|
||||||
|
cel = {
|
||||||
|
install_info = {
|
||||||
|
revision = 'e0b695e6c318babff09de7e66e0de0adaab7b8ad',
|
||||||
|
url = 'https://github.com/bufbuild/tree-sitter-cel',
|
||||||
|
},
|
||||||
|
maintainers = { '@stefanvanburen' },
|
||||||
|
tier = 2,
|
||||||
|
},
|
||||||
cpon = {
|
cpon = {
|
||||||
install_info = {
|
install_info = {
|
||||||
revision = '594289eadfec719198e560f9d7fd243c4db678d5',
|
revision = '594289eadfec719198e560f9d7fd243c4db678d5',
|
||||||
|
|
|
||||||
10
runtime/queries/cel/folds.scm
Normal file
10
runtime/queries/cel/folds.scm
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
; Code folding queries for CEL (Common Expression Language).
|
||||||
|
; Marks collection literals as foldable regions.
|
||||||
|
; Fold map expressions
|
||||||
|
(map_expression) @fold
|
||||||
|
|
||||||
|
; Fold list expressions
|
||||||
|
(list_expression) @fold
|
||||||
|
|
||||||
|
; Fold struct expressions
|
||||||
|
(struct_expression) @fold
|
||||||
95
runtime/queries/cel/highlights.scm
Normal file
95
runtime/queries/cel/highlights.scm
Normal file
|
|
@ -0,0 +1,95 @@
|
||||||
|
; Syntax highlighting queries for CEL (Common Expression Language).
|
||||||
|
; Maps CEL grammar nodes to standard tree-sitter highlight capture names.
|
||||||
|
; Operators
|
||||||
|
[
|
||||||
|
"-"
|
||||||
|
"!"
|
||||||
|
"*"
|
||||||
|
"/"
|
||||||
|
"&&"
|
||||||
|
"%"
|
||||||
|
"+"
|
||||||
|
"<"
|
||||||
|
"<="
|
||||||
|
"!="
|
||||||
|
"=="
|
||||||
|
">"
|
||||||
|
">="
|
||||||
|
"||"
|
||||||
|
] @operator
|
||||||
|
|
||||||
|
; Ternary operator
|
||||||
|
"?" @operator
|
||||||
|
|
||||||
|
(conditional_expression
|
||||||
|
":" @operator)
|
||||||
|
|
||||||
|
(map_entry
|
||||||
|
":" @punctuation.delimiter)
|
||||||
|
|
||||||
|
(field_initializer
|
||||||
|
":" @punctuation.delimiter)
|
||||||
|
|
||||||
|
; Punctuation
|
||||||
|
[
|
||||||
|
"("
|
||||||
|
")"
|
||||||
|
"["
|
||||||
|
"]"
|
||||||
|
"{"
|
||||||
|
"}"
|
||||||
|
] @punctuation.bracket
|
||||||
|
|
||||||
|
"," @punctuation.delimiter
|
||||||
|
|
||||||
|
"." @punctuation.delimiter
|
||||||
|
|
||||||
|
; Keywords
|
||||||
|
"in" @keyword.operator
|
||||||
|
|
||||||
|
(reserved_keyword) @keyword
|
||||||
|
|
||||||
|
; Function calls
|
||||||
|
(call_expression
|
||||||
|
function: (identifier) @function.call)
|
||||||
|
|
||||||
|
(absolute_expression
|
||||||
|
name: (identifier) @function.call
|
||||||
|
arguments: (arguments))
|
||||||
|
|
||||||
|
(member_call_expression
|
||||||
|
function: [
|
||||||
|
(identifier)
|
||||||
|
(reserved_keyword)
|
||||||
|
] @function.method.call)
|
||||||
|
|
||||||
|
; Member access
|
||||||
|
(select_expression
|
||||||
|
member: [
|
||||||
|
(identifier)
|
||||||
|
(reserved_keyword)
|
||||||
|
] @variable.member)
|
||||||
|
|
||||||
|
; Variables
|
||||||
|
(identifier) @variable
|
||||||
|
|
||||||
|
; Literals
|
||||||
|
[
|
||||||
|
(string_literal)
|
||||||
|
(bytes_literal)
|
||||||
|
] @string
|
||||||
|
|
||||||
|
[
|
||||||
|
(int_literal)
|
||||||
|
(uint_literal)
|
||||||
|
] @number
|
||||||
|
|
||||||
|
(float_literal) @number.float
|
||||||
|
|
||||||
|
[
|
||||||
|
(true)
|
||||||
|
(false)
|
||||||
|
(null)
|
||||||
|
] @constant.builtin
|
||||||
|
|
||||||
|
(comment) @comment @spell
|
||||||
16
runtime/queries/cel/indents.scm
Normal file
16
runtime/queries/cel/indents.scm
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
; Indentation queries for CEL (Common Expression Language).
|
||||||
|
; Marks nodes that should increase or decrease indentation level.
|
||||||
|
; Indent after opening delimiters of collection literals and function arguments
|
||||||
|
[
|
||||||
|
(map_expression)
|
||||||
|
(list_expression)
|
||||||
|
(struct_expression)
|
||||||
|
(arguments)
|
||||||
|
] @indent.begin
|
||||||
|
|
||||||
|
; Dedent before closing delimiters
|
||||||
|
[
|
||||||
|
"}"
|
||||||
|
"]"
|
||||||
|
")"
|
||||||
|
] @indent.dedent
|
||||||
4
runtime/queries/cel/injections.scm
Normal file
4
runtime/queries/cel/injections.scm
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
; Inject the "comment" language into comments to enable highlighting of
|
||||||
|
; TODO, FIXME, etc. markers within CEL comment text.
|
||||||
|
((comment) @injection.content
|
||||||
|
(#set! injection.language "comment"))
|
||||||
9
runtime/queries/cel/locals.scm
Normal file
9
runtime/queries/cel/locals.scm
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
; CEL is a pure expression language — variables are provided by the evaluation
|
||||||
|
; environment rather than declared in the expression itself. We mark the root
|
||||||
|
; expression as a scope and all identifiers as references so that editors can
|
||||||
|
; apply local-variable highlighting and scope-aware navigation.
|
||||||
|
; Scopes
|
||||||
|
(expr) @local.scope
|
||||||
|
|
||||||
|
; References
|
||||||
|
(identifier) @local.reference
|
||||||
Loading…
Add table
Add a link
Reference in a new issue