43 lines
1.4 KiB
Markdown
43 lines
1.4 KiB
Markdown
# tree-sitter-hcl
|
|
|
|
tree-sitter grammar for the [HCL](https://github.com/hashicorp/hcl/blob/main/hclsyntax/spec.md) language
|
|
|
|
## Example
|
|
|
|
Highlighting `example/example.hcl`:
|
|
|
|

|
|
|
|
## Developing
|
|
|
|
It is recommended to use `nix` to fulfill all development dependencies. To activate the development environment simply run `nix-shell` in the project root.
|
|
|
|
## Running Tests
|
|
|
|
To run tests simply run `nix-shell --run 'tree-sitter test'`.
|
|
|
|
## Compliance
|
|
|
|
The directory `example/real_world_stuff` contains a corpus of hcl files that I found with the github query `user:hashicorp language:HCL`. Just to be sure I encrypted them using `git-crypt`.
|
|
|
|
Given that some language features are still missing ( see TODO ) there are some expected parse errors:
|
|
|
|
```bash
|
|
nix-shell --run 'tree-sitter parse --quiet --stat example/real_world_stuff/*'
|
|
...
|
|
...
|
|
Total parses: 886; successful parses: 801; failed parses: 85; success percentage: 90.41%
|
|
```
|
|
|
|
The aim is to build unit testcases from selected failure classes and 100%.
|
|
|
|
|
|
## Todo
|
|
|
|
* [ ] use [Unicode® Standard Annex #31](https://www.unicode.org/reports/tr31/) (augmented with '-') for identifiers
|
|
* [ ] add [template expressions](https://github.com/hashicorp/hcl/blob/main/hclsyntax/spec.md#template-expressions)
|
|
* [x] add quoted templates
|
|
* [x] add quoted template interpolations
|
|
* [ ] add quoted template directives
|
|
* [ ] add heredoc templates
|