diff options
author | Joe Crayne <joe@jerkface.net> | 2019-03-19 18:19:57 -0400 |
---|---|---|
committer | Joe Crayne <joe@jerkface.net> | 2019-03-19 18:19:57 -0400 |
commit | 42f56c9c4ffdc30fbc60e3c6b3a3534a4da57cc7 (patch) | |
tree | c27913362f993508c2b1b6923dcd6821f7d0319c /monkeypatch.hs | |
parent | 09233c7fa0c6c6b5a61400e06c34b062cf575901 (diff) |
Support for expression-statements.
Diffstat (limited to 'monkeypatch.hs')
-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 |