miller/pkg/parsing/README.md
John Kerl 268a96d002
Export library code in pkg/ (#1391)
* Export library code in `pkg/`

* new doc page
2023-09-10 17:15:13 -04:00

26 lines
1.1 KiB
Markdown

This directory contains a single source file, `mlr.bnf`, which is the
lexical/semantic grammar file for the Miller `put`/`filter` DSL
(domain-specific language) using the GOCC framework. (In a classical Lex/Yacc
framework, there would be separate `mlr.l` and `mlr.y` files; using GOCC, there
is a single `mlr.bnf` file.)
All subdirectories of `pkg/parsing/` are autogen code created by GOCC's
processing of `mlr.bnf`. They are nonetheless committed to source control,
since running GOCC takes quite a bit longer than the `go build` does, and the
BNF file doesn't often change. (_BNF_ is for _Backus-Naur Form_ which is the
phrasing of the grammar file that GOCC support.) See the top-level `miller/go`
build scripts for how to rerun GOCC. As of this writing, it's
```
gocc -o pkg/parsing pkg/parsing/mlr.bnf
````
as invoked from the repo base directory -- however you should instead use
```
tools/build-dsl
```
Making changes to `mlr.bnf` requires several minutes to re-run GOCC. For
experimental changes, please see the
[experiments](../../../experiments/dsl-parser) directory.