26 lines
700 B
Haskell
26 lines
700 B
Haskell
--- src/ParseLib2.hs.orig 2013-11-11 15:22:00 UTC
|
|
+++ src/ParseLib2.hs
|
|
@@ -32,6 +32,7 @@ module ParseLib2
|
|
opt, skipUntil, skipUntilOff,skipUntilParse,skipNest) where
|
|
|
|
import Data.Char
|
|
+import Control.Applicative (Alternative, empty, (<|>))
|
|
import Control.Monad
|
|
|
|
infixr 5 +++
|
|
@@ -62,6 +63,14 @@ instance MonadPlus Parser where
|
|
-- mplus :: Parser a -> Parser a -> Parser a
|
|
(P p) `mplus` (P q) = P (\pos inp -> (p pos inp ++ q pos inp))
|
|
|
|
+instance Applicative Parser where
|
|
+ pure = return
|
|
+ (<*>) = ap
|
|
+
|
|
+instance Alternative Parser where
|
|
+ empty = mzero
|
|
+ (<|>) = mplus
|
|
+
|
|
-- bits which donn't fit into Haskell's type classes just yet :-(
|
|
|
|
env :: Parser Pos
|