Changeset 9052 for src/Pugs/Prim/Eval.hs

Show
Ignore:
Timestamp:
02/18/06 17:56:59 (3 years ago)
Author:
gaal
Message:

* Pugs.Prim - add Pugs::Internals::eval_p6y, a conjectural and

probably bogosous prim to load precompiled Perl 6 files.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • src/Pugs/Prim/Eval.hs

    r8288 r9052  
     1{-# OPTIONS_GHC -fglasgow-exts #-} 
    12module Pugs.Prim.Eval ( 
    23    -- used by Pugs.Prim 
    3     op1EvalHaskell, 
     4    op1EvalHaskell, op1EvalP6Y, 
    45    opEval, opEvalFile, 
    56    opRequire, requireInc, 
     
    1516import Pugs.Pretty 
    1617import Pugs.Prim.Keyed 
     18import qualified Data.FastPackedString as Str 
     19import DrIFT.YAML 
     20import Data.Yaml.Syck 
     21 
     22type Str = Str.FastString 
     23 
    1724 
    1825data EvalError = EvalErrorFatal 
     
    8895                       , evalResult=EvalResultLastValue} 
    8996 
     97op1EvalP6Y :: Val -> Eval Val 
     98op1EvalP6Y f = do 
     99    fn <- fromVal f 
     100    str <- liftIO $ Str.readFile fn 
     101    yml <- liftIO $ parseYamlFS str 
     102    case yml of 
     103        Right (Just yml') -> do 
     104            (glob, ast) <- liftIO $ fromYAML yml' 
     105            env <- ask 
     106            -- xxx high bogosity warning 
     107            globRef <- liftSTM $ do 
     108                glob' <- readTVar $ envGlobal env 
     109                newTVar (glob `unionPads` glob') 
     110            --runEnv env{ envBody = ast, envGlobal = globRef, envDebug = Nothing } 
     111            (envEval env) ast 
     112        _ -> fail "failed" 
     113 
    90114opEval :: EvalStyle -> FilePath -> String -> Eval Val 
    91115opEval style path str = enterCaller $ do