handle quoted template expressions and template interpolations

This commit is contained in:
mhoffm
2021-06-14 00:55:24 +02:00
parent 3c984653bb
commit 7b91d51683
20 changed files with 5381 additions and 4751 deletions

View File

@@ -2,15 +2,37 @@
tree-sitter grammar for the [HCL](https://github.com/hashicorp/hcl/blob/main/hclsyntax/spec.md) language
## developing
## 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
## Running Tests
To run tests simply run `nix-shell --run 'tree-sitter test'`.
## todo
## Example
* use [Unicode® Standard Annex #31](https://www.unicode.org/reports/tr31/) (augmented with '-')for identifiers
Highlighting `example/example.hcl`:
![Highlighting Example](/example/example.png "highlighting example")
## Quoted Template Expressions
In principle it is allowed to contain arbitary expressions in quoted template expressions.
Consider for example:
```hcl
foo = "prefix-${func(\"bar\"}"
```
To make parsing a little easier, this parser only checks for valid escape sequences and template chars.
When using this parser one would have to take the content of a template interpolation, unescape it and parse it again to get the syntax tree. The same applies to template directives.
## String Literals
String literals are parsed as quoted templates. The calling application should check if the node contains any template interpolations or directives.
## 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)