Main.hs revision 30bdb2f7ef75c39358b78a838d6f40db82895a62
7abd0c58a5ce51db13f93de82407b2188d55d298Christian Maedermodule Main where
7abd0c58a5ce51db13f93de82407b2188d55d298Christian Maeder
14a1af9d9909dc47dc7fee6b0170b7ac0aef85daChristian Maederimport Token
97018cf5fa25b494adffd7e9b4e87320dae6bf47Christian Maederimport BasicItem
c00adad2e9459b422dee09e3a2bddba66b433bb7Christian Maederimport LocalEnv
b4fbc96e05117839ca409f5f20f97b3ac872d1edTill Mossakowskiimport Parsec
7abd0c58a5ce51db13f93de82407b2188d55d298Christian Maederimport ParsecPos
2ac1742771a267119f1d839054b5e45d0a468085Christian Maederimport System
7abd0c58a5ce51db13f93de82407b2188d55d298Christian Maeder
35597678f1c9da703de8d0b6b66ea63247ebe884Christian Maedermain = do {l <- getArgs;
c00adad2e9459b422dee09e3a2bddba66b433bb7Christian Maeder if null l then print "missing argument"
c00adad2e9459b422dee09e3a2bddba66b433bb7Christian Maeder else parseSpec (head l)
e8ffec0fa3d3061061bdc16e44247b9cf96b050fChristian Maeder-- else checkIds (head l)
c00adad2e9459b422dee09e3a2bddba66b433bb7Christian Maeder }
e8ffec0fa3d3061061bdc16e44247b9cf96b050fChristian Maeder
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maeder
e8ffec0fa3d3061061bdc16e44247b9cf96b050fChristian MaedercheckIds fileName = do { s <- readFile fileName
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maeder ; putStr (unlines (scanLines (lines s) 1))
14a1af9d9909dc47dc7fee6b0170b7ac0aef85daChristian Maeder }
ad270004874ce1d0697fb30d7309f180553bb315Christian Maeder
ad270004874ce1d0697fb30d7309f180553bb315Christian MaederscanLines [] _ = []
4ef2a978e66e2246ff0b7f00c77deb7aabb28b8eChristian MaederscanLines (x:l) n = (scanId x n) : (scanLines l (n+1))
8197d0be8b81692f311ad5ca34e125e2cf9eecb8Christian Maeder
e8ffec0fa3d3061061bdc16e44247b9cf96b050fChristian MaederscanId line n = let pos = setSourceLine (initialPos "") n
ccf3de3d66b521a260e5c22d335c64a48e3f0195Christian Maeder parser = do { setPosition pos
d42a01c4eb6892fe23ca9eff107bb29f4a229480Christian Maeder ; i <- parseId
b1bd8688a1ce545444792a307412711c2c61df5fChristian Maeder ; eof
c18e9c3c6d5039618f1f2c05526ece84c7794ea3Christian Maeder ; return i
35597678f1c9da703de8d0b6b66ea63247ebe884Christian Maeder }
c18e9c3c6d5039618f1f2c05526ece84c7794ea3Christian Maeder in result (parse parser "" line)
2ac1742771a267119f1d839054b5e45d0a468085Christian Maeder
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maeder
36c6cc568751e4235502cfee00ba7b597dae78dcChristian MaederparseSpec fileName = do { r <- parseFromFile (basicSpec empty) fileName
35597678f1c9da703de8d0b6b66ea63247ebe884Christian Maeder ; putStrLn (result r)
81946e2b3f6dde6167f48769bd02c7a634736856Christian Maeder }
2ac1742771a267119f1d839054b5e45d0a468085Christian Maeder
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maederresult r = case r of Left err -> "parse error at " ++ show err ++ "\n"
2ac1742771a267119f1d839054b5e45d0a468085Christian Maeder Right x -> show x
36c6cc568751e4235502cfee00ba7b597dae78dcChristian Maeder
81946e2b3f6dde6167f48769bd02c7a634736856Christian Maeder