From 03d38eb3190eb5e51fb18847fe0792013285bde5 Mon Sep 17 00:00:00 2001 From: Jed Barber Date: Tue, 8 Apr 2014 15:06:40 +1000 Subject: Reorganising source code --- src/Compare.hs | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/Compare.hs (limited to 'src/Compare.hs') diff --git a/src/Compare.hs b/src/Compare.hs new file mode 100644 index 0000000..b60250f --- /dev/null +++ b/src/Compare.hs @@ -0,0 +1,43 @@ +import System.Environment( getArgs ) +import Text.Printf +import Library.Parse +import Library.Semantic +import qualified Library.Stack as Stack +import qualified Data.Map as Map +import qualified Data.Set as Set +import Data.Maybe + + +main = do + args <- getArgs + listA <- getLines (args!!0) + listB <- getLines (args!!1) + + let result = do resultA <- eval (map stripReturn listA) + resultB <- eval (map stripReturn listB) + let (sA,dA,aA,tA) = resultA + (sB,dB,aB,tB) = resultB + + sA_diff = Stack.diff sA sB + sB_diff = Stack.diff sB sA + + dA_diff = dA Map.\\ dB + dB_diff = dB Map.\\ dA + + aA_diff = aA Set.\\ aB + aB_diff = aB Set.\\ aA + + tA_diff = tA Set.\\ tB + tB_diff = tB Set.\\ tA + return (Just (sA_diff,dA_diff,aA_diff,tA_diff), + Just (sB_diff,dB_diff,aB_diff,tB_diff)) + + output = if (isNothing result) + then "Error in article files\n" + else let (diff_A, diff_B) = fromJust result + in if (diff_A == diff_B) + then "Articles identical\n" + else (args!!0) ++ " has:\n" ++ (fromJust . machineToString $ diff_A) ++ "\n" ++ + (args!!1) ++ " has:\n" ++ (fromJust . machineToString $ diff_B) ++ "\n" + + printf output -- cgit