diff options
author | Daniel Franke <franke@edf-online.de> | 2018-05-09 08:11:57 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2018-05-16 15:47:44 (GMT) |
commit | 7a33cfc1bce0a4946da166327515557b48d3a2ea (patch) | |
tree | ce70cf9bb4a081e23b477dfe46c41a9bad8e817a /Utilities/Scripts | |
parent | 3d382a494fd8d4aad1a4206559c316138441098d (diff) | |
download | CMake-7a33cfc1bce0a4946da166327515557b48d3a2ea.zip CMake-7a33cfc1bce0a4946da166327515557b48d3a2ea.tar.gz CMake-7a33cfc1bce0a4946da166327515557b48d3a2ea.tar.bz2 |
regenerate-parsers.bash: Add script to automate parser generation
This depends on
- a suitable flex version in PATH (currently 3.0.4)
- a suitable version of 'sed' in PATH (e.g. GNU sed)
Diffstat (limited to 'Utilities/Scripts')
-rwxr-xr-x | Utilities/Scripts/regenerate-parsers.bash | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/Utilities/Scripts/regenerate-parsers.bash b/Utilities/Scripts/regenerate-parsers.bash new file mode 100755 index 0000000..6fb35c0 --- /dev/null +++ b/Utilities/Scripts/regenerate-parsers.bash @@ -0,0 +1,37 @@ +#!/usr/bin/env bash + +set -e + +forced=1 +if [[ "${1}" = "make" ]]; then + forced=0 +fi + +pushd "${BASH_SOURCE%/*}/../../Source/LexerParser" > /dev/null + +for parser in \ + CommandArgument \ + DependsJava \ + Expr \ + Fortran +do + in_file=cm${parser}Parser.y + cxx_file=cm${parser}Parser.cxx + h_file=cm${parser}ParserTokens.h + prefix=cm${parser}_yy + + if [[ (${in_file} -nt ${cxx_file}) || (${in_file} -nt ${h_file}) || (${forced} -gt 0) ]]; then + echo "Generating Parser ${parser}" + bison --yacc --name-prefix=${prefix} --defines=${h_file} -o${cxx_file} ${in_file} + sed -i '/\/\* Else will try to reuse/ i\ +#if 0 +/^yyerrlab1:/ a\ +#endif +' ${cxx_file} + else + echo "Skipped generating Parser ${parser}" + fi +done + + +popd > /dev/null |