Changeset 22303 for src/Pugs/CodeGen

Show
Ignore:
Timestamp:
09/21/08 16:09:51 (2 months ago)
Author:
pmurias
Message:

[smop/pugs]
added .FETCH and .STORE to Code and constant identifiers
m0ld emitted by pugs uses FETCH

Files:
1 modified

Legend:

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

    r22254 r22303  
    8888    emit other r = placeholder other r 
    8989 
     90fetch expr r = do 
     91    scalar <- uniqueId 
     92    expr_code <- expr scalar  
     93    return $ expr_code ++ "my " ++ r ++ " = " ++ scalar ++ ".\"FETCH\"();\n"; 
     94 
    9095methodCall inv method args r = do 
    9196    inv_r <- uniqueId 
    92     inv_code <- emit inv inv_r 
     97    inv_code <- fetch (emit inv) inv_r 
    9398    args <- mapM (\arg -> do 
    94         id <- uniqueId 
    95         code <- emit arg id 
    96         return (code,id)) args 
     99        arg_id <- uniqueId 
     100        arg_code <- fetch (emit arg) arg_id 
     101        return (arg_code,arg_id)) args 
    97102    return (inv_code ++ (concat $ fmap fst args) ++ "my " ++ r ++ " = " ++ inv_r ++ ".\"" ++ method ++ "\"(" ++ (concat $ fmap snd args) ++ ");\n") 
     103 
    98104instance EmitM0ld PIL_LValue where 
    99105    emit lvalue r = case lvalue of 
     
    102108        PApp {pFun=PExp {pLV = PVar {pVarName = '&':method}},pArgs=args,pInv=Just inv} -> 
    103109            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" 
    108111        other -> return $ (show other) ++ ";\n" 
    109112