mirror of
https://github.com/johnkerl/miller.git
synced 2026-07-17 16:38:54 +00:00
* Porting * Update some tests that depend on AST-print output * iterating on GOCC -> PGPG * iterating * iterating * iterating * iterating * iterating * Modify expout files that need only AST-print-syntax updates * iterating * iterating * iterating * iterating * iterating * iterating * iterating * iterating * iterating * iterating * iterating * sync test cases from mlr-6.17.0, except AST-prints ... * sync test cases from mlr-6.17.0, except AST-prints ... * Fix lashed emit for $* and @* * Fix --1 and ++1 chained unary ops * Emit with function callsite * test cases * dot operator * M_PI and M_E * Iterating on lashed emit cases * error-wording differences * rm some should-fail files * Fix issue with leading semicolon * trailing comma in func params; most AST-print deltas * error-wording delta * fix unset all * AST-print deltas * go mod tidy: forced `go 1.25` to `go 1.25.0` * Depend on PGPG v1.0.0 * Fix Windows CI failure * Remove cmd/experiments/dsl_parser * GOCC -> PGPG * neaten * Fix regex issue found in doc gen
59 lines
1.7 KiB
Bash
Executable file
59 lines
1.7 KiB
Bash
Executable file
#!/bin/bash
|
|
# ================================================================
|
|
# Generate lexer and parser from mlr.bnf using PGPG.
|
|
#
|
|
# Run from the Miller repo root. Output goes to pkg/parsing/lexer/
|
|
# and pkg/parsing/parser/.
|
|
# ================================================================
|
|
|
|
set -euo pipefail
|
|
|
|
cd "$(dirname "$0")/.."
|
|
bnf="pkg/parsing/mlr.bnf"
|
|
|
|
if [ ! -f "$bnf" ]; then
|
|
echo "build-dsl: grammar file not found: $bnf"
|
|
exit 1
|
|
fi
|
|
|
|
# Intermediate JSON files (not checked in)
|
|
mkdir -p pkg/parsing/gen
|
|
lexjson="pkg/parsing/gen/lexer.json"
|
|
parsejson="pkg/parsing/gen/parser.json"
|
|
|
|
echo "build-dsl: generating lexer tables..."
|
|
go run github.com/johnkerl/pgpg/go/generators/cmd/lexgen-tables \
|
|
-o "$lexjson" \
|
|
"$bnf"
|
|
|
|
echo "build-dsl: generating lexer code..."
|
|
go run github.com/johnkerl/pgpg/go/generators/cmd/lexgen-code \
|
|
-o pkg/parsing/lexer/lexer.go \
|
|
-package lexer \
|
|
-type MlrLexer \
|
|
"$lexjson"
|
|
|
|
echo "build-dsl: generating parser tables..."
|
|
go run github.com/johnkerl/pgpg/go/generators/cmd/parsegen-tables \
|
|
-o "$parsejson" \
|
|
"$bnf"
|
|
|
|
echo "build-dsl: generating parser code..."
|
|
go run github.com/johnkerl/pgpg/go/generators/cmd/parsegen-code \
|
|
-o pkg/parsing/parser/parser.go \
|
|
-package parser \
|
|
-type MlrParser \
|
|
"$parsejson"
|
|
|
|
# Remove PGPPG-generated files that are no longer needed
|
|
rm -f pkg/parsing/lexer/acttab.go \
|
|
pkg/parsing/lexer/transitiontable.go \
|
|
pkg/parsing/parser/action.go \
|
|
pkg/parsing/parser/actiontable.go \
|
|
pkg/parsing/parser/context.go \
|
|
pkg/parsing/parser/gototable.go \
|
|
pkg/parsing/parser/productionstable.go \
|
|
2>/dev/null || true
|
|
|
|
gofmt -w pkg/parsing/lexer/lexer.go pkg/parsing/parser/parser.go
|
|
echo "build-dsl: done."
|