mirror of
https://github.com/johnkerl/miller.git
synced 2026-01-23 02:14:13 +00:00
63 lines
1.2 KiB
Bash
Executable file
63 lines
1.2 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/experimental
|
|
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"
|
|
|
|
export GOPATH="../go"
|
|
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/
|
|
|
|
# ----------------------------------------------------------------
|
|
# Compile the main and the parser-autogen
|
|
|
|
go build main.go
|
|
echo "Compile OK"
|