module Happy.Grammar.ExpressionWithHole where

-- | The overall expression is
-- 'tokLeft ++ substitutedForHole ++ tokRight'.
data ExpressionWithHole
      = ExpressionWithHole {
              ExpressionWithHole -> String
exprLeft :: String,
              ExpressionWithHole -> String
exprRight :: String
      }
      deriving (ExpressionWithHole -> ExpressionWithHole -> Bool
(ExpressionWithHole -> ExpressionWithHole -> Bool)
-> (ExpressionWithHole -> ExpressionWithHole -> Bool)
-> Eq ExpressionWithHole
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ExpressionWithHole -> ExpressionWithHole -> Bool
== :: ExpressionWithHole -> ExpressionWithHole -> Bool
$c/= :: ExpressionWithHole -> ExpressionWithHole -> Bool
/= :: ExpressionWithHole -> ExpressionWithHole -> Bool
Eq, Int -> ExpressionWithHole -> ShowS
[ExpressionWithHole] -> ShowS
ExpressionWithHole -> String
(Int -> ExpressionWithHole -> ShowS)
-> (ExpressionWithHole -> String)
-> ([ExpressionWithHole] -> ShowS)
-> Show ExpressionWithHole
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ExpressionWithHole -> ShowS
showsPrec :: Int -> ExpressionWithHole -> ShowS
$cshow :: ExpressionWithHole -> String
show :: ExpressionWithHole -> String
$cshowList :: [ExpressionWithHole] -> ShowS
showList :: [ExpressionWithHole] -> ShowS
Show)

substExpressionWithHole :: ExpressionWithHole -> String -> String
substExpressionWithHole :: ExpressionWithHole -> ShowS
substExpressionWithHole (ExpressionWithHole String
l String
r) = \String
repr -> String
l String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
repr String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
r