diff options
| author | aarne <unknown> | 2004-02-27 07:43:52 +0000 |
|---|---|---|
| committer | aarne <unknown> | 2004-02-27 07:43:52 +0000 |
| commit | 0166b27ee45f24fb60d79498a5d15b4f316191f3 (patch) | |
| tree | 72a5c1aa21ee0856ce1a621d094471d056040385 /src/GF/Source/SourceToGrammar.hs | |
| parent | 2e1b57878329eb6a1822ef43c190f8a2aaaa82b7 (diff) | |
Started with unions.
Diffstat (limited to 'src/GF/Source/SourceToGrammar.hs')
| -rw-r--r-- | src/GF/Source/SourceToGrammar.hs | 11 |
1 files changed, 11 insertions, 0 deletions
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 |
