-----------------------------------------------------------------------------
-- |
-- Module      :  Language.C.Analysis
-- Copyright   :  (c) 2008 Benedikt Huber
-- License     :  BSD-style
-- Maintainer  :  benedikt.huber@gmail.com
-- Stability   :  alpha
-- Portability :  ghc
--
-- Analysis of the AST.
--
-- Currently, we provide a monad for analysis and analyze declarations and types.
-- Especially note that there is no direct support for analyzing function bodies and
-- constant expressions.
--
-- /NOTE/ This is an experimental interface, and therefore the API will change in the
-- future.
--
-- DONE:
--
--  * Name analysis framework
--
--  * File-scope analysis
--
--  * Declaration analysis
--
-- TODO:
--
--  * Type checking expressions
--
--  * Constant expression evaluation (CEE)
--
--  * Typed representation of attributes (depends on CEE)
--
--  * Normalized representation of initializers
--
--  * Support for analyzing function bodies (depends on CEE)
--
--  * Normalizing expressions and statements
--
--  * Formal rules how to link back to the AST using NodeInfo fields
--
--  * Typed assembler representation

-----------------------------------------------------------------------------
module Language.C.Analysis (
    -- * Semantic representation
    module Language.C.Analysis.SemRep,
    -- * Error datatypes for the analysis
    module Language.C.Analysis.SemError,
    -- * Traversal monad
    module Language.C.Analysis.TravMonad,
    -- * Top level analysis
    module Language.C.Analysis.AstAnalysis,
    -- * Analyzing declarations
    module Language.C.Analysis.DeclAnalysis,
    -- * Debug print
    module Language.C.Analysis.Debug,
)
where
import Language.C.Analysis.SemError
import Language.C.Analysis.SemRep

import Language.C.Analysis.TravMonad

import Language.C.Analysis.AstAnalysis
import Language.C.Analysis.DeclAnalysis

import Language.C.Analysis.Debug