From 272514b914d3cb715d09f1476e41bae731c98881 Mon Sep 17 00:00:00 2001 From: Joe Crayne Date: Tue, 19 Mar 2019 05:01:37 -0400 Subject: Grok ternary operator. --- monkeypatch.hs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/monkeypatch.hs b/monkeypatch.hs index d9fb192..a835e86 100644 --- a/monkeypatch.hs +++ b/monkeypatch.hs @@ -232,6 +232,15 @@ grokExpression (CUnary CAdrOp (CVar cv0 _) _) = do , compIntro = Map.empty , comp = hsvar hv } +grokExpression (CCond cond (Just thn) els _) = do + (cs,c) <- grokExpression cond + (ts,t) <- grokExpression thn + (es,e) <- grokExpression els + let tt = foldr applyComputation t ts + ee = foldr applyComputation e es + return $ (,) cs $ fmap (\cnd -> If () cnd (comp tt) (comp ee)) c + { compFree = compFree ee `Map.union` compFree tt `Map.union` compFree c + } grokExpression (CCast (CDecl [ CTypeSpec (CVoidType _) ] [ ( Just (CDeclr Nothing [ CPtrDeclr [] _ ] Nothing [] _) , Nothing , Nothing) ] _) -- cgit v1.2.3