Changeset 22303 for src/Pugs/CodeGen
- Timestamp:
- 09/21/08 16:09:51 (2 months ago)
- Files:
-
- 1 modified
-
src/Pugs/CodeGen/M0ld.hs (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/CodeGen/M0ld.hs
r22254 r22303 88 88 emit other r = placeholder other r 89 89 90 fetch expr r = do 91 scalar <- uniqueId 92 expr_code <- expr scalar 93 return $ expr_code ++ "my " ++ r ++ " = " ++ scalar ++ ".\"FETCH\"();\n"; 94 90 95 methodCall inv method args r = do 91 96 inv_r <- uniqueId 92 inv_code <- emit invinv_r97 inv_code <- fetch (emit inv) inv_r 93 98 args <- mapM (\arg -> do 94 id <- uniqueId95 code <- emit argid96 return ( code,id)) args99 arg_id <- uniqueId 100 arg_code <- fetch (emit arg) arg_id 101 return (arg_code,arg_id)) args 97 102 return (inv_code ++ (concat $ fmap fst args) ++ "my " ++ r ++ " = " ++ inv_r ++ ".\"" ++ method ++ "\"(" ++ (concat $ fmap snd args) ++ ");\n") 103 98 104 instance EmitM0ld PIL_LValue where 99 105 emit lvalue r = case lvalue of … … 102 108 PApp {pFun=PExp {pLV = PVar {pVarName = '&':method}},pArgs=args,pInv=Just inv} -> 103 109 methodCall inv method args r 104 PVar {pVarName=name} -> do 105 scalar <- uniqueId 106 return $ "my " ++ scalar ++ " = $scope.\"lookup\"(\"" ++ name ++ "\");\n" 107 ++ "my " ++ r ++ " = " ++ scalar ++ ".\"FETCH\"();\n" 110 PVar {pVarName=name} -> return $ "my " ++ r ++ " = $scope.\"lookup\"(\"" ++ name ++ "\");\n" 108 111 other -> return $ (show other) ++ ";\n" 109 112
