diff options
| author | aarne <unknown> | 2004-03-24 15:09:06 +0000 |
|---|---|---|
| committer | aarne <unknown> | 2004-03-24 15:09:06 +0000 |
| commit | dc71ffcf5bae1f2b91467de273c71e7c3294acb3 (patch) | |
| tree | a4e705bba717aa9f7421c000cfa5756d5eb8462b /src/GF/Grammar | |
| parent | 31836c0da9ba7a716ee0480e6219d771da4999fa (diff) | |
Restoring old functionality
Diffstat (limited to 'src/GF/Grammar')
| -rw-r--r-- | src/GF/Grammar/AppPredefined.hs | 26 | ||||
| -rw-r--r-- | src/GF/Grammar/Macros.hs | 6 |
2 files changed, 30 insertions, 2 deletions
diff --git a/src/GF/Grammar/AppPredefined.hs b/src/GF/Grammar/AppPredefined.hs index 179272032..eceb749b0 100644 --- a/src/GF/Grammar/AppPredefined.hs +++ b/src/GF/Grammar/AppPredefined.hs @@ -3,12 +3,34 @@ module AppPredefined where import Operations import Grammar import Ident -import PrGrammar (prt) +import Macros +import PrGrammar (prt,prtBad) ---- import PGrammar (pTrm) -- predefined function type signatures and definitions. AR 12/3/2003. ----- typPredefined :: Term -> Err Type +isInPredefined :: Ident -> Bool +isInPredefined = err (const True) (const False) . typPredefined + +typPredefined :: Ident -> Err Type +typPredefined c@(IC f) = case f of + "Int" -> return typePType + "PBool" -> return typePType +--- "PFalse" -> -- hidden +--- "PTrue" -> + "dp" -> return $ mkFunType [cnPredef "Int",typeTok] typeTok + "drop" -> return $ mkFunType [cnPredef "Int",typeTok] typeTok + "eqInt" -> return $ mkFunType [cnPredef "Int",cnPredef "Int"] (cnPredef "PBool") + "eqStr" -> return $ mkFunType [typeTok,typeTok] (cnPredef "PBool") + "length" -> return $ mkFunType [typeTok] (cnPredef "Int") + "occur" -> return $ mkFunType [typeTok,typeTok] (cnPredef "PBool") + "plus" -> return $ mkFunType [cnPredef "Int",cnPredef "Int"] (cnPredef "PInt") +---- "read" -> (P : Type) -> Tok -> P +---- "show" -> (P : Type) -> P -> Tok + "take" -> return $ mkFunType [cnPredef "Int",typeTok] typeTok + "tk" -> return $ mkFunType [cnPredef "Int",typeTok] typeTok + _ -> prtBad "unknown in Predef:" c +typPredefined c = prtBad "unknown in Predef:" c appPredefined :: Term -> Term appPredefined t = case t of diff --git a/src/GF/Grammar/Macros.hs b/src/GF/Grammar/Macros.hs index 291ea7521..cc43377cb 100644 --- a/src/GF/Grammar/Macros.hs +++ b/src/GF/Grammar/Macros.hs @@ -40,6 +40,12 @@ qq (m,c) = Q m c typeForm = qTypeForm ---- no need to dist any more +cPredef :: Ident +cPredef = identC "Predef" + +cnPredef :: String -> Term +cnPredef f = Q cPredef (identC f) + typeFormCnc :: Type -> Err (Context, Type) typeFormCnc t = case t of Prod x a b -> do |
