summaryrefslogtreecommitdiff
path: root/src/GF
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2006-05-24 15:40:15 +0000
committeraarne <aarne@cs.chalmers.se>2006-05-24 15:40:15 +0000
commit1aa8abb074787dde7124a0e548b98dfbf670d409 (patch)
treec834383db79c96a77ab2c9196cae836be693874b /src/GF
parent750ef2ca30b7e075d0a0b1404ee2dc741b3f2166 (diff)
updated dialogue to multimodal ; bug fixes in grammar compilation
Diffstat (limited to 'src/GF')
-rw-r--r--src/GF/Canon/Look.hs3
-rw-r--r--src/GF/Grammar/Lookup.hs20
2 files changed, 16 insertions, 7 deletions
diff --git a/src/GF/Canon/Look.hs b/src/GF/Canon/Look.hs
index 1fef9b586..1ac39c695 100644
--- a/src/GF/Canon/Look.hs
+++ b/src/GF/Canon/Look.hs
@@ -158,6 +158,9 @@ ccompute cnc = comp []
R rs -> maybe (Bad ("unknown label" +++ prt l +++ "in" +++ prt u'))
return $
lookup l [ (x,y) | Ass x y <- rs]
+ FV rrs -> do
+ mapM (\r -> compt (P r l)) rrs >>= return . FV
+
_ -> return $ P u' l
FV ts -> liftM FV (mapM compt ts)
C E b -> compt b
diff --git a/src/GF/Grammar/Lookup.hs b/src/GF/Grammar/Lookup.hs
index eaa44c1c9..630b9c204 100644
--- a/src/GF/Grammar/Lookup.hs
+++ b/src/GF/Grammar/Lookup.hs
@@ -72,19 +72,25 @@ lookupResType gr m c = do
CncFun (Just (cat,(cont,val))) _ _ -> do
val' <- return val ---- lockRecType cat val
return $ mkProd (cont, val', [])
- CncFun _ _ _ -> do
+ CncFun _ _ _ -> lookFunType m m c
+ AnyInd _ n -> lookupResType gr n c
+ ResParam _ -> return $ typePType
+ ResValue (Yes t) -> return $ qualifAnnotPar m t
+ _ -> Bad $ prt c +++ "has no type defined in resource" +++ prt m
+ _ -> Bad $ prt m +++ "is not a resource"
+ where
+ lookFunType e m c = do
a <- abstractOfConcrete gr m
+ lookFun e m c a
+ lookFun e m c a = do
mu <- lookupModMod gr a
info <- lookupIdentInfo mu c
case info of
- AbsFun (Yes ty) _ -> return $ redirectTerm m ty
+ AbsFun (Yes ty) _ -> return $ redirectTerm e ty
AbsCat _ _ -> return typeType
+ AnyInd _ n -> lookFun e m c n
_ -> prtBad "cannot find type of reused function" c
- AnyInd _ n -> lookupResType gr n c
- ResParam _ -> return $ typePType
- ResValue (Yes t) -> return $ qualifAnnotPar m t
- _ -> Bad $ prt c +++ "has no type defined in resource" +++ prt m
- _ -> Bad $ prt m +++ "is not a resource"
+
lookupParams :: SourceGrammar -> Ident -> Ident -> Err [Param]
lookupParams gr = look True where