mirror of
https://github.com/johnkerl/miller.git
synced 2026-08-01 04:01:58 +00:00
26 lines
1.1 KiB
Markdown
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.
|