Changeset 22306 for src/Pugs/CodeGen

Show
Ignore:
Timestamp:
09/22/08 00:39:03 (2 months ago)
Author:
pmurias
Message:

[pugs/mold] pugs -Cm0ld handles multiple arguments to a method/function calls

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • src/Pugs/CodeGen/M0ld.hs

    r22303 r22306  
    77import Pugs.PIL1 
    88import Control.Monad.State 
     9import Data.List 
    910 
    1011uniqueId = do 
     
    9798    inv_code <- fetch (emit inv) inv_r 
    9899    args <- mapM (\arg -> do 
    99         arg_id <- uniqueId 
    100         arg_code <- fetch (emit arg) arg_id 
    101         return (arg_code,arg_id)) args 
    102     return (inv_code ++ (concat $ fmap fst args) ++ "my " ++ r ++ " = " ++ inv_r ++ ".\"" ++ method ++ "\"(" ++ (concat $ fmap snd args) ++ ");\n") 
     100        arg_reg <- uniqueId 
     101        arg_code <- fetch (emit arg) arg_reg 
     102        return (arg_code,arg_reg)) args 
     103    return (inv_code ++ (concat $ fmap fst args) ++ "my " ++ r ++ " = " ++ inv_r ++ ".\"" ++ method ++ "\"(" ++ (concat $ intersperse "," $ fmap snd args) ++ ");\n") 
    103104 
    104105instance EmitM0ld PIL_LValue where 
     
    109110            methodCall inv method args r 
    110111        PVar {pVarName=name} -> return $ "my " ++ r ++ " = $scope.\"lookup\"(\"" ++ name ++ "\");\n" 
     112        PAssign {pLHS=[lhs],pRHS=rhs} -> do 
     113            lhs_reg <- uniqueId 
     114            lhs_code <- emit lhs lhs_reg  
     115            rhs_reg <- uniqueId 
     116            rhs_code <- fetch (emit rhs) rhs_reg 
     117            return $ lhs_code ++ rhs_code ++ "my " ++ r ++ " = " ++ lhs_reg ++ ".\"STORE\"(" ++ rhs_reg ++ ");\n" 
     118 
    111119        other -> return $ (show other) ++ ";\n" 
    112120