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 directory.