diff options
| author | aarne <aarne@cs.chalmers.se> | 2007-10-16 17:38:57 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2007-10-16 17:38:57 +0000 |
| commit | cec3d7d603a9e810c3b7f1287f7328ec39cff98d (patch) | |
| tree | 5bbe992775ad6bd4ad78a6e2fc6c9c99c462ff77 /src/GF/Grammar | |
| parent | 869da61a5b965f4a6db9d54706ce333a902298d4 (diff) | |
found and temporarily solved the bug in LangGer gfcc generation
Diffstat (limited to 'src/GF/Grammar')
| -rw-r--r-- | src/GF/Grammar/Lookup.hs | 20 |
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) -> |
