summaryrefslogtreecommitdiff
path: root/src/GF/Grammar
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2007-10-16 17:38:57 +0000
committeraarne <aarne@cs.chalmers.se>2007-10-16 17:38:57 +0000
commitcec3d7d603a9e810c3b7f1287f7328ec39cff98d (patch)
tree5bbe992775ad6bd4ad78a6e2fc6c9c99c462ff77 /src/GF/Grammar
parent869da61a5b965f4a6db9d54706ce333a902298d4 (diff)
found and temporarily solved the bug in LangGer gfcc generation
Diffstat (limited to 'src/GF/Grammar')
-rw-r--r--src/GF/Grammar/Lookup.hs20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/GF/Grammar/Lookup.hs b/src/GF/Grammar/Lookup.hs
index a0d0d1cea..01f6c20a1 100644
--- a/src/GF/Grammar/Lookup.hs
+++ b/src/GF/Grammar/Lookup.hs
@@ -24,6 +24,7 @@ module GF.Grammar.Lookup (
lookupFirstTag,
lookupValueIndex,
lookupIndexValue,
+ allOrigInfos,
allParamValues,
lookupAbsDef,
lookupLincat,
@@ -121,6 +122,17 @@ lookupOverload gr m c = do
_ -> Bad $ prt c +++ "is not an overloaded operation"
_ -> Bad $ prt m +++ "is not a resource"
+lookupOrigInfo :: SourceGrammar -> Ident -> Ident -> Err Info
+lookupOrigInfo gr m c = do
+ mi <- lookupModule gr m
+ case mi of
+ ModMod mo -> do
+ info <- lookupIdentInfo mo c
+ case info of
+ AnyInd _ n -> lookupOrigInfo gr n c
+ i -> return i
+ _ -> Bad $ prt m +++ "is not run-time module"
+
lookupParams :: SourceGrammar -> Ident -> Ident -> Err ([Param],Maybe PValues)
lookupParams gr = look True where
look isTop m c = do
@@ -169,6 +181,14 @@ lookupIndexValue gr ty i = do
then return $ ts !! i
else Bad $ "no value for index" +++ show i +++ "in" +++ prt ty
+allOrigInfos :: SourceGrammar -> Ident -> [(Ident,Info)]
+allOrigInfos gr m = errVal [] $ do
+ mi <- lookupModule gr m
+ case mi of
+ ModMod mo -> return [(c,i) | (c,_) <- tree2list (jments mo), Ok i <- [look c]]
+ where
+ look = lookupOrigInfo gr m
+
allParamValues :: SourceGrammar -> Type -> Err [Term]
allParamValues cnc ptyp = case ptyp of
App (Q (IC "Predef") (IC "Ints")) (EInt n) ->