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


-- | Haskell source parser from GHC.
--   
--   Haskell source parser from GHC.
@package ghc-parser
@version 0.2.0.2

module Language.Haskell.GHC.HappyParser
fullStatement :: P (Maybe (LStmt RdrName (LHsExpr RdrName)))
fullImport :: P (LImportDecl RdrName)
fullDeclaration :: P (OrdList (LHsDecl RdrName))
fullExpression :: P (LHsExpr RdrName)
fullTypeSignature :: P (Located (OrdList (LHsDecl RdrName)))
fullModule :: P (Located (HsModule RdrName))

module Language.Haskell.GHC.Parser

-- | Run a GHC parser on a string. Return success or failure with
--   associated information for both.
runParser :: DynFlags -> Parser a -> String -> ParseOutput a

-- | A line number in an input string.
type LineNumber = Int

-- | A column number in an input string.
type ColumnNumber = Int

-- | An error message string.
type ErrMsg = String

-- | A location in an input string.
data StringLoc
Loc :: LineNumber -> ColumnNumber -> StringLoc

-- | Output from running a parser.
data ParseOutput a

-- | Parser failed with given error message and location.
Failure :: ErrMsg -> StringLoc -> ParseOutput a

-- | Parser succeeded with an output.
Parsed :: a -> ParseOutput a

-- | Partial parser succeeded with an output.
Partial :: a -> (String, String) -> ParseOutput a
data Parser a

-- | Store locations along with a value.
data Located a
Located :: LineNumber -> a -> Located a
[line] :: Located a -> LineNumber
[unloc] :: Located a -> a
parserStatement :: Parser Maybe LStmt RdrName LHsExpr RdrName
parserImport :: Parser LImportDecl RdrName
parserDeclaration :: Parser OrdList LHsDecl RdrName
parserTypeSignature :: Parser Located OrdList LHsDecl RdrName
parserModule :: Parser Located HsModule RdrName
parserExpression :: Parser LHsExpr RdrName

-- | Drop comments from Haskell source. Simply gets rid of them, does not
--   replace them in any way.
removeComments :: String -> String

-- | Split an input string into chunks based on indentation. A chunk is a
--   line and all lines immediately following that are indented beyond the
--   indentation of the first line. This parses Haskell layout rules
--   properly, and allows using multiline expressions via indentation.
--   
--   Quasiquotes are allowed via a post-processing step.
layoutChunks :: String -> [Located String]
instance GHC.Base.Functor Language.Haskell.GHC.Parser.Located
instance GHC.Show.Show a => GHC.Show.Show (Language.Haskell.GHC.Parser.Located a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Haskell.GHC.Parser.Located a)
instance GHC.Show.Show a => GHC.Show.Show (Language.Haskell.GHC.Parser.ParseOutput a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Haskell.GHC.Parser.ParseOutput a)
instance GHC.Classes.Eq Language.Haskell.GHC.Parser.StringLoc
instance GHC.Show.Show Language.Haskell.GHC.Parser.StringLoc
