git.iko.soy/typeable/attoparsec
on master help sign in
Example fiddle faddle.
25fb8a4Bryan O'Sullivan
examples/Parsec_RFC2616.hs+9−3
@@ -1,4 +1,4 @@
1−{-# LANGUAGE BangPatterns, FlexibleContexts #-}
1+{-# LANGUAGE BangPatterns, CPP, FlexibleContexts #-}
2
2
3module Main (main) where
3module Main (main) where
4
4
@@ -6,13 +6,19 @@ import Control.Applicative
6import Control.Exception (bracket)
6import Control.Exception (bracket)
7import System.Environment (getArgs)
7import System.Environment (getArgs)
8import System.IO (hClose, openFile, IOMode(ReadMode))
8import System.IO (hClose, openFile, IOMode(ReadMode))
9−import Text.Parsec.ByteString (Parser, parseFromFile)
10import Text.Parsec.Char (anyChar, char, satisfy, string)
9import Text.Parsec.Char (anyChar, char, satisfy, string)
11import Text.Parsec.Combinator (many1, manyTill, skipMany1)
10import Text.Parsec.Combinator (many1, manyTill, skipMany1)
12import Text.Parsec.Prim hiding (many, token, (<|>))
11import Text.Parsec.Prim hiding (many, token, (<|>))
13−import qualified Data.ByteString as B
14import qualified Data.IntSet as S
12import qualified Data.IntSet as S
15
13
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+
16token :: Stream s m Char => ParsecT s u m Char
22token :: Stream s m Char => ParsecT s u m Char
17token = satisfy $ \c -> S.notMember (fromEnum c) set
23token = satisfy $ \c -> S.notMember (fromEnum c) set
18 where set = S.fromList . map fromEnum $ ['\0'..'\31'] ++ "()<>@,;:\\\"/[]?={} \t" ++ ['\128'..'\255']
24 where set = S.fromList . map fromEnum $ ['\0'..'\31'] ++ "()<>@,;:\\\"/[]?={} \t" ++ ['\128'..'\255']
examples/TestRFC2616.hs+1−1
@@ -7,7 +7,7 @@ import System.Environment
7import qualified Data.ByteString.Char8 as B
7import qualified Data.ByteString.Char8 as B
8import Data.Attoparsec
8import Data.Attoparsec
9
9
10−refill h = B.hGet h 4096
10+refill h = B.hGet h (4*1024)
11
11
12listy file h = do
12listy file h = do
13 r <- parseWith (refill h) (many request) =<< refill h
13 r <- parseWith (refill h) (many request) =<< refill h