{-# LANGUAGE Safe #-} module Text.Gigaparsec.Expr.Infix (module Text.Gigaparsec.Expr.Infix) where import Text.Gigaparsec (Parsec, (<|>), (<**>)) infixl1 :: (a -> b) -> Parsec a -> Parsec (b -> a -> b) -> Parsec b infixl1 :: forall a b. (a -> b) -> Parsec a -> Parsec (b -> a -> b) -> Parsec b infixl1 a -> b wrap Parsec a p Parsec (b -> a -> b) op = (a -> b) -> Parsec a -> Parsec (b -> b) -> Parsec b forall a b. (a -> b) -> Parsec a -> Parsec (b -> b) -> Parsec b postfix a -> b wrap Parsec a p ((b -> a -> b) -> a -> b -> b forall a b c. (a -> b -> c) -> b -> a -> c flip ((b -> a -> b) -> a -> b -> b) -> Parsec (b -> a -> b) -> Parsec (a -> b -> b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Parsec (b -> a -> b) op Parsec (a -> b -> b) -> Parsec a -> Parsec (b -> b) forall a b. Parsec (a -> b) -> Parsec a -> Parsec b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Parsec a p) infixr1 :: (a -> b) -> Parsec a -> Parsec (a -> b -> b) -> Parsec b infixr1 :: forall a b. (a -> b) -> Parsec a -> Parsec (a -> b -> b) -> Parsec b infixr1 a -> b wrap Parsec a p Parsec (a -> b -> b) op = Parsec a p Parsec a -> Parsec (a -> b) -> Parsec b forall (f :: * -> *) a b. Applicative f => f a -> f (a -> b) -> f b <**> ((a -> b -> b) -> b -> a -> b forall a b c. (a -> b -> c) -> b -> a -> c flip ((a -> b -> b) -> b -> a -> b) -> Parsec (a -> b -> b) -> Parsec (b -> a -> b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Parsec (a -> b -> b) op Parsec (b -> a -> b) -> Parsec b -> Parsec (a -> b) forall a b. Parsec (a -> b) -> Parsec a -> Parsec b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> (a -> b) -> Parsec a -> Parsec (a -> b -> b) -> Parsec b forall a b. (a -> b) -> Parsec a -> Parsec (a -> b -> b) -> Parsec b infixr1 a -> b wrap Parsec a p Parsec (a -> b -> b) op Parsec (a -> b) -> Parsec (a -> b) -> Parsec (a -> b) forall a. Parsec a -> Parsec a -> Parsec a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> (a -> b) -> Parsec (a -> b) forall a. a -> Parsec a forall (f :: * -> *) a. Applicative f => a -> f a pure a -> b wrap) infixn1 :: (a -> b) -> Parsec a -> Parsec (a -> a -> b) -> Parsec b infixn1 :: forall a b. (a -> b) -> Parsec a -> Parsec (a -> a -> b) -> Parsec b infixn1 a -> b wrap Parsec a p Parsec (a -> a -> b) op = Parsec a p Parsec a -> Parsec (a -> b) -> Parsec b forall (f :: * -> *) a b. Applicative f => f a -> f (a -> b) -> f b <**> ((a -> a -> b) -> a -> a -> b forall a b c. (a -> b -> c) -> b -> a -> c flip ((a -> a -> b) -> a -> a -> b) -> Parsec (a -> a -> b) -> Parsec (a -> a -> b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Parsec (a -> a -> b) op Parsec (a -> a -> b) -> Parsec a -> Parsec (a -> b) forall a b. Parsec (a -> b) -> Parsec a -> Parsec b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Parsec a p Parsec (a -> b) -> Parsec (a -> b) -> Parsec (a -> b) forall a. Parsec a -> Parsec a -> Parsec a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> (a -> b) -> Parsec (a -> b) forall a. a -> Parsec a forall (f :: * -> *) a. Applicative f => a -> f a pure a -> b wrap) prefix :: (a -> b) -> Parsec (b -> b) -> Parsec a -> Parsec b prefix :: forall a b. (a -> b) -> Parsec (b -> b) -> Parsec a -> Parsec b prefix a -> b wrap Parsec (b -> b) op Parsec a p = Parsec (b -> b) op Parsec (b -> b) -> Parsec b -> Parsec b forall a b. Parsec (a -> b) -> Parsec a -> Parsec b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> (a -> b) -> Parsec (b -> b) -> Parsec a -> Parsec b forall a b. (a -> b) -> Parsec (b -> b) -> Parsec a -> Parsec b prefix a -> b wrap Parsec (b -> b) op Parsec a p Parsec b -> Parsec b -> Parsec b forall a. Parsec a -> Parsec a -> Parsec a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> a -> b wrap (a -> b) -> Parsec a -> Parsec b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Parsec a p postfix :: (a -> b) -> Parsec a -> Parsec (b -> b) -> Parsec b postfix :: forall a b. (a -> b) -> Parsec a -> Parsec (b -> b) -> Parsec b postfix a -> b wrap Parsec a p Parsec (b -> b) op = a -> b wrap (a -> b) -> Parsec a -> Parsec b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Parsec a p Parsec b -> Parsec (b -> b) -> Parsec b forall (f :: * -> *) a b. Applicative f => f a -> f (a -> b) -> f b <**> Parsec (b -> b) rest where rest :: Parsec (b -> b) rest = ((b -> b) -> (b -> b) -> b -> b) -> (b -> b) -> (b -> b) -> b -> b forall a b c. (a -> b -> c) -> b -> a -> c flip (b -> b) -> (b -> b) -> b -> b forall b c a. (b -> c) -> (a -> b) -> a -> c (.) ((b -> b) -> (b -> b) -> b -> b) -> Parsec (b -> b) -> Parsec ((b -> b) -> b -> b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Parsec (b -> b) op Parsec ((b -> b) -> b -> b) -> Parsec (b -> b) -> Parsec (b -> b) forall a b. Parsec (a -> b) -> Parsec a -> Parsec b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Parsec (b -> b) rest Parsec (b -> b) -> Parsec (b -> b) -> Parsec (b -> b) forall a. Parsec a -> Parsec a -> Parsec a forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> (b -> b) -> Parsec (b -> b) forall a. a -> Parsec a forall (f :: * -> *) a. Applicative f => a -> f a pure b -> b forall a. a -> a id