Copyright | (c) 2008 Benedikt Huber |
---|---|
License | BSD-style |
Maintainer | benedikt.huber@gmail.com |
Stability | alpha |
Portability | ghc |
Safe Haskell | None |
Language | Haskell98 |
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 #