summaryrefslogtreecommitdiff
path: root/src/GF/Devel/Grammar
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2007-12-08 10:37:49 +0000
committeraarne <aarne@cs.chalmers.se>2007-12-08 10:37:49 +0000
commit5aca148d2082a057fce7e458b094a1f62b38c073 (patch)
tree3b84816e97a8e36faeff802f31d359c34e2c2cfa /src/GF/Devel/Grammar
parent84c9f3f4830eb697e0710a9ab49229b840f0f783 (diff)
names resolve in new GFtoGFCC
Diffstat (limited to 'src/GF/Devel/Grammar')
-rw-r--r--src/GF/Devel/Grammar/Construct.hs3
-rw-r--r--src/GF/Devel/Grammar/Macros.hs9
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