| Copyright | (c) 2008 Benedikt Huber |
|---|---|
| License | BSD-style |
| Maintainer | benedikt.huber@gmail.com |
| Stability | alpha |
| Portability | ghc |
| Safe Haskell | None |
| Language | Haskell2010 |
Language.C.Analysis.AstAnalysis
Description
Analyse the parse tree
Traverses the AST, analyses declarations and invokes handlers.
Synopsis
- analyseAST :: MonadTrav m => CTranslUnit -> m GlobalDecls
- analyseExt :: MonadTrav m => CExtDecl -> m ()
- analyseFunDef :: MonadTrav m => CFunDef -> m ()
- analyseDecl :: MonadTrav m => Bool -> CDecl -> m ()
- analyseFunctionBody :: MonadTrav m => NodeInfo -> VarDecl -> CStat -> m Stmt
- defineParams :: MonadTrav m => NodeInfo -> VarDecl -> m ()
- tExpr :: MonadTrav m => [StmtCtx] -> ExprSide -> CExpr -> m Type
- data ExprSide
- tStmt :: MonadTrav m => [StmtCtx] -> CStat -> m Type
- data StmtCtx
- tDesignator :: MonadTrav m => Type -> [CDesignator] -> m Type
- defaultMD :: MachineDesc
Top-level analysis
analyseAST :: MonadTrav m => CTranslUnit -> m GlobalDecls Source #
Analyse the given AST
analyseAST ast results in global declaration dictionaries.
If you want to perform specific actions on declarations or definitions, you may provide
callbacks in the MonadTrav m.
Returns the set of global declarations and definitions which where successfully translated.
It is the users responsibility to check whether any hard errors occurred (runTrav does this for you).
analyseExt :: MonadTrav m => CExtDecl -> m () Source #
Analyse an top-level declaration
analyseFunDef :: MonadTrav m => CFunDef -> m () Source #
Analyse a function definition
analyseDecl :: MonadTrav m => Bool -> CDecl -> m () Source #
Analyse a declaration other than a function definition
Note: static assertions are not analysed
Building blocks for additional analyses
Type checking
tStmt :: MonadTrav m => [StmtCtx] -> CStat -> m Type Source #
Typecheck a statement, given a statement context. The type of a
statement is usually void, but expression statements and blocks
can sometimes have other types.
tDesignator :: MonadTrav m => Type -> [CDesignator] -> m Type Source #