summaryrefslogtreecommitdiff
path: root/src/compiler/GFI.hs
diff options
context:
space:
mode:
authoraarne <aarne@chalmers.se>2011-09-21 13:24:59 +0000
committeraarne <aarne@chalmers.se>2011-09-21 13:24:59 +0000
commitbd22b935de38f7a25169905a787e36b6dbe37792 (patch)
tree54638550f3af1725480eb3b69011f4f884e39a9f /src/compiler/GFI.hs
parent89fb9a7fdfc3b1be52026ce3b0badf7889a407b6 (diff)
statistics on grammar size in terms of constructors
Diffstat (limited to 'src/compiler/GFI.hs')
-rw-r--r--src/compiler/GFI.hs19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/compiler/GFI.hs b/src/compiler/GFI.hs
index b0e36462e..28f7b1dc2 100644
--- a/src/compiler/GFI.hs
+++ b/src/compiler/GFI.hs
@@ -224,13 +224,20 @@ execute1 opts gfenv0 s0 =
let mygr = strip $ case ts of
_:_ -> mGrammar [(i,m) | (i,m) <- modules sgr, elem (showIdent i) ts]
[] -> sgr
- if elem "-save" os
- then mapM_
- (\ m@(i,_) -> let file = (showIdent i ++ ".gfh") in
- writeFile file (render (ppModule Qualified m)) >> putStrLn ("wrote " ++ file))
- (modules mygr)
- else putStrLn $ render $ ppGrammar mygr
+ case 0 of
+ _ | elem "-detailedsize" os -> putStrLn (printSizesGrammar mygr)
+ _ | elem "-size" os -> do
+ let sz = sizesGrammar mygr
+ putStrLn $ unlines $
+ ("total\t" ++ show (fst sz)):
+ [showIdent j ++ "\t" ++ show (fst k) | (j,k) <- snd sz]
+ _ | elem "-save" os -> mapM_
+ (\ m@(i,_) -> let file = (showIdent i ++ ".gfh") in
+ writeFile file (render (ppModule Qualified m)) >> putStrLn ("wrote " ++ file))
+ (modules mygr)
+ _ -> putStrLn $ render $ ppGrammar mygr
continue gfenv
+
dependency_graph ws =
do let stop = case ws of
('-':'o':'n':'l':'y':'=':fs):_ -> Just $ chunks ',' fs