summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Crayne <joe@jerkface.net>2019-03-19 18:19:57 -0400
committerJoe Crayne <joe@jerkface.net>2019-03-19 18:19:57 -0400
commit42f56c9c4ffdc30fbc60e3c6b3a3534a4da57cc7 (patch)
treec27913362f993508c2b1b6923dcd6821f7d0319c
parent09233c7fa0c6c6b5a61400e06c34b062cf575901 (diff)
Support for expression-statements.
-rw-r--r--monkeypatch.hs10
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 368grokStatement (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
370grokStatement (CBlockDecl (CDecl (t:ts) (v:vs) _)) = do 376grokStatement (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