Grammar
The full EBNF will live in compiler/README.md. This is the shape:
file = needs { statement }needs = "needs" "[" { key set "," } "]"statement = let | mut | fn | if | for | match | exprlet = "let" name [ ":" type ] "=" exprexpr = literal | path | name | call | list | record | expr "?" | expr "or" blockcall = name "(" [ expr { "," expr } ] ")"list = "[" [ expr { "," expr } ] "]"record = "{" [ name ":" expr { "," name ":" expr } ] "}"