Changeset 4878 for src/Pugs/Compile/PIR.hs
- Timestamp:
- 06/20/05 20:42:00 (4 years ago)
- svk:copy_cache_prev:
- 6641
- Files:
-
- 1 modified
-
src/Pugs/Compile/PIR.hs (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/Compile/PIR.hs
r4876 r4878 189 189 compile exp = compileStmts exp 190 190 191 class EnterClass m a | m -> awhere191 class EnterClass m a where 192 192 enter :: a -> m b -> m b 193 194 instance EnterClass CompMonad VCode where 195 enter sub = local (\e -> e{ envLValue = subLValue sub, envContext = CxtItem (subReturns sub) }) 193 196 194 197 instance EnterClass CompMonad Cxt where … … 227 230 then case val of 228 231 VBool True -> compile Noop 229 VInt x | x > 0 -> compile Noop230 232 _ -> do 231 233 warn "Useless use of a constant in void context" val … … 242 244 return $ PStmt $ PExp $ PApp TCxtVoid funC [preC, PBlock condC, PBlock bodyC, PBlock postC] 243 245 compile exp = fmap PStmt $ compile exp 246 247 {- 248 subTCxt :: VCode -> Eval TCxt 249 subTCxt sub = return $ if subLValue sub 250 then TCxtLValue (subReturns sub) 251 else TCxtItem (subReturns sub) 252 -} 244 253 245 254 askTCxt :: Eval TCxt … … 344 353 compile (Syn "sub" [Val (VCode sub)]) = do 345 354 -- XXX I'd like to lambda lift... :-/ 346 _ <- askTCxt 347 bodyC <- compile $ case subBody sub of 355 bodyC <- enter sub $ compile $ case subBody sub of 348 356 Syn "block" [exp] -> exp 349 357 exp -> exp … … 633 641 varInit ('@':_) = text $ "PerlArray" 634 642 varInit ('%':_) = text $ "PerlHash" 643 varInit ('&':_) = text $ "PerlScalar" 635 644 varInit x = error $ "invalid name: " ++ x 636 645
