-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | rammar
--   
--   Happy is a parser generator for Haskell. Given a grammar specification
--   in BNF, Happy generates Haskell code to parse the grammar. Happy works
--   in a similar way to the <tt>yacc</tt> tool for C.
--   
--   This library provides the following functionality:
--   
--   <ul>
--   <li>Data type definitions for the Grammar AST type, capturing the
--   information in .y-files (Happy.Grammar)</li>
--   <li>A parser for happy grammar files (.y) to produce a Grammar
--   (Happy.Frontend.*)</li>
--   <li>Implementations of the text book algorithms that compute the LR
--   action and goto tables for the given <a>Grammar</a>
--   (Happy.Tabular.*)</li>
--   <li>An LALR code generator to produce table-driven, deterministic
--   parsing code in Haskell (Happy.Backend.LALR.*)</li>
--   <li>A (less maintained) GLR code generator to produce table-driven,
--   non-deterministic parsing code in Haskell, where ambiguous parses
--   produce multiple parse trees (Happy.Backend.GLR.*)</li>
--   </ul>
@package happy-lib:grammar
@version 2.1.7

module Happy.Grammar.ExpressionWithHole

-- | The overall expression is 'tokLeft ++ substitutedForHole ++ tokRight'.
data ExpressionWithHole
ExpressionWithHole :: String -> String -> ExpressionWithHole
[exprLeft] :: ExpressionWithHole -> String
[exprRight] :: ExpressionWithHole -> String
substExpressionWithHole :: ExpressionWithHole -> String -> String
instance GHC.Classes.Eq Happy.Grammar.ExpressionWithHole.ExpressionWithHole
instance GHC.Internal.Show.Show Happy.Grammar.ExpressionWithHole.ExpressionWithHole


-- | This module exports the <a>Grammar</a> data type, which
module Happy.Grammar
newtype Name
MkName :: Int -> Name
[getName] :: Name -> Int
data Production eliminator
Production :: Name -> [Name] -> (eliminator, [Int]) -> Priority -> Production eliminator
data TokenSpec

-- | The token is just a fixed value
TokenFixed :: String -> TokenSpec

-- | The token is an expression involving the value of the lexed token.
TokenWithValue :: ExpressionWithHole -> TokenSpec
data Grammar eliminator
Grammar :: [Production eliminator] -> (Int -> Production eliminator) -> (Name -> [Int]) -> [(Name, TokenSpec)] -> [Name] -> [Name] -> [(String, Name, Name, Bool)] -> Array Name (Maybe String) -> Array Name String -> Name -> Name -> Name -> [(Name, Priority)] -> Grammar eliminator
[productions] :: Grammar eliminator -> [Production eliminator]
[lookupProdNo] :: Grammar eliminator -> Int -> Production eliminator
[lookupProdsOfName] :: Grammar eliminator -> Name -> [Int]
[token_specs] :: Grammar eliminator -> [(Name, TokenSpec)]
[terminals] :: Grammar eliminator -> [Name]
[non_terminals] :: Grammar eliminator -> [Name]
[starts] :: Grammar eliminator -> [(String, Name, Name, Bool)]
[types] :: Grammar eliminator -> Array Name (Maybe String)
[token_names] :: Grammar eliminator -> Array Name String
[first_nonterm] :: Grammar eliminator -> Name
[first_term] :: Grammar eliminator -> Name
[eof_term] :: Grammar eliminator -> Name
[priorities] :: Grammar eliminator -> [(Name, Priority)]
data AttributeGrammarExtras
AttributeGrammarExtras :: [(String, String)] -> String -> AttributeGrammarExtras
[attributes] :: AttributeGrammarExtras -> [(String, String)]
[attributetype] :: AttributeGrammarExtras -> String
data Priority
No :: Priority
Prio :: Assoc -> Int -> Priority
PrioLowest :: Priority
data Assoc
LeftAssoc :: Assoc
RightAssoc :: Assoc
None :: Assoc
data ErrorHandlerInfo

-- | Default handler <tt>happyError</tt>
DefaultErrorHandler :: ErrorHandlerInfo

-- | Call this handler on error.
CustomErrorHandler :: String -> ErrorHandlerInfo

-- | `ResumptiveErrorHandler abort report`: Upon encountering a parse
--   error, call non-fatal function <tt>report</tt>. Then try to resume
--   parsing by finding a catch production. If that ultimately fails, call
--   <tt>abort</tt>.
ResumptiveErrorHandler :: String -> String -> ErrorHandlerInfo
data ErrorExpectedMode

-- | Neither `%errorhandertype explist` nor `%error.expected`
NoExpected :: ErrorExpectedMode

-- | `%errorhandertype explist`. The error handler takes a pair `(Token,
--   [String])`
OldExpected :: ErrorExpectedMode

-- | `%error.expected`. The error handler takes two (or more) args `Token
--   -&gt; [String] -&gt; ...`.
NewExpected :: ErrorExpectedMode

-- | Stuff like `%monad`, `%expect`
data Directives
Directives :: String -> Bool -> (Bool, String, String, String, String) -> Maybe Int -> Maybe (String, String) -> ErrorHandlerInfo -> ErrorExpectedMode -> Directives
[token_type] :: Directives -> String
[imported_identity] :: Directives -> Bool
[monad] :: Directives -> (Bool, String, String, String, String)
[expect] :: Directives -> Maybe Int
[lexer] :: Directives -> Maybe (String, String)
[error_handler] :: Directives -> ErrorHandlerInfo

-- | Error handler specified in <a>error_handler</a> takes a `[String]`
--   carrying the pretty-printed expected tokens
[error_expected] :: Directives -> ErrorExpectedMode
errorName :: String
errorTok :: Name
catchName :: String
catchTok :: Name
startName :: String
dummyName :: String
firstStartTok :: Name
dummyTok :: Name
eofName :: String
epsilonTok :: Name
instance GHC.Internal.Enum.Enum Happy.Grammar.Name
instance GHC.Classes.Eq Happy.Grammar.ErrorExpectedMode
instance GHC.Classes.Eq Happy.Grammar.Name
instance GHC.Classes.Eq Happy.Grammar.Priority
instance GHC.Classes.Eq Happy.Grammar.TokenSpec
instance GHC.Internal.Ix.Ix Happy.Grammar.Name
instance GHC.Classes.Ord Happy.Grammar.Name
instance GHC.Internal.Read.Read Happy.Grammar.Name
instance GHC.Internal.Show.Show Happy.Grammar.Assoc
instance GHC.Internal.Show.Show eliminator => GHC.Internal.Show.Show (Happy.Grammar.Grammar eliminator)
instance GHC.Internal.Show.Show Happy.Grammar.Name
instance GHC.Internal.Show.Show Happy.Grammar.Priority
instance GHC.Internal.Show.Show eliminator => GHC.Internal.Show.Show (Happy.Grammar.Production eliminator)
instance GHC.Internal.Show.Show Happy.Grammar.TokenSpec
