I started this when I was unable to squeeze certain usage patterns from HCL, like: variables living in the same scope as the file, evaluating variables in one pass with parsing, easily using external (environment) variables; plus, a simplified syntax.
The implementation is mostly done: you can defined blocks holding key-value pairs and use numerical, string and bool expressions in them. I will add lists and nested blocks.
At this very moment I am rewriting a parser from yacc-based to a Pratt top-down parser with vm, heavily inspired by the excellent book "Crafting Interpreters".
This work is actually done, but needs few polishes to be integrated.
The first implementation of the parser and deserializer is in Go. Once I'm happy with the language and it's sealed, I will write another implementations, most like starting with Python and Zig.
https://github.com/wkhere/bcl
I started this when I was unable to squeeze certain usage patterns from HCL, like: variables living in the same scope as the file, evaluating variables in one pass with parsing, easily using external (environment) variables; plus, a simplified syntax.
The implementation is mostly done: you can defined blocks holding key-value pairs and use numerical, string and bool expressions in them. I will add lists and nested blocks.
At this very moment I am rewriting a parser from yacc-based to a Pratt top-down parser with vm, heavily inspired by the excellent book "Crafting Interpreters". This work is actually done, but needs few polishes to be integrated.
The first implementation of the parser and deserializer is in Go. Once I'm happy with the language and it's sealed, I will write another implementations, most like starting with Python and Zig.