Changeset 21673 for src/Pugs/CodeGen
- Timestamp:
- 08/01/08 13:56:05 (4 months ago)
- Location:
- src/Pugs/CodeGen
- Files:
-
- 2 modified
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)) -
src/Pugs/CodeGen/PIR.hs
r16627 r21673 18 18 import Pugs.Types 19 19 import Pugs.PIL1 20 import Emit.PIR.Instances () 21 import Emit.PIR 20 import Language.PIR 22 21 import Pugs.Pretty 23 22 import Text.PrettyPrint … … 27 26 import Pugs.Run (getLibs) 28 27 import DrIFT.YAML 29 import qualified UTF8 as Str28 import qualified Data.ByteString.UTF8 as Str 30 29 31 30 type CodeGen a = WriterT [Stmt] (ReaderT TEnv IO) a … … 250 249 trans x = transError x 251 250 252 instance LiteralClass Var Expressionwhere251 instance LiteralClass Var where 253 252 lit = ExpLit . LitStr . cast 254 253 255 instance LiteralClass ByteString Expressionwhere254 instance LiteralClass ByteString where 256 255 lit = ExpLit . LitStr . cast 257 256
