    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