8 stable releases
1.0.8 | Oct 20, 2024 |
---|---|
1.0.6 | Oct 18, 2024 |
0.0.1 | Oct 18, 2024 |
#122 in Text editors
95KB
3K
SLoC
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 .
Dependencies
~2–305KB