From 0166b27ee45f24fb60d79498a5d15b4f316191f3 Mon Sep 17 00:00:00 2001 From: aarne Date: Fri, 27 Feb 2004 07:43:52 +0000 Subject: Started with unions. --- src/GF/Source/SourceToGrammar.hs | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/GF/Source/SourceToGrammar.hs') diff --git a/src/GF/Source/SourceToGrammar.hs b/src/GF/Source/SourceToGrammar.hs index 5e085b199..9834fb0cf 100644 --- a/src/GF/Source/SourceToGrammar.hs +++ b/src/GF/Source/SourceToGrammar.hs @@ -76,6 +76,11 @@ transModDef x = case x of return (id',GM.ModMod (GM.Module mtyp' mstat' flags' extends' opens' defs')) MReuse _ -> do return (id', GM.ModMod (GM.Module mtyp' mstat' [] Nothing [] NT)) + MUnion imps -> do + imps' <- mapM transIncluded imps + return (id', + GM.ModMod (GM.Module (GM.MTUnion mtyp' imps') mstat' [] Nothing [] NT)) + MWith m opens -> do m' <- transIdent m opens' <- mapM transOpen opens @@ -154,6 +159,12 @@ transQualOpen x = case x of QOInterface -> return GM.OQInterface QOIncompl -> return GM.OQIncomplete +transIncluded :: Included -> Err (Ident,[Ident]) +transIncluded x = case x of + IAll i -> liftM (flip (curry id) []) $ transIdent i + ISome i ids -> liftM2 (curry id) (transIdent i) (mapM transIdent ids) + + transAbsDef :: TopDef -> Err (Either [(Ident, G.Info)] [GO.Option]) transAbsDef x = case x of DefCat catdefs -> do -- cgit v1.2.3