2021-06-07 20:52:50 +02:00
# tree-sitter-hcl
2021-06-13 09:26:49 +02:00
tree-sitter grammar for the [HCL ](https://github.com/hashicorp/hcl/blob/main/hclsyntax/spec.md ) language
2021-06-08 23:18:50 +02:00
2021-06-14 23:25:32 +02:00
## Example
Highlighting `example/example.hcl` :
2021-06-17 19:39:46 +02:00

2021-06-14 23:25:32 +02:00
2021-06-14 00:55:24 +02:00
## Developing
2021-06-08 23:18:50 +02:00
It is recommended to use `nix` to fulfill all development dependencies. To activate the development environment simply run `nix-shell` in the project root.
2021-06-14 00:55:24 +02:00
## Running Tests
2021-06-08 23:18:50 +02:00
2021-06-14 23:33:28 +02:00
To run tests simply run `nix-shell --run 'tree-sitter test'` .
2021-06-12 21:47:30 +02:00
2021-06-19 16:56:35 +02:00
## 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%.
2021-06-14 00:55:24 +02:00
## Todo
2021-06-14 23:25:32 +02:00
* [ ] use [Unicode® Standard Annex #31 ](https://www.unicode.org/reports/tr31/ ) (augmented with '-') for identifiers
2021-06-14 23:33:28 +02:00
* [ ] add [template expressions ](https://github.com/hashicorp/hcl/blob/main/hclsyntax/spec.md#template-expressions )
2021-06-14 23:25:32 +02:00
* [x] add quoted templates
* [x] add quoted template interpolations
* [ ] add quoted template directives
* [ ] add heredoc templates