forked from GitHub/gf-core
compact printing of gf files
This commit is contained in:
@@ -19,6 +19,7 @@ module GF.Compile.Compile (compileModule, compileEnvShSt, compileOne,
|
||||
import GF.Grammar.Grammar
|
||||
import GF.Infra.Ident
|
||||
import GF.Infra.Option
|
||||
import GF.Infra.CompactPrint
|
||||
import GF.Grammar.PrGrammar
|
||||
import GF.Compile.Update
|
||||
import GF.Grammar.Lookup
|
||||
@@ -331,7 +332,7 @@ generateModuleCode opts path minfo@(name,info) = do
|
||||
let rminfo = if isCompilable info then minfo
|
||||
else (name, ModMod emptyModule)
|
||||
let (file,out) = (gfrFile pname, prGrammar (MGrammar [rminfo]))
|
||||
putp (" wrote file" +++ file) $ ioeIO $ writeFile file out
|
||||
putp (" wrote file" +++ file) $ ioeIO $ writeFile file $ compactPrint out
|
||||
_ -> return ()
|
||||
(file,out) <- do
|
||||
code <- return $ MkGFC.prCanonModInfo minfo'
|
||||
|
||||
11
src/GF/Infra/CompactPrint.hs
Normal file
11
src/GF/Infra/CompactPrint.hs
Normal file
@@ -0,0 +1,11 @@
|
||||
module GF.Infra.CompactPrint where
|
||||
import Data.Char
|
||||
|
||||
compactPrint = concat . map spaceIf . words
|
||||
|
||||
spaceIf w = case w of
|
||||
_ | keyword w -> "\n" ++ w
|
||||
c:cs | isAlpha c || isDigit c -> " " ++ w
|
||||
_ -> w
|
||||
|
||||
keyword w = elem w ["cat","fun","lin","lincat","oper","param"]
|
||||
@@ -107,8 +107,15 @@ trAnyDef (i,info) = let i' = tri i in case info of
|
||||
CncFun _ ptr ppr ->
|
||||
[P.DefLin [trDef i' nope ptr]]
|
||||
---- P.DefPrintFun [P.PrintDef i' (trt pr)]]
|
||||
{-
|
||||
---- encoding of AnyInd without changing syntax. AR 20/9/2007
|
||||
AnyInd s b ->
|
||||
[P.DefOper [P.DDef [mkName i]
|
||||
(P.EApp (P.EInt (if s then 1 else 0)) (P.EIdent (tri b)))]]
|
||||
-}
|
||||
_ -> []
|
||||
|
||||
|
||||
trDef :: Ident -> Perh Type -> Perh Term -> P.Def
|
||||
trDef i pty ptr = case (pty,ptr) of
|
||||
(Nope, Nope) -> P.DDef [mkName i] (P.EMeta) ---
|
||||
@@ -243,4 +250,4 @@ trLabelIdent i = identC $ case i of
|
||||
LVar i -> "v" ++ show i --- should not happen
|
||||
|
||||
mkName :: Ident -> P.Name
|
||||
mkName = P.IdentName
|
||||
mkName = P.IdentName
|
||||
|
||||
@@ -305,6 +305,14 @@ transResDef x = case x of
|
||||
| (p,pars) <- pardefs']
|
||||
++ [(f, G.ResValue (yes (M.mkProdSimple co (G.Cn p),Nothing))) |
|
||||
(p,pars) <- pardefs', (f,co) <- pars]
|
||||
|
||||
{-
|
||||
---- encoding of AnyInd without changing syntax. AR 20/9/2007
|
||||
DefOper [DDef [c] (EApp (EInt status) (EIdent mo))] -> do
|
||||
c' <- transName c
|
||||
mo' <- transIdent mo
|
||||
return $ Left [(c',G.AnyInd (status==1) mo')]
|
||||
-}
|
||||
DefOper defs -> do
|
||||
defs' <- liftM concat $ mapM getDefs defs
|
||||
returnl $ concatMap mkOverload [(f, G.ResOper pt pe) | (f,(pt,pe)) <- defs']
|
||||
|
||||
@@ -191,6 +191,11 @@ gfdoc: tools/$(GF_DOC_EXE)
|
||||
tools/$(GF_DOC_EXE): tools/GFDoc.hs
|
||||
$(GHMAKE) $(GHCOPTFLAGS) -o $@ $^
|
||||
|
||||
gfc:
|
||||
$(GHMAKE) $(GHCOPTFLAGS) -o gfc GF/Devel/GFC.hs
|
||||
strip gfc
|
||||
mv gfc ../bin/
|
||||
|
||||
gfcc:
|
||||
$(GHMAKE) $(GHCOPTFLAGS) -o gfcc GF/Canon/GFCC/Shell.hs
|
||||
strip gfcc
|
||||
|
||||
Reference in New Issue
Block a user