mirror of
https://github.com/johnkerl/miller.git
synced 2026-01-23 02:14:13 +00:00
* address some staticcheck issues * address some staticcheck issues * address some staticcheck issues * address some staticcheck issues
81 lines
1.8 KiB
Bash
Executable file
81 lines
1.8 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# ----------------------------------------------------------------
|
|
# Setup
|
|
us=$(basename $0)
|
|
set -euo pipefail
|
|
|
|
verbose="false"
|
|
|
|
if [ $# -eq 1 ]; then
|
|
bnf="$1"
|
|
elif [ $# -eq 2 ]; then
|
|
if [ "$1" = "-v" ]; then
|
|
verbose="true"
|
|
else
|
|
echo "Usage: $0 {.bnf file}" 1>&2
|
|
exit 1
|
|
fi
|
|
bnf="$2"
|
|
else
|
|
echo "Usage: $0 {.bnf file}" 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
dir=src/parsing
|
|
mkdir -p $dir
|
|
|
|
# ----------------------------------------------------------------
|
|
# Run the parser-generator
|
|
|
|
# Build the bin/gocc executable:
|
|
go get github.com/goccmack/gocc
|
|
#go get github.com/johnkerl/gocc
|
|
bingocc="$GOPATH/bin/gocc"
|
|
if [ ! -x "$bingocc" ]; then
|
|
exit 1
|
|
fi
|
|
|
|
rm -f $dir/*.txt
|
|
if [ "$verbose" = "true" ]; then
|
|
lr1="$dir/LR1_conflicts.txt"
|
|
# The -o specifies the package name within the autogen
|
|
$bingocc -v -o $dir $bnf || expand -2 $lr1
|
|
else
|
|
$bingocc -o $dir $bnf
|
|
fi
|
|
|
|
echo "Parser-autogen OK"
|
|
|
|
# Code-gen directories:
|
|
# $dir/errors/
|
|
# $dir/lexer/
|
|
# $dir/parser/
|
|
# $dir/token/
|
|
# $dir/util/
|
|
|
|
# ----------------------------------------------------------------
|
|
# Override GOCC codegen with customized error handling
|
|
cp ../../../go/src/parsing/errors.go.template src/parsing/errors/errors.go
|
|
sed -i .bak 's:miller/src:two/src:' src/parsing/errors/errors.go
|
|
|
|
# ----------------------------------------------------------------
|
|
# Copy AST files from the main Miller tree
|
|
|
|
rm -rf ./src/lib/
|
|
rm -rf ./src/dsl/
|
|
|
|
mkdir -p ./src/lib/
|
|
mkdir -p ./src/dsl/
|
|
|
|
cp ../../../go/src/lib/*.go ./src/lib/
|
|
cp ../../../go/src/dsl/ast*.go ./src/dsl/
|
|
|
|
# Different path to autogen between main Miller tree and here
|
|
sed -i .bak 's:miller/src:two/src:' src/dsl/ast*go
|
|
|
|
# ----------------------------------------------------------------
|
|
# Compile the main and the parser-autogen
|
|
|
|
go build main.go
|
|
echo "Compile OK"
|