diff options
| author | aarne <aarne@cs.chalmers.se> | 2007-12-08 10:37:49 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2007-12-08 10:37:49 +0000 |
| commit | 5aca148d2082a057fce7e458b094a1f62b38c073 (patch) | |
| tree | 3b84816e97a8e36faeff802f31d359c34e2c2cfa /src/GF/Devel/Grammar | |
| parent | 84c9f3f4830eb697e0710a9ab49229b840f0f783 (diff) | |
names resolve in new GFtoGFCC
Diffstat (limited to 'src/GF/Devel/Grammar')
| -rw-r--r-- | src/GF/Devel/Grammar/Construct.hs | 3 | ||||
| -rw-r--r-- | src/GF/Devel/Grammar/Macros.hs | 9 |
2 files changed, 8 insertions, 4 deletions
diff --git a/src/GF/Devel/Grammar/Construct.hs b/src/GF/Devel/Grammar/Construct.hs index 92e88b577..dba1ee2fd 100644 --- a/src/GF/Devel/Grammar/Construct.hs +++ b/src/GF/Devel/Grammar/Construct.hs @@ -26,6 +26,9 @@ listModules = assocs.gfmodules addModule :: Ident -> Module -> GF -> GF addModule c m gf = gf {gfmodules = insert c m (gfmodules gf)} +gfModules :: [(Ident,Module)] -> GF +gfModules ms = emptyGF {gfmodules = fromList ms} + -- abstractions on Module emptyModule :: Ident -> Module diff --git a/src/GF/Devel/Grammar/Macros.hs b/src/GF/Devel/Grammar/Macros.hs index a9059578c..71e7fdde5 100644 --- a/src/GF/Devel/Grammar/Macros.hs +++ b/src/GF/Devel/Grammar/Macros.hs @@ -171,11 +171,12 @@ label2ident (LIdent c) = identC c -- to apply a term operation to every term in a judgement, module, grammar termOpGF :: Monad m => (Term -> m Term) -> GF -> m GF -termOpGF f g = do - ms <- mapMapM fm (gfmodules g) +termOpGF f = moduleOpGF (termOpModule f) + +moduleOpGF :: Monad m => (Module -> m Module) -> GF -> m GF +moduleOpGF f g = do + ms <- mapMapM f (gfmodules g) return g {gfmodules = ms} - where - fm = termOpModule f termOpModule :: Monad m => (Term -> m Term) -> Module -> m Module termOpModule f = judgementOpModule fj where |
