summaryrefslogtreecommitdiff
path: root/src/GF/Grammar
diff options
context:
space:
mode:
authorkrasimir <krasimir@chalmers.se>2009-11-07 15:30:57 +0000
committerkrasimir <krasimir@chalmers.se>2009-11-07 15:30:57 +0000
commit2a22325678bac22d16ece1c357e9a9858dc66897 (patch)
tree13c3a79ab813a5ca04d15bc74587f51535677d18 /src/GF/Grammar
parent7c513609f03c5719e0a15c61b7d44abc8d6b56d6 (diff)
check grammar should process the definitions in dependency order. This also ensures that the list of parameters for some parameter type is complete
Diffstat (limited to 'src/GF/Grammar')
-rw-r--r--src/GF/Grammar/Lookup.hs24
1 files changed, 4 insertions, 20 deletions
diff --git a/src/GF/Grammar/Lookup.hs b/src/GF/Grammar/Lookup.hs
index 0cd46a9b9..ef1395d1f 100644
--- a/src/GF/Grammar/Lookup.hs
+++ b/src/GF/Grammar/Lookup.hs
@@ -140,28 +140,12 @@ allOrigInfos gr m = errVal [] $ do
where
look = lookupOrigInfo gr m
-lookupParams :: SourceGrammar -> Ident -> Ident -> Err ([Param],Maybe [Term])
-lookupParams gr = look True where
- look isTop m c = do
- mo <- lookupModule gr m
- info <- lookupIdentInfo mo c
- case info of
- ResParam (Just psm) m -> return (psm,m)
- AnyInd _ n -> look False n c
- _ -> Bad $ render (ppIdent c <+> text "has no parameters defined in resource" <+> ppIdent m)
- lookExt m c =
- checks [look False n c | n <- allExtensions gr m]
-
lookupParamValues :: SourceGrammar -> Ident -> Ident -> Err [Term]
lookupParamValues gr m c = do
- (ps,mpv) <- lookupParams gr m c
- case mpv of
- Just ts -> return ts
- _ -> liftM concat $ mapM mkPar ps
- where
- mkPar (f,co) = do
- vs <- liftM combinations $ mapM (\(_,_,ty) -> allParamValues gr ty) co
- return $ map (mkApp (QC m f)) vs
+ (_,info) <- lookupOrigInfo gr m c
+ case info of
+ ResParam _ (Just pvs) -> return pvs
+ _ -> Bad $ render (ppIdent c <+> text "has no parameter values defined in resource" <+> ppIdent m)
allParamValues :: SourceGrammar -> Type -> Err [Term]
allParamValues cnc ptyp = case ptyp of