Changeset 4861 for src/Pugs/Compile

Show
Ignore:
Timestamp:
06/20/05 01:56:56 (3 years ago)
Author:
autrijus
svk:copy_cache_prev:
6641
Message:

* assignment into arrays.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • src/Pugs/Compile/PIR.hs

    r4860 r4861  
    88import Emit.Common 
    99import Pugs.Types 
     10import Pugs.Eval 
    1011import Emit.PIR 
    1112import Pugs.Pretty 
     
    280281    compile exp@(Syn "until" _) = compLoop exp 
    281282    compile (Syn "{}" (x:xs)) = compile (App (Var "&postcircumfix:{}") (Just x) xs) 
    282     compile (Syn "[]" (x:xs)) = compile (App (Var "&postcircumfix:[]") (Just x) xs) 
     283    compile (Syn "[]" (x:xs)) = do 
     284        compile (App (Var "&postcircumfix:[]") (Just x) xs) 
    283285    compile (Syn "," exps) = do 
    284286        compile (App (Var "&infix:,") Nothing exps) 
     
    287289    compile (Syn "\\{}" exps) = do 
    288290        compile (App (Var "&circumfix:{}") Nothing exps) 
    289     compile (Syn "=" exps) = do 
    290         (lhsC, rhsC) <- compile exps 
     291    compile (Syn "=" [lhs, rhs]) = do 
     292        lhsC <- enterLValue $ compile lhs 
     293        rhsC <- enterRValue $ compile rhs 
    291294        return $ PAssign [lhsC] rhsC 
    292295    compile (Syn ":=" exps) = do 
    293         (lhsC, rhsC) <- compile exps 
     296        (lhsC, rhsC) <- enterLValue $ compile exps 
    294297        return $ PBind [lhsC] rhsC 
    295298    compile (Syn syn [lhs, exp]) | last syn == '=' = do 
     
    425428        tell $ map StmtIns $ callBlock appC blockC  
    426429        return tempPMC 
     430    trans (PApp (TCxtLValue _) (PExp (PVar "&postcircumfix:[]")) [(PExp lhs), rhs]) = do 
     431        lhsC    <- trans lhs 
     432        rhsC    <- trans rhs 
     433        return (KEYED lhsC rhsC)  
    427434    trans (PApp cxt fun args) = do 
    428435        funC    <- case fun of