too lazy parsing?

Previous Topic Next Topic
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

too lazy parsing?

Kees Bleijenberg
module Main where


import Text.ParserCombinators.Parsec (many,many1,string, Parser, parse)

import System.IO (IOMode(..),hClose,openFile,hGetContents,hPutStrLn)


parseFile hOut fn = do

                        handle <- openFile fn ReadMode

                        cont <- hGetContents handle

                        print cont

                        let res = parse (many (string "blah")) "" cont

                        hClose handle                    

                        case res of

                            (Left err) -> hPutStrLn hOut $ "Error: " ++
(show err)

                            (Right goodRes) -> mapM_ (hPutStrLn hOut)


main = do  

            hOut <- openFile "outp.txt" WriteMode

            mapM (parseFile hOut) ["inp.txt"]

            hClose hOut


I'am writing a program that parses a lot of files. Above is the simplest
program I can think of that demonstrates my problem.

The program above parses inp.txt.  Inp.txt has only the word blah in it.
The output is saved in outp.txt. This file contains the word blah after
running the program. if I comment out the line 'print cont' nothing is saved
in outp.txt.  

If I comment out 'print cont' and replace many with many1 in the following
line, it works again?

Can someone explain to me what is going  on?



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>