Files
rgbds/src/bison.sh
orbea 0f772932a5 Convert bison.sh to posix shell (#1369)
* Convert bison.sh to posix shell

* Refactor bison.sh to be more like CMakeLists.txt

No current warnings with shellcheck.net.
2024-03-21 16:06:36 -04:00

31 lines
902 B
Bash
Executable File

#!/bin/sh
set -eu
OUTPUT_CPP="${1:?}"
INPUT_Y="${2:?}"
BISON_MAJOR=$(bison -V | sed -E 's/^.+ ([0-9]+)\..*$/\1/g;q')
BISON_MINOR=$(bison -V | sed -E 's/^.+ [0-9]+\.([0-9]+)\..*$/\1/g;q')
if [ "$BISON_MAJOR" -lt 3 ]; then
echo "Bison $BISON_MAJOR.$BISON_MINOR is not supported" 1>&2
exit 1
fi
BISON_FLAGS="-Wall -Dparse.lac=full -Dlr.type=ielr"
# Set some optimization flags on versions that support them
if [ "$BISON_MAJOR" -eq 4 ] || [ "$BISON_MAJOR" -eq 3 ] && [ "$BISON_MINOR" -ge 5 ]; then
BISON_FLAGS="$BISON_FLAGS -Dapi.token.raw=true"
fi
if [ "$BISON_MAJOR" -eq 4 ] || [ "$BISON_MAJOR" -eq 3 ] && [ "$BISON_MINOR" -ge 6 ]; then
BISON_FLAGS="$BISON_FLAGS -Dparse.error=detailed"
else
BISON_FLAGS="$BISON_FLAGS -Dparse.error=verbose"
fi
# Replace the arguments to this script ($@) with the ones in $BISON_FLAGS
eval "set -- $BISON_FLAGS"
exec bison "$@" -d -o "$OUTPUT_CPP" "$INPUT_Y"