diff options
-rw-r--r-- | monkeypatch.hs | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/monkeypatch.hs b/monkeypatch.hs index 3b78c9f..58c8799 100644 --- a/monkeypatch.hs +++ b/monkeypatch.hs | |||
@@ -365,8 +365,14 @@ grokStatement (CBlockStmt (CIf exp (CCompound [] stmts _) Nothing _)) = do | |||
365 | , comp = Lambda () [hspvar k] $ If () (comp x) (comp s) (hsvar k) | 365 | , comp = Lambda () [hspvar k] $ If () (comp x) (comp s) (hsvar k) |
366 | } | 366 | } |
367 | -- TODO CStatExpr | 367 | -- TODO CStatExpr |
368 | -- TODO (CBlockStmt (CExpr Nothing _) -- semicolon | 368 | grokStatement (CBlockStmt (CExpr mexpr _)) = do |
369 | -- TODO (CBlockStmt (CExpr (Just (CComma exs _) _) _)) | 369 | let (ss,pre) = fromMaybe ([],Computation Map.empty Map.empty id) $ do |
370 | expr <- mexpr | ||
371 | (ss,x) <- grokExpression expr | ||
372 | return (ss, fmap (\e -> infixFn e "seq") x) | ||
373 | k = uniqIdentifier "go" (compFree s) | ||
374 | s = foldr applyComputation (fmap ($ hsvar k) pre) ss | ||
375 | return $ fmap (Lambda () [hspvar k]) s | ||
370 | grokStatement (CBlockDecl (CDecl (t:ts) (v:vs) _)) = do | 376 | grokStatement (CBlockDecl (CDecl (t:ts) (v:vs) _)) = do |
371 | -- case mapMaybe (\(cdeclr,_,_) -> cdeclr >>= \(CDeclr i _ initial _ _) -> initial) (v:vs) of | 377 | -- case mapMaybe (\(cdeclr,_,_) -> cdeclr >>= \(CDeclr i _ initial _ _) -> initial) (v:vs) of |
372 | -- case mapMaybe (\(cdeclr,_,_) -> cdeclr >>= \(CInitList xs _) -> Just xs) (v:vs) of | 378 | -- case mapMaybe (\(cdeclr,_,_) -> cdeclr >>= \(CInitList xs _) -> Just xs) (v:vs) of |