{-# 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 = forall a b. (a -> b) -> Parsec a -> Parsec (b -> b) -> Parsec b postfix a -> b wrap Parsec a p (forall a b c. (a -> b -> c) -> b -> a -> c flip forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Parsec (b -> a -> b) op 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 forall (f :: * -> *) a b. Applicative f => f a -> f (a -> b) -> f b <**> (forall a b c. (a -> b -> c) -> b -> a -> c flip forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Parsec (a -> b -> b) op forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f 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 forall (f :: * -> *) a. Alternative f => f a -> f a -> f 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 forall (f :: * -> *) a b. Applicative f => f a -> f (a -> b) -> f b <**> (forall a b c. (a -> b -> c) -> b -> a -> c flip forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Parsec (a -> a -> b) op forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Parsec a p forall (f :: * -> *) a. Alternative f => f a -> f a -> f 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 forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> forall a b. (a -> b) -> Parsec (b -> b) -> Parsec a -> Parsec b prefix a -> b wrap Parsec (b -> b) op Parsec a p forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> a -> b wrap 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 forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Parsec a p forall (f :: * -> *) a b. Applicative f => f a -> f (a -> b) -> f b <**> Parsec (b -> b) rest where rest :: Parsec (b -> b) rest = forall a b c. (a -> b -> c) -> b -> a -> c flip forall b c a. (b -> c) -> (a -> b) -> a -> c (.) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Parsec (b -> b) op forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Parsec (b -> b) rest forall (f :: * -> *) a. Alternative f => f a -> f a -> f a <|> forall (f :: * -> *) a. Applicative f => a -> f a pure forall a. a -> a id