Changeset 5360
- Timestamp:
- 07/10/05 16:32:40 (4 years ago)
- svk:copy_cache_prev:
- 7349
- Files:
-
- 5 modified
-
src/Main.hs (modified) (1 diff)
-
src/Pugs/Compile/Pugs.hs (modified) (6 diffs)
-
src/Pugs/PreludePC.hs-null (modified) (1 diff)
-
src/Pugs/Run.hs (modified) (2 diffs)
-
util/gen_prelude.pl (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Main.hs
r5266 r5360 127 127 userDefined (MkPad pad) = MkPad $ Map.filterWithKey doFilter pad 128 128 where 129 doFilter "@*END" _ = True 130 doFilter (_:'*':_) _ = False 131 doFilter _ _ = True 129 doFilter key _ = not (key `elem` reserved) 130 reserved = words $ 131 "@*ARGS @*INC %*INC $*PUGS_HAS_HSPLUGINS $*EXECUTABLE_NAME " ++ 132 "$*PROGRAM_NAME $*PID $*UID $*EUID $*GID $*EGID @*CHECK @*INIT $*IN " ++ 133 "$*OUT $*ERR $*ARGS $! $/ %*ENV $*CWD @=POD $=POD $?PUGS_VERSION " ++ 134 "$*OS &?BLOCK_EXIT %?CONFIG $*_ $*AUTOLOAD $*PACKAGE" 132 135 133 136 repLoop :: IO () -
src/Pugs/Compile/Pugs.hs
r5358 r5360 104 104 105 105 instance Compile (String, [(TVar Bool, TVar VRef)]) where 106 compile ((_:'?':_), _) = return empty -- XXX - @?S etc; punt for now 107 compile ((_:'*':_), _) = return empty -- XXX - @*INIT etc; punt for now 108 compile ((_:'=':_), _) = return empty -- XXX - @=POS etc; punt for now 106 compile ((':':'*':_), _) = return empty -- XXX - :*Bool etc; punt for now 109 107 compile (n, tvars) = do 110 tvarsC <- compile tvars 111 return $ prettyDo 112 [ prettyBind "tvars" (text "sequence" `sep1` tvarsC) 108 tvarsC <- fmap (filter (not . isEmpty)) $ mapM compile tvars 109 if null tvarsC then return empty else do 110 return $ prettyDo 111 [ prettyBind "tvars" (text "sequence" `sep1` prettyList tvarsC) 113 112 , text ("return (" ++ show n ++ ", tvars)") 114 113 ] … … 121 120 freshC <- compile fresh 122 121 tvarC <- compile tvar 122 if isEmpty tvarC then return empty else do 123 123 return $ prettyDo 124 124 [ prettyBind "fresh" freshC … … 136 136 vref <- liftSTM $ readTVar fresh 137 137 vrefC <- compile vref 138 if isEmpty vrefC then return empty else do 138 139 return $ prettyDo 139 140 [ prettyBind "vref" vrefC … … 145 146 vsub <- code_fetch cv 146 147 vsubC <- compile vsub 148 if isEmpty vsubC then return empty else do 147 149 return $ prettyDo 148 150 [ prettyBind "vsub" vsubC … … 152 154 sv <- scalar_fetch sv 153 155 svC <- compile sv 156 if isEmpty svC then return empty else do 154 157 return $ prettyDo 155 158 [ prettyBind "sv" svC … … 168 171 compile x = return $ text "return" $+$ parens (text $ show x) 169 172 170 -- This wants a total rewrite. I strongly want Data.Generics at this point now.173 -- We need a compile VObject! 171 174 172 175 -- Haddock can't cope with Template Haskell 173 176 instance Compile VCode where 174 compile MkCode{ subBody = Prim _ } = return $ text "return mkPrim" 177 -- compile MkCode{ subBody = Prim _ } = return $ text "return mkPrim" 178 compile MkCode{ subBody = Prim _ } = return empty 175 179 compile code = do 176 180 bodyC <- compile $ subBody code -
src/Pugs/PreludePC.hs-null
r5140 r5360 7 7 -} 8 8 9 initPreludePC :: Env -> IO ()10 initPreludePC = return $ liftIO $ return ()9 initPreludePC :: Env -> IO Env 10 initPreludePC = return 11 11 -
src/Pugs/Run.hs
r5175 r5360 25 25 import Pugs.Eval 26 26 import Pugs.Prim 27 import Pugs.Prelude28 27 import Pugs.Prim.Eval 29 28 import Pugs.Embed 30 --import Pugs.Prelude31 29 import qualified Data.Map as Map 32 30 … … 158 156 initPerl5 "" (Just . VControl $ ControlEnv env{ envDebug = Nothing }) 159 157 return () 160 -- XXX - entirely wrong -- will revert to the next line 161 initPrelude env 162 -- initPreludePC env -- null in first pass 163 return env 158 initPreludePC env -- null in first pass 164 159 where 165 160 hideInSafemode x = if safeMode then MkRef $ constScalar undef else x 166 167 {-# NOINLINE initPrelude #-}168 initPrelude :: Env -> IO ()169 initPrelude env = do170 if bypass then return () else do171 -- Display the progress of loading the Prelude, but only in interactive172 -- mode (similar to GHCi):173 -- "Loading Prelude... done."174 let dispProgress = (posName . envPos $ env) == "<interactive>"175 when dispProgress $ putStr "Loading Prelude... "176 runEvalIO env{envDebug = Nothing} $ opEval style "<prelude>" preludeStr177 when dispProgress $ putStrLn "done."178 where179 style = MkEvalStyle{evalResult=EvalResultModule180 ,evalError =EvalErrorFatal}181 bypass = case (unsafePerformIO $ getEnv "PUGS_BYPASS_PRELUDE") of182 Nothing -> False183 Just "" -> False184 Just "0" -> False185 _ -> True186 161 187 162 initClassObjects :: [Type] -> ClassTree -> IO [STM (Pad -> Pad)] -
util/gen_prelude.pl
r5243 r5360 61 61 62 62 {-# NOINLINE initPreludePC #-} 63 initPreludePC :: Env -> IO ()63 initPreludePC :: Env -> IO Env 64 64 initPreludePC env = do 65 if bypass then return ()else do65 if bypass then return env else do 66 66 -- Display the progress of loading the Prelude, but only in interactive 67 67 -- mode (similar to GHCi): … … 76 76 runEnv env{ envBody = ast, envGlobal = globRef, envDebug = Nothing } 77 77 when dispProgress $ putStrLn "done." 78 return env{ envGlobal = globRef } 78 79 where 79 80 bypass = case (unsafePerformIO $ getEnv "PUGS_BYPASS_PRELUDE") of
