Browse Source

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)
Daniel Franke 7 years ago
parent
commit
7a33cfc1bc
1 changed files with 37 additions and 0 deletions
  1. 37 0
      Utilities/Scripts/regenerate-parsers.bash

+ 37 - 0
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