mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-08-22 09:57:41 +00:00
parent
f81dcad238
commit
54b02254ca
@ -1927,6 +1927,9 @@ AC_CONFIG_FILES([src/share/yang/modules/Makefile])
|
|||||||
AC_CONFIG_FILES([tools/Makefile])
|
AC_CONFIG_FILES([tools/Makefile])
|
||||||
AC_CONFIG_FILES([tools/path_replacer.sh],
|
AC_CONFIG_FILES([tools/path_replacer.sh],
|
||||||
[chmod +x tools/path_replacer.sh])
|
[chmod +x tools/path_replacer.sh])
|
||||||
|
AC_CONFIG_FILES([tools/extract_bnf.sh],
|
||||||
|
[chmod +x tools/extract_bnf.sh])
|
||||||
|
|
||||||
|
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
|
|
||||||
|
1
tools/.gitignore
vendored
1
tools/.gitignore
vendored
@ -1 +1,2 @@
|
|||||||
|
/extract_bnf.sh
|
||||||
/path_replacer.sh
|
/path_replacer.sh
|
||||||
|
45
tools/extract_bnf.sh.in
Executable file
45
tools/extract_bnf.sh.in
Executable file
@ -0,0 +1,45 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Copyright (C) 2019 Internet Systems Consortium, Inc. ("ISC")
|
||||||
|
#
|
||||||
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
|
# Get BNF grammars from bison files
|
||||||
|
|
||||||
|
# Check if there is one argument only
|
||||||
|
if [ $# -ne 1]; then
|
||||||
|
echo "extract_bnf.sh <bison-file-base-name>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get the output file
|
||||||
|
base=$1
|
||||||
|
output=
|
||||||
|
|
||||||
|
if [ -f "${base}.output" ]; then
|
||||||
|
output="${base}.output"
|
||||||
|
elif [ -f "${base}.yy" ]; then
|
||||||
|
@YACC@ -v "${base}.yy" -o output
|
||||||
|
rm -f output output.h *.hh
|
||||||
|
mv output.output /tmp/output
|
||||||
|
output=/tmp/output
|
||||||
|
else
|
||||||
|
echo "cannot find ${base}.yy"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Process the output file
|
||||||
|
# - extract the grammar part
|
||||||
|
# - remove line numbers
|
||||||
|
# - remove intermediate productions
|
||||||
|
# - remove intermediate non-terminals
|
||||||
|
# - squeeze multiple blank lines
|
||||||
|
|
||||||
|
cat $output |\
|
||||||
|
@AWK@ '/^Terminal/ { exit }; // { print }' |\
|
||||||
|
@AWK@ '// { gsub("^ +[0-9]+ ", ""); print }' |\
|
||||||
|
@AWK@ '/^\$@[0-9]+:/ { next }; // { print }' |\
|
||||||
|
@AWK@ '// { gsub(" \\$@[0-9]+ ", " ") ; print }' |\
|
||||||
|
cat -s
|
Loading…
x
Reference in New Issue
Block a user