From 168b97a5c52560b3fe892bafeb1cc719ce3d0514 Mon Sep 17 00:00:00 2001
From: Matthias Maennich <matthias@maennich.net>
Date: Tue, 29 Aug 2017 14:58:34 +0200
Subject: Lexer: add a helper script to automate generating the lexers

note: this depends on
	- a suitable flex version in PATH (currently 2.6.4)
	- a suitable version of 'sed' in PATH (e.g. GNU sed)

Signed-off-by: Matthias Maennich <matthias@maennich.net>
---
 Utilities/Scripts/regenerate-lexers.bash | 33 ++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)
 create mode 100755 Utilities/Scripts/regenerate-lexers.bash

diff --git a/Utilities/Scripts/regenerate-lexers.bash b/Utilities/Scripts/regenerate-lexers.bash
new file mode 100755
index 0000000..22b681f
--- /dev/null
+++ b/Utilities/Scripts/regenerate-lexers.bash
@@ -0,0 +1,33 @@
+#!/usr/bin/env bash
+
+set -e
+
+pushd "${BASH_SOURCE%/*}/../../Source/LexerParser" > /dev/null
+
+for lexer in            \
+    CommandArgument     \
+    DependsJava         \
+    Expr                \
+    Fortran
+do
+    echo "Generating Lexer ${lexer}"
+    flex --nounistd -DFLEXINT_H --noline --header-file=cm${lexer}Lexer.h -ocm${lexer}Lexer.cxx cm${lexer}Lexer.in.l
+    sed -i 's/\s*$//'                       cm${lexer}Lexer.h cm${lexer}Lexer.cxx   # remove trailing whitespaces
+    sed -i '${/^$/d;}'                      cm${lexer}Lexer.h cm${lexer}Lexer.cxx   # remove blank line at the end
+    sed -i '1i#include "cmStandardLexer.h"' cm${lexer}Lexer.cxx                     # add cmStandardLexer.h include
+done
+
+
+# these lexers (at the moment only the ListFileLexer) are compiled as C and do not generate a header
+for lexer in ListFile
+do
+
+    echo "Generating Lexer ${lexer}"
+    flex --nounistd -DFLEXINT_H --noline -ocm${lexer}Lexer.c cm${lexer}Lexer.in.l
+    sed -i 's/\s*$//'                       cm${lexer}Lexer.c   # remove trailing whitespaces
+    sed -i '${/^$/d;}'                      cm${lexer}Lexer.c   # remove blank line at the end
+    sed -i '1i#include "cmStandardLexer.h"' cm${lexer}Lexer.c   # add cmStandardLexer.h include
+
+done
+
+popd > /dev/null
-- 
cgit v0.12