summaryrefslogtreecommitdiff
path: root/tiger-compiler/src/parse/generate-prelude.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tiger-compiler/src/parse/generate-prelude.sh')
-rwxr-xr-xtiger-compiler/src/parse/generate-prelude.sh31
1 files changed, 31 insertions, 0 deletions
diff --git a/tiger-compiler/src/parse/generate-prelude.sh b/tiger-compiler/src/parse/generate-prelude.sh
new file mode 100755
index 0000000..d81d28b
--- /dev/null
+++ b/tiger-compiler/src/parse/generate-prelude.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+[ -z "$1" ] && echo "$0: Missing input file" && exit
+[ -z "$2" ] && echo "$0: Missing output file" && exit
+
+input=$1
+output=$2
+
+awk 'BEGIN {
+ print("#include \"parse/tiger-driver.hh\"");
+ print("");
+ print("namespace parse");
+ print("{");
+ print(" const char* TigerDriver::prelude () const");
+ print(" {");
+ print(" return");
+ printf("R\"(");
+ }
+ /^#(<<|>>)/ {
+ next;
+ }
+ {
+ print($0);
+ }
+ END {
+ print(")\";");
+ print(" }");
+ print("} // namespace parse");
+ }' "$input" > "$output".tmp
+
+mv "$output".tmp "$output"