forked from GitHub/gf-core
restored Int size and last ; added lib/prelude to be the last in any grammar path
This commit is contained in:
@@ -340,10 +340,7 @@ computeLType gr t = do
|
||||
|
||||
Q m c | elem c [cPredef,cPredefAbs] -> return ty
|
||||
Q m c | elem c [zIdent "Int"] ->
|
||||
return $ defLinType
|
||||
---- let ints k = App (Q (IC "Predef") (IC "Ints")) (EInt k) in
|
||||
---- RecType [
|
||||
---- (LIdent "last",ints 9),(LIdent "s", typeStr), (LIdent "size",ints 1)]
|
||||
return $ linTypeInt
|
||||
Q m c | elem c [zIdent "Float",zIdent "String"] -> return defLinType ----
|
||||
|
||||
Q m ident -> checkIn ("module" +++ prt m) $ do
|
||||
|
||||
@@ -221,9 +221,11 @@ reorder abs cg = M.MGrammar $
|
||||
(i,mo) <- mos, M.isModCnc mo,
|
||||
Just r <- [lookup i (M.allExtendSpecs cg la)]]
|
||||
|
||||
predefCDefs = [(IC c, CncCat (Yes GM.defLinType) Nope Nope) |
|
||||
---- lindef,printname
|
||||
c <- ["Float","Int","String"]]
|
||||
predefCDefs =
|
||||
(IC "Int", CncCat (Yes Look.linTypeInt) Nope Nope) :
|
||||
[(IC c, CncCat (Yes GM.defLinType) Nope Nope) |
|
||||
---- lindef,printname
|
||||
c <- ["Float","String"]]
|
||||
|
||||
sortIds = sortBy (\ (f,_) (g,_) -> compare f g)
|
||||
nubFlags = nubBy (\ (Opt (f,_)) (Opt (g,_)) -> f == g)
|
||||
@@ -304,7 +306,9 @@ type ParamEnv =
|
||||
--- gathers those param types that are actually used in lincats and lin terms
|
||||
paramValues :: SourceGrammar -> ParamEnv
|
||||
paramValues cgr = (labels,untyps,typs) where
|
||||
partyps = nub $ [ty |
|
||||
partyps = nub $
|
||||
[App (Q (IC "Predef") (IC "Ints")) (EInt i) | i <- [1,9]] ---linTypeInt
|
||||
++ [ty |
|
||||
(_,(_,CncCat (Yes (RecType ls)) _ _)) <- jments,
|
||||
ty0 <- [ty | (_, ty) <- unlockTyp ls],
|
||||
ty <- typsFrom ty0
|
||||
@@ -342,7 +346,8 @@ paramValues cgr = (labels,untyps,typs) where
|
||||
untyps =
|
||||
Map.fromList $ concatMap Map.toList [typ | (_,typ) <- Map.toList typs]
|
||||
lincats =
|
||||
[(IC cat,[(LIdent "s",GM.typeStr)]) | cat <- ["Int", "Float", "String"]] ++
|
||||
[(IC "Int",[f | let RecType fs = Look.linTypeInt, f <- fs])] ++
|
||||
[(IC cat,[(LIdent "s",GM.typeStr)]) | cat <- ["Float", "String"]] ++
|
||||
reverse ---- TODO: really those lincats that are reached
|
||||
---- reverse is enough to expel overshadowed ones...
|
||||
[(cat,(unlockTyp ls)) | (_,(cat,CncCat (Yes (RecType ls)) _ _)) <- jments]
|
||||
|
||||
@@ -131,7 +131,7 @@ extendPathEnv lib var ps = do
|
||||
s <- catch (getEnv var) (const (return "")) -- e.g. GF_GRAMMAR_PATH
|
||||
let fs = pFilePaths s
|
||||
let ss = ps ++ fs
|
||||
liftM concat $ mapM allSubdirs $ ss ++ [b ++ "/" ++ s | s <- ss]
|
||||
liftM concat $ mapM allSubdirs $ ss ++ [b ++ "/" ++ s | s <- ss ++ ["prelude"]]
|
||||
|
||||
pFilePaths :: String -> [FilePath]
|
||||
pFilePaths s = case break isPathSep s of
|
||||
|
||||
Reference in New Issue
Block a user