parent
c2759c27cd
commit
876ba72328
@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
BUILD_DIR="$ROOT_DIR/build"
|
||||
ANTLR_DIR="$BUILD_DIR/generated/antlr4"
|
||||
JAR_PATH="$ROOT_DIR/third_party/antlr-4.13.2-complete.jar"
|
||||
GRAMMAR_PATH="$ROOT_DIR/src/antlr4/SysY.g4"
|
||||
COMPILER="$BUILD_DIR/bin/compiler"
|
||||
|
||||
echo "[1/4] Generating ANTLR sources..."
|
||||
mkdir -p "$ANTLR_DIR"
|
||||
java -jar "$JAR_PATH" \
|
||||
-Dlanguage=Cpp \
|
||||
-visitor -no-listener \
|
||||
-Xexact-output-dir \
|
||||
-o "$ANTLR_DIR" \
|
||||
"$GRAMMAR_PATH"
|
||||
|
||||
echo "[2/4] Configuring CMake..."
|
||||
cmake -S "$ROOT_DIR" -B "$BUILD_DIR" -DCMAKE_BUILD_TYPE=Release
|
||||
|
||||
echo "[3/4] Building project..."
|
||||
cmake --build "$BUILD_DIR" -j "$(nproc)"
|
||||
|
||||
echo "[4/4] Running parse-tree tests..."
|
||||
failed=0
|
||||
|
||||
for case_file in "$ROOT_DIR"/test/test_case/functional/*.sy "$ROOT_DIR"/test/test_case/performance/*.sy; do
|
||||
if ! "$COMPILER" --emit-parse-tree "$case_file" >/dev/null 2>/tmp/lab1_parse.err; then
|
||||
echo "FAIL: $case_file"
|
||||
cat /tmp/lab1_parse.err
|
||||
failed=1
|
||||
else
|
||||
echo "PASS: $case_file"
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ "$failed" -ne 0 ]]; then
|
||||
echo "Batch test finished with failures."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Batch test passed."
|
||||
Loading…
Reference in new issue