tree-sitter-cfengine

Crates.iotree-sitter-cfengine
lib.rstree-sitter-cfengine
version1.0.8
sourcesrc
created_at2024-10-18 12:44:44.70751
updated_at2024-10-20 20:00:34.143789
descriptionCFEngine grammar for tree-sitter
homepage
repositoryhttps://github.com/olehermanse/tree-sitter-cfengine
max_upload_size
id1414221
size141,791
Ole Herman Schumacher Elgesem (olehermanse)

documentation

README

Tree sitter grammar for CFEngine policy language

This tree-sitter grammar parses CFEngine policy language and turns it into an abstract syntax tree. It is used to provide syntax highlighting in the Zed editor, via this extension:

https://github.com/olehermanse/zed-cfengine

The grammar currently supports all major features of the language, including:

  • Bundle blocks
  • Body blocks
  • Promise type definition blocks
  • Promise types, class guards, promises, stakeholders (promisees)
  • Macros
  • Function calls
  • Lists, strings, expansions (with $() and @())

Todos

  • Using the grammar for linting / syntax checking (language server)
  • Highlighting inside strings and comments
  • Recognizing when there is JSON inside policy
  • Class guards which are quoted strings
  • Using the grammar for code indentation
  • Using the grammar for extensions to other editors

Before contributing for the first time, it's recommended to go through the tree-sitter tutorial for getting familiar with how everything works:

https://tree-sitter.github.io/tree-sitter/creating-parsers

Inspired by Lars Erik Wik's initial implementation available here:

https://github.com/larsewi/tree-sitter-cfengine

Run containerized tests locally:

docker build --tag tree-sitter-cfengine .
Commit count: 61

cargo fmt