From bc05653e825e082b70eebf2f420eb5a97610f56c Mon Sep 17 00:00:00 2001 From: aarne Date: Fri, 4 Feb 2005 19:17:57 +0000 Subject: resources and new instantiation syntax --- src/GF/Source/SourceToGrammar.hs | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'src/GF/Source/SourceToGrammar.hs') diff --git a/src/GF/Source/SourceToGrammar.hs b/src/GF/Source/SourceToGrammar.hs index 963d4a60f..bdd1b54d3 100644 --- a/src/GF/Source/SourceToGrammar.hs +++ b/src/GF/Source/SourceToGrammar.hs @@ -96,9 +96,14 @@ transModDef x = case x of GM.ModMod (GM.Module (GM.MTUnion mtyp' imps') mstat' [] [] [] NT)) MWith m opens -> do - m' <- transIdent m - opens' <- mapM transOpen opens - return (id', GM.ModWith mtyp' mstat' m' opens') + m' <- transIdent m + opens' <- mapM transOpen opens + return (id', GM.ModWith mtyp' mstat' m' [] opens') + MWithE extends m opens -> do + extends' <- mapM transIdent extends + m' <- transIdent m + opens' <- mapM transOpen opens + return (id', GM.ModWith mtyp' mstat' m' extends' opens') where mkModRes id mtyp body = do id' <- transIdent id @@ -159,7 +164,7 @@ transExtend x = case x of transOpens :: Opens -> Err [GM.OpenSpec Ident] transOpens x = case x of NoOpens -> return [] - Opens opens -> mapM transOpen opens + OpenIn opens -> mapM transOpen opens transOpen :: Open -> Err (GM.OpenSpec Ident) transOpen x = case x of @@ -257,7 +262,7 @@ transResDef x = case x of transParDef :: ParDef -> Err (Ident, [G.Param]) transParDef x = case x of - ParDef id params -> liftM2 (,) (transIdent id) (mapM transParConstr params) + ParDefDir id params -> liftM2 (,) (transIdent id) (mapM transParConstr params) ParDefAbs id -> liftM2 (,) (transIdent id) (return []) _ -> Bad $ "illegal definition in resource:" ++++ printTree x @@ -549,12 +554,12 @@ transOldGrammar opts name0 x = case x of DefPrintOld printdefs -> (a,r,d:c,ps) DefPackage m ds -> (a,r,c,(m,ds):ps) _ -> (a,r,c,ps) - mkAbs a = MModule q (MTAbstract absName) (MBody ne (Opens []) (topDefs a)) - mkRes ps r = MModule q (MTResource resName) (MBody ne (Opens ops) (topDefs r)) + mkAbs a = MModule q (MTAbstract absName) (MBody ne (OpenIn []) (topDefs a)) + mkRes ps r = MModule q (MTResource resName) (MBody ne (OpenIn ops) (topDefs r)) where ops = map OName ps mkCnc ps r = MModule q (MTConcrete cncName absName) - (MBody ne (Opens (map OName (resName:ps))) (topDefs r)) - mkPack (m, ds) = MModule q (MTResource m) (MBody ne (Opens []) (topDefs ds)) + (MBody ne (OpenIn (map OName (resName:ps))) (topDefs r)) + mkPack (m, ds) = MModule q (MTResource m) (MBody ne (OpenIn []) (topDefs ds)) topDefs t = t ne = NoExt q = CMCompl -- cgit v1.2.3