From 9f867c4922cccb6e61b273a55103e2afaeac4bde Mon Sep 17 00:00:00 2001 From: aarne Date: Sun, 11 Dec 2005 17:48:55 +0000 Subject: float parsing fixed --- src/GF/Canon/CMacros.hs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/GF/Canon/CMacros.hs') diff --git a/src/GF/Canon/CMacros.hs b/src/GF/Canon/CMacros.hs index 2facd6e65..bb80fb0fa 100644 --- a/src/GF/Canon/CMacros.hs +++ b/src/GF/Canon/CMacros.hs @@ -227,6 +227,20 @@ allLinValues trm = do lts <- allLinFields trm mapM (mapPairsM (return . allCaseValues)) lts +-- | to gather all fields; does not assume s naming of fields; +-- used in Morpho only +allAllLinValues :: Term -> Err [[(Label,[([Patt],Term)])]] +allAllLinValues trm = do + lts <- allFields trm + mapM (mapPairsM (return . allCaseValues)) lts + where + allFields trm = case trm of + R rs -> return [[(l,t) | Ass l t <- rs]] + FV ts -> do + lts <- mapM allFields ts + return $ concat lts + _ -> prtBad "fields can only be sought in a record not in" trm + -- | to gather all linearizations, even from nested records; params ignored allLinBranches :: Term -> [([Label],Term)] allLinBranches trm = case trm of -- cgit v1.2.3