Does the following code help you out? (Do note it's for the GHC 6.12.* API)
It just uses the the default GHC driver, meaning you don't have to separately
call the desugerar, simplifier, etc.
It's what I use for my CλaSH tool.
Cheers, Christiaan
-- External Modules
import qualified GHC.Paths
-- GHC API
import qualified DynFlags
import qualified GHC
import qualified HscTypes
-- | Loads the given files and returns the Core Bindings
loadBindings ::
[FilePath] -> -- ^ Files to load
IO [(CoreSyn.CoreBndr, CoreSyn.CoreExpr)] -- ^ Bindings
loadBindings fileNames = do
GHC.defaultErrorHandler DynFlags.defaultDynFlags $
GHC.runGhc (Just GHC.Paths.libdir) $ do
-- Some dynflags trickery.. otherwise they don't get loaded properly
dflags <- GHC.getSessionDynFlags
GHC.setSessionDynFlags dflags
-- Run the default GHC driver
coreModules <- mapM GHC.compileToCoreSimplified fileNames
-- Extract and flatten bindings from the modules
let bindings = concatMap (CoreSyn.flattenBinds . HscTypes.cm_binds)
coreModules
return bindings
On Jan 10, 2011, at 6:21 PM, Jane Ren wrote:
> Hi,
>
> I need to be able to take a piece of Haskell source code and get an
> simplified, typed, intermediate representation of the AST, which means I need
> to use compiler/coreSyn/CoreSyn.lhs
>
> So I'm first trying to get the desguaredModule of the source code with
> ...
> modSum <- getModSummary $ mkModuleName "..."
> p <- parseModule modSum
> t <- typecheckModule p
> d <- desugarModule t
>
> Now I'm really stuck on figuring out how to connect the variable d of type
> desugaredModule to compiler/coreSyn/CoreSyn.lhs to get Expr patterns like
> App, Let, Case, etc.
>
> Also, is it correct to get the deguaredModule first? At least CoreSyn.lhs
> seems to suggest this.
>
> Any suggestions would be greatly apprecia
> _______________________________________________
> Glasgow-haskell-users mailing list
> [email protected]
> http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
_______________________________________________
Glasgow-haskell-users mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users