hunk ./incremental-parser/Benchmarks/CSV.hs 23 -import Control.Applicative (Alternative, (<|>), many) +import Control.Applicative (Alternative, (<$>), (<*>), (<*), (*>), (<|>), many, pure) hunk ./incremental-parser/Benchmarks/CSV.hs 26 -import Data.Monoid ((<>)) +import Data.Monoid (Monoid, (<>), mappend, mconcat, mempty) hunk ./incremental-parser/Control/Applicative/Monoid.hs 24 -import Control.Applicative (Applicative (pure, (<*>)), Alternative ((<|>), some, many), liftA2) +import Control.Applicative (Applicative (pure, (<*>)), Alternative ((<|>), some, many), (<$>)) addfile ./incremental-parser/IncrementalConduit.hs hunk ./incremental-parser/IncrementalConduit.hs 1 + +import Control.Applicative (empty, many, optional, (<$>), (<|>)) +import Control.Monad.Trans (lift) +import Data.Void (Void) +import Data.Conduit +import Text.ParserCombinators.Incremental.LeftBiasedLocal + +main = upstream $$ parseC + +upstream :: ConduitM () String IO () +upstream = do yield "hello" + yield "yoyo" + yield "yowait" + yield "bye" + yield "hello" + yield "bye" + yield "hello" + yield "hello" + yield "bye" + yield "yo" + +parseC :: ConduitM String Void IO () +parseC = parseWith parser + +parseWith :: Parser String [Either String (String, [String], Maybe String, String)] -> ConduitM String Void IO () +parseWith p = do next <- await + case next + of Just s -> do let (r, p') = resultPrefix (feed s p) + lift (mapM print r) + parseWith p' + Nothing -> lift (putStrLn $ "Final result: " ++ show (completeResults (feedEof p))) + +parser :: Parser String [Either String (String, [String], Maybe String, String)] +parser = myMany $ ( + do greeting <- string "hello" + more <- many (string "yo") + w <- optional (string "wait") + end <- string "bye" + return $ Right (greeting, more, w, end) + <|> + Left <$> string "hello" + <|> + Left <$> concatSome (notFollowedBy (string "hello" <|> eof) >< anyToken) + ) +-- Left <$> manyTill anyToken (string "hello") hunk ./incremental-parser/Text/ParserCombinators/Incremental.hs 45 -import Control.Applicative (Applicative (pure, (<*>), (*>), (<*)), Alternative ((<|>))) +import Control.Applicative (Applicative (pure, (<*>), (*>), (<*)), Alternative ((<|>)), (<$>)) hunk ./incremental-parser/Benchmarks/CSV.hs 26 -import Data.Monoid (Monoid, (<>), mappend, mconcat, mempty) +import Data.Monoid (Monoid, (<>), mappend, mempty) hunk ./incremental-parser/Benchmarks/CSV.hs 67 - <*> (mconcat - <$> many (mappend <$> dquotes <*> insideQuotes)) + <*> concatMany (mappend <$> dquotes <*> insideQuotes) hunk ./coroutine-enumerator.cabal.package 27 - GHC-prof-options: -auto-all hunk ./coroutine-iteratee.cabal.package 27 - GHC-prof-options: -auto-all hunk ./incremental-parser/incremental-parser.cabal 29 - GHC-prof-options: -auto-all hunk ./monad-coroutine/monad-coroutine.cabal 27 - GHC-prof-options: -auto-all hunk ./monad-parallel/monad-parallel.cabal 27 - GHC-prof-options: -auto-all hunk ./scc.cabal.package 71 - GHC-prof-options: -auto-all move ./scc.cabal.package ./scc.cabal addfile ./incremental-parser/Setup.lhs hunk ./incremental-parser/Setup.lhs 1 +#! /usr/bin/env runhaskell + +> import Distribution.Simple +> main = defaultMain addfile ./monad-coroutine/Setup.lhs hunk ./monad-coroutine/Setup.lhs 1 +#! /usr/bin/env runhaskell + +> import Distribution.Simple +> main = defaultMain addfile ./monad-parallel/Setup.lhs hunk ./monad-parallel/Setup.lhs 1 +#! /usr/bin/env runhaskell + +> import Distribution.Simple +> main = defaultMain addfile ./monoid-subclasses/Setup.lhs hunk ./monoid-subclasses/Setup.lhs 1 +#! /usr/bin/env runhaskell + +> import Distribution.Simple +> main = defaultMain