git.iko.soy/typeable/attoparsec
on master help sign in
Example fiddle faddle.
commit25fb8a49f771daab36d6e20a474fe630e328b4dd authorBryan O'Sullivan <bos@serpentine.com> dateThu 4 Mar 2010, 21:56 (17 years ago) parentad462e7
2 files changed+10−4
examples/Parsec_RFC2616.hs+9−3 examples/TestRFC2616.hs+1−1
examples/Parsec_RFC2616.hs+9−3
@@ -1,4 +1,4 @@
1−{-# LANGUAGE BangPatterns, FlexibleContexts #-}
1+{-# LANGUAGE BangPatterns, CPP, FlexibleContexts #-}
22
33module Main (main) where
44
@@ -6,13 +6,19 @@ import Control.Applicative
66import Control.Exception (bracket)
77import System.Environment (getArgs)
88import System.IO (hClose, openFile, IOMode(ReadMode))
9−import Text.Parsec.ByteString (Parser, parseFromFile)
109import Text.Parsec.Char (anyChar, char, satisfy, string)
1110import Text.Parsec.Combinator (many1, manyTill, skipMany1)
1211import Text.Parsec.Prim hiding (many, token, (<|>))
13−import qualified Data.ByteString as B
1412import qualified Data.IntSet as S
1513
14+#if 1
15+import Text.Parsec.ByteString.Lazy (Parser, parseFromFile)
16+import qualified Data.ByteString.Lazy as B
17+#else
18+import Text.Parsec.ByteString (Parser, parseFromFile)
19+import qualified Data.ByteString as B
20+#endif
21+
1622token :: Stream s m Char => ParsecT s u m Char
1723token = satisfy $ \c -> S.notMember (fromEnum c) set
1824 where set = S.fromList . map fromEnum $ ['\0'..'\31'] ++ "()<>@,;:\\\"/[]?={} \t" ++ ['\128'..'\255']
examples/TestRFC2616.hs+1−1
@@ -7,7 +7,7 @@ import System.Environment
77import qualified Data.ByteString.Char8 as B
88import Data.Attoparsec
99
10−refill h = B.hGet h 4096
10+refill h = B.hGet h (4*1024)
1111
1212listy file h = do
1313 r <- parseWith (refill h) (many request) =<< refill h