summaryrefslogtreecommitdiff
path: root/src/GF/Devel/Lookup.hs
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2007-11-28 22:11:47 +0000
committeraarne <aarne@cs.chalmers.se>2007-11-28 22:11:47 +0000
commitbe080aff39f3b7047978182055e029a179e2db76 (patch)
treeacb6ea93394b39e2db1e596d5156a3d9f3ce8242 /src/GF/Devel/Lookup.hs
parent813e899ebb4280112f6c81ad582f2e6059db192e (diff)
judgement construction after parsing
Diffstat (limited to 'src/GF/Devel/Lookup.hs')
-rw-r--r--src/GF/Devel/Lookup.hs21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/GF/Devel/Lookup.hs b/src/GF/Devel/Lookup.hs
index c2f60f743..13e854480 100644
--- a/src/GF/Devel/Lookup.hs
+++ b/src/GF/Devel/Lookup.hs
@@ -2,6 +2,7 @@ module GF.Devel.Lookup where
import GF.Devel.Modules
import GF.Devel.Judgements
+import GF.Devel.Macros
import GF.Devel.Terms
import GF.Infra.Ident
@@ -24,7 +25,7 @@ lookupJForm = lookupJField jform
lookupCatContext :: GF -> Ident -> Ident -> Err Context
lookupCatContext gf m c = do
ty <- lookupJField jtype gf m c
- return [] ---- context of ty
+ return $ contextOfType ty
lookupFunType :: GF -> Ident -> Ident -> Err Term
lookupFunType = lookupJField jtype
@@ -35,10 +36,24 @@ lookupLin = lookupJField jlin
lookupLincat :: GF -> Ident -> Ident -> Err Term
lookupLincat = lookupJField jlin
+lookupOperType :: GF -> Ident -> Ident -> Err Term
+lookupOperType = lookupJField jtype
+
+lookupOperDef :: GF -> Ident -> Ident -> Err Term
+lookupOperDef = lookupJField jlin
+
+lookupParams :: GF -> Ident -> Ident -> Err [(Ident,Context)]
+lookupParams gf m c = do
+ ty <- lookupJField jtype gf m c
+ return [(k,contextOfType t) | (k,t) <- contextOfType ty]
+
+lookupParamConstructor :: GF -> Ident -> Ident -> Err Type
+lookupParamConstructor = lookupJField jlin
+
lookupParamValues :: GF -> Ident -> Ident -> Err [Term]
lookupParamValues gf m c = do
- j <- lookupJudgement gf m c
- case jdef j of
+ d <- lookupJField jdef gf m c
+ case d of
V _ ts -> return ts
_ -> raise "no parameter values"