#!/bin/sh
#------------------------------------------------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2019 OpenCFD Ltd.
# \\/ M anipulation |
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM, licensed under GNU General Public License
# .
#
# Script
# makeParser
#
# Description
# Pregenerate ragel code and/or lemon parser headers
#
#------------------------------------------------------------------------------
usage() {
exec 1>&2
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
cat</dev/null
then
echo "Removed generated $2 file"
else
echo "No generated $2 file to remove"
fi
}
case "$scanner" in
(*.rl)
input="${prefix}${scanner}"
output="${prefix}${scanner%.*}.cc"
if [ "$optRemove" = true ]
then
removeFile "$output" "ragel scanner"
elif command -v ragel >/dev/null
then
echo "Generating ragel scanner"
ragel -G2 -o "$output" "$input"
else
echo "No ragel, leaving scanner intact"
fi
echo
;;
esac
case "$parser" in
(*.ly | *.lyy | *.ly*m4)
extCode=cc
input="${prefix}${parser}"
output="${parser%.*}.h"
# Pass -with-debug to wrap-lemon
[ -n "$optDebug" ] && optDebug="-with-debug"
# Additional message (eg, using m4 etc)
unset message
case "$parser" in (*m4) message=", using m4 filtering" ;; esac
if [ "$optRemove" = true ]
then
removeFile "$output" "lemon header"
elif [ "$optCode" = true ]
then
echo "Generating lemon parser code ($extCode)$message"
"$WM_PROJECT_DIR/wmake/scripts/wrap-lemon" $optDebug -e"$extCode" -s "$input"
else
echo "Generating lemon parser header$message"
"$WM_PROJECT_DIR/wmake/scripts/wrap-lemon" $optDebug -header -s "$input"
fi
echo
;;
esac
#------------------------------------------------------------------------------