summaryrefslogtreecommitdiff
path: root/src/GF/Source/SourceToGrammar.hs
diff options
context:
space:
mode:
authoraarne <unknown>2004-02-27 07:43:52 +0000
committeraarne <unknown>2004-02-27 07:43:52 +0000
commit0166b27ee45f24fb60d79498a5d15b4f316191f3 (patch)
tree72a5c1aa21ee0856ce1a621d094471d056040385 /src/GF/Source/SourceToGrammar.hs
parent2e1b57878329eb6a1822ef43c190f8a2aaaa82b7 (diff)
Started with unions.
Diffstat (limited to 'src/GF/Source/SourceToGrammar.hs')
-rw-r--r--src/GF/Source/SourceToGrammar.hs11
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