diff -r 9d155da5b417 -r 671d66ba3af6 tools/unitCycles.hs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/unitCycles.hs Wed Nov 17 16:19:28 2010 +0300 @@ -0,0 +1,19 @@ +module Main where + +import PascalParser +import System +import Control.Monad +import Data.Either +import Data.List + +unident :: Identificator -> String +unident (Identificator s) = s + +extractUnits :: PascalUnit -> (String, [String]) +extractUnits (Program (Identificator name) (Implementation (Uses idents) _ _) _) = ("program " ++ name, map unident idents) +extractUnits (Unit (Identificator name) (Interface (Uses idents1) _) (Implementation (Uses idents2) _ _) _ _) = (name, map unident $ idents1 ++ idents2) + +main = do + fileNames <- getArgs + files <- mapM readFile fileNames + mapM_ (putStrLn . show . extractUnits) . rights . map parsePascalUnit $ files