-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathverify
executable file
·51 lines (41 loc) · 1.85 KB
/
verify
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/bin/bash
#
# AST Verifier for SPL compiler
#
# See: https://github.com/X4/CS2103-Tools
# Author: Fernandos
REF="parser_referenz.txt"
TEST="parser_test.txt"
OUTPUT="parser_unterschiede.txt"
echo -e "\n\033[1;33m$(cat parser.output | head -1)\033[0m"
rm -f $REF $TEST $OUTPUT
shopt -s nullglob; f=(Tests/*.absyn);
if ((! ${#f[@]})); then
echo -e '\n\E[34mErstelle einmalig Referenz Syntaxbäume in Tests/*.absyn für schnelleren vergleich zwischen Referenz und Test.\E[0m\n'
for f in Tests/*.spl ;
do ./splRef --absyn "$f" /dev/null > "${f%.spl}.absyn" ;
done;
fi
echo -e "\n\033[1;31mVermutlich Fehler in:\033[0m"
for file in Tests/*.spl ;
do
echo "-- Compiling $file --" >> $REF
./splRef --absyn $file t >> $REF
echo "-- Compiling $file --" >> $TEST
./spl --absyn $file /dev/null >> $TEST
./spl --absyn $file /dev/null | cmp -s /dev/stdin "${file%.spl}.absyn" || echo -e "$((++not_passed))] \033[1;31mE:\033[0m \033[1;34m$file\033[0m"
done
diff -s --suppress-common-lines $REF $TEST > $OUTPUT
spl=(Tests/*.spl);
echo -e "\n\033[0;31m $not_passed Programme bedürfen Ihrer Aufmerksamkeit.\033[0m"
echo -e "\033[0;32m $((${#spl[@]} - $not_passed)) Programme laufen ohne Fehler.\033[0m"
STRING=$( sed -n '1p' $OUTPUT )
if [ "$STRING" = "Dateien $REF und $TEST sind identisch." ] ||
[ "$STRING" = "Files $REF and $TEST are identical" ]; then
echo -e "\n\n\n\033[42m\033[1;37mGlückwunsch :-) Die abstrakten Syntaxbäume sind identisch!!!\033[0m"
else
echo -e "\n\033[1;37mReferenz und eigene Implementierung liefern unterschiedliche Ausgaben ..."
echo -e "Genaues steht in $OUTPUT. Tipp: parser.output analysieren.\033[0m\n"
echo -e "\033[33m$TEST\033[0m\033[1;30m enthält die ASTs generiert durch Ihren SPL-Compiler.\033[0m"
echo -e "\033[33m$REF\033[0m\033[1;30m enthält die ASTs generiert durch Referenz-Compiler.\033[0m"
fi