diff options
Diffstat (limited to 'src/GF/Source/SourceToGrammar.hs')
| -rw-r--r-- | src/GF/Source/SourceToGrammar.hs | 23 |
1 files changed, 14 insertions, 9 deletions
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 |
