Changeset 21673 for src/Pugs/CodeGen/Binary.hs
- Timestamp:
- 08/01/08 13:56:05 (5 months ago)
- Files:
-
- 1 modified
-
src/Pugs/CodeGen/Binary.hs (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/CodeGen/Binary.hs
r15616 r21673 1 {-# OPTIONS_GHC -fglasgow-exts #-}1 {-# OPTIONS_GHC -fglasgow-exts -fallow-undecidable-instances -fno-warn-orphans -funbox-strict-fields -cpp #-} 2 2 3 module Pugs.CodeGen.Binary (gen Binary) where3 module Pugs.CodeGen.Binary (genParseBinary) where 4 4 import Pugs.Internals 5 5 import Pugs.AST 6 import Pugs.Compile 7 import Pugs.PIL1 8 import DrIFT.Binary 9 import System.IO 10 import System.Directory 6 import Data.Binary 7 import qualified Data.ByteString.Lazy.Char8 as L 11 8 12 genBinary :: Eval Val 13 genBinary = do 14 penv <- compile () :: Eval PIL_Environment 15 io $ do 16 tmp <- getTemporaryDirectory 17 (file, fh) <- openBinaryTempFile tmp "pugs.bin" 18 bh <- openBinIO fh 19 put_ bh penv 20 hClose fh 21 return $ VStr (unlines [file]) 9 genParseBinary :: FilePath -> Eval Val 10 genParseBinary file = doGenParseBinary file 11 12 doGenParseBinary :: FilePath -> Eval Val 13 doGenParseBinary file = do 14 pad <- filterPrim =<< asks envGlobal 15 main <- asks envBody 16 return $ VStr (L.unpack $! encode (mkCompUnit file pad main))
