#!/bin/bash if [[ $# -lt 2 ]]; then echo "Usage: $0 dictionary1 dictionary2" exit 1 fi echo "Building tries A, B" rm -f 1.dfa 2.dfa 1m.dfa 2m.dfa ./tree "$1" >1.dfa ./tree "$2" >2.dfa echo "Building minimal DFAs AM, BM" ./minimize 1.dfa >1m.dfa ./minimize 2.dfa >2m.dfa # if [[ -x union ]]; then echo "Checking union..." # echo " building reference file..." # rm -f reference # sort -u "$1" "$2" >reference # echo -n " running (A | B) " # ./union 1.dfa 2.dfa | language | sort | diff -q - reference # if [[ $? -eq 0 ]]; then echo " Ok" # fi # echo -n " running (AM | BM) " # ./union 1m.dfa 2m.dfa | language | sort | diff -q - reference # if [[ $? -eq 0 ]]; then echo " Ok" # fi # echo -n " running (B | A) " # ./union 2.dfa 1.dfa | language | sort | diff -q - reference # if [[ $? -eq 0 ]]; then echo " Ok" # fi # echo -n " running (BM | AM) " # ./union 2m.dfa 1m.dfa | language | sort | diff -q - reference # if [[ $? -eq 0 ]]; then echo " Ok" # fi # fi # if [[ -x intersection ]]; then echo "Checking intersection..." # echo " building reference file..." # rm -f reference # grep -w -F -f "$1" "$2" | sort >reference # echo -n " running (A & B) " # ./intersection 1.dfa 2.dfa | language | sort | diff -q - reference # if [[ $? -eq 0 ]]; then echo " Ok" # fi # echo -n " running (AM & BM) " # ./intersection 1m.dfa 2m.dfa | language | sort | diff -q - reference # if [[ $? -eq 0 ]]; then echo " Ok" # fi # echo -n " running (B & A) " # ./intersection 2.dfa 1.dfa | language | sort | diff -q - reference # if [[ $? -eq 0 ]]; then echo " Ok" # fi # echo -n " running (BM & AM) " # ./intersection 2m.dfa 1m.dfa | language | sort | diff -q - reference # if [[ $? -eq 0 ]]; then echo " Ok" # fi # fi # if [[ -x difference ]]; then echo "Checking difference..." # echo "building reference file..." # rm -f reference # grep -v -w -F -f "$1" "$2" | sort -u >reference # echo -n " running (B \ A) " # ./difference 2.dfa 1.dfa | language | sort | diff -q - reference # if [[ $? -eq 0 ]]; then echo " Ok" # fi # echo -n " running (BM \ AM) " # ./difference 2m.dfa 1m.dfa | language | sort | diff -q - reference # if [[ $? -eq 0 ]]; then echo " Ok" # fi # echo "building reference file..." # rm -f reference # grep -v -w -F -f "$2" "$1" | sort -u >reference # echo -n " running (A \ B) " # ./difference 1.dfa 2.dfa | language | sort | diff -q - reference # if [[ $? -eq 0 ]]; then echo " Ok" # fi # echo -n " running (AM \ BM) " # ./difference 1m.dfa 2m.dfa | language | sort | diff -q - reference # if [[ $? -eq 0 ]]; then echo " Ok" # fi # fi if [[ -x difference ]]; then echo "Checking symmetrical difference..." echo "building reference file..." rm -f reference sort -u "$1" "$2" >union.tmp grep -w -F -f "$1" "$2" | sort >intersection.tmp grep -v -w -F -f "intersection.tmp" "union.tmp" | sort -u >reference echo -n " running (A | B) \ (A & B) " ./sym_diff 1.dfa 2.dfa | language | sort | diff -q - reference if [[ $? -eq 0 ]]; then echo " Ok" fi echo -n " running (AM | BM) \ (AM & BM) " ./sym_diff 1m.dfa 2m.dfa | language | sort | diff -q - reference if [[ $? -eq 0 ]]; then echo " Ok" fi echo -n " running (B | A) \ (B & A) " ./sym_diff 2.dfa 1.dfa | language | sort | diff -q - reference if [[ $? -eq 0 ]]; then echo " Ok" fi echo -n " running (BM | AM) \ (BM & AM) " ./sym_diff 2m.dfa 1m.dfa | language | sort | diff -q - reference if [[ $? -eq 0 ]]; then echo " Ok" fi fi #rm -f 1.dfa 2.dfa 1m.dfa 2m.dfa reference union.tmp intersection.tmp