diff --git a/src/compiler/GF/Compile/GrammarToLPGF.hs b/src/compiler/GF/Compile/GrammarToLPGF.hs index 00b23e99f..528f6d1ef 100644 --- a/src/compiler/GF/Compile/GrammarToLPGF.hs +++ b/src/compiler/GF/Compile/GrammarToLPGF.hs @@ -234,56 +234,6 @@ mkCanon2lpgf opts gr am = do _ -> Nothing return (L.Tuple (map fst ts), typ) -{- - C.TableValue lt trvs | isRecordType lt -> go trvs - where - go :: [C.TableRowValue] -> Either String (L.LinFun, Maybe C.LinType) - go [C.TableRow _ lv] = val2lin lv - go trvs = do - let grps = flip L.groupBy trvs $ \tr1 tr2 -> - let - C.TableRow (C.RecordPattern (C.RecordRow lid1 (C.ParamPattern (C.Param pid1 _)):_)) _ = tr1 - C.TableRow (C.RecordPattern (C.RecordRow lid2 (C.ParamPattern (C.Param pid2 _)):_)) _ = tr2 - in lid1 == lid2 && pid1 == pid2 - ts <- forM grps $ \grp -> - go =<< forM grp (\row -> - case row of - C.TableRow (C.RecordPattern []) lv -> return row - C.TableRow (C.RecordPattern (C.RecordRow _ (C.ParamPattern (C.Param _ [])):rrs)) lv -> return $ C.TableRow (C.RecordPattern rrs) lv - C.TableRow (C.RecordPattern rrs) lv -> return $ C.TableRow (C.RecordPattern rrs') lv - where - C.RecordRow lid (C.ParamPattern (C.Param pid patts)) = head rrs - C.ParamPattern (C.Param pid2 patts2) = head patts - rrs' = C.RecordRow lid (C.ParamPattern (C.Param pid2 (patts2 ++ tail patts))) : tail rrs - _ -> Left $ printf "Unhandled table row: %s" (show row) - ) - let typ = case ts of - (_, Just tst):_ -> Just $ C.TableType lt tst - _ -> Nothing - return (L.Tuple (map fst ts), typ) - - C.TableValue lt trvs | isParamType lt -> go trvs - where - go :: [C.TableRowValue] -> Either String (L.LinFun, Maybe C.LinType) - go [C.TableRow _ lv] = val2lin lv - go trvs = do - let grps = L.groupBy (\(C.TableRow (C.ParamPattern (C.Param pid1 _)) _) (C.TableRow (C.ParamPattern (C.Param pid2 _)) _) -> pid1 == pid2) trvs - ts <- forM grps $ \grp -> - go =<< forM grp (\row -> - case row of - C.TableRow (C.ParamPattern (C.Param _ [])) lv -> return row - C.TableRow (C.ParamPattern (C.Param _ patts)) lv -> return $ C.TableRow (C.ParamPattern (C.Param pid' patts')) lv - where - C.ParamPattern (C.Param pid1 patts1) = head patts - pid' = pid1 - patts' = patts1 ++ tail patts - _ -> Left $ printf "Unhandled table row: %s" (show row) - ) - let typ = case ts of - (_, Just tst):_ -> Just $ C.TableType lt tst - _ -> Nothing - return (L.Tuple (map fst ts), typ) --} -- TODO TuplePattern, WildPattern? C.TupleValue lvs -> do