language-c-0.10.1: Analysis and generation of C code

Copyright | (c) 2008 Benedikt Huber
License | BSD-style
Maintainer | benedikt.huber@gmail.com
Stability | experimental
Portability | ghc
Safe Haskell | None
Language | Haskell2010

Language.C.Parser

Contents

- Simple API
- Parser Monad
- Exposed Parsers
- Parser Monad

Description

Language.C parser

Synopsis

- parseC :: InputStream -> Position -> Either ParseError CTranslUnit
- data P a
- execParser :: P a -> InputStream -> Position -> [Ident] -> [Name] -> Either ParseError (a, [Name])
- execParser_ :: P a -> InputStream -> Position -> Either ParseError a
- builtinTypeNames :: [Ident]
- translUnitP :: P CTranslUnit
- extDeclP :: P CExtDecl
- statementP :: P CStat
- expressionP :: P CExpr
- newtype ParseError = ParseError ([String], Position)

# Simple API

parseC :: InputStream -> Position -> Either ParseError CTranslUnit Source #

`parseC input initialPos` parses the given preprocessed C-source input and returns the AST or a list of parse errors.

# Parser Monad

data P a Source #

#### Instances

Instances details

Applicative P Source # |
Instance details Defined in Language.C.Parser.ParserMonad Methods pure :: a -> P a Source # (<*>) :: P (a -> b) -> P a -> P b Source # liftA2 :: (a -> b -> c) -> P a -> P b -> P c Source # (*>) :: P a -> P b -> P b Source # (<*) :: P a -> P b -> P a Source #
Functor P Source # |
Instance details Defined in Language.C.Parser.ParserMonad Methods fmap :: (a -> b) -> P a -> P b Source # (<$) :: a -> P b -> P a Source #
Monad P Source # |
Instance details Defined in Language.C.Parser.ParserMonad Methods (>>=) :: P a -> (a -> P b) -> P b Source # (>>) :: P a -> P b -> P b Source # return :: a -> P a Source #
MonadFail P Source # |
Instance details Defined in Language.C.Parser.ParserMonad Methods fail :: String -> P a Source #

execParser :: P a -> InputStream -> Position -> [Ident] -> [Name] -> Either ParseError (a, [Name]) Source #

execute the given parser on the supplied input stream. returns `ParseError` if the parser failed, and a pair of result and remaining name supply otherwise

Synopsis: `execParser parser inputStream initialPos predefinedTypedefs uniqNameSupply`

execParser_ :: P a -> InputStream -> Position -> Either ParseError a Source #

run the given parser using a new name supply and builtin typedefs see `execParser`

Synopsis: `runParser parser inputStream initialPos`

builtinTypeNames :: [Ident] Source #

# Exposed Parsers

translUnitP :: P CTranslUnit Source #

`translUnitP` provides a parser for a complete C translation unit, i.e. a list of external declarations.

extDeclP :: P CExtDecl Source #

`extDeclP` provides a parser for an external (file-scope) declaration

statementP :: P CStat Source #

`statementP` provides a parser for C statements

expressionP :: P CExpr Source #

`expressionP` provides a parser for C expressions

# Parser Monad

newtype ParseError Source #

Constructors

ParseError ([String], Position) |

#### Instances

Instances details

Show ParseError Source # |
Instance details Defined in Language.C.Parser.ParserMonad Methods showsPrec :: Int -> ParseError -> ShowS Source # show :: ParseError -> String Source # showList :: [ParseError] -> ShowS Source #