diff options
| author | aarne <aarne@chalmers.se> | 2011-09-22 07:40:19 +0000 |
|---|---|---|
| committer | aarne <aarne@chalmers.se> | 2011-09-22 07:40:19 +0000 |
| commit | baa9bcd9d072277261d0bf85c9623a0db9e8f9d6 (patch) | |
| tree | dfecc320786f9c0700f85d995ddeec251e406d25 /src/compiler/GF | |
| parent | ea04171fc6dfd0c38b69da02b60b0361487d7e5c (diff) | |
documented the ss command
Diffstat (limited to 'src/compiler/GF')
| -rw-r--r-- | src/compiler/GF/Command/Commands.hs | 3 | ||||
| -rw-r--r-- | src/compiler/GF/Grammar/Analyse.hs | 4 |
2 files changed, 5 insertions, 2 deletions
diff --git a/src/compiler/GF/Command/Commands.hs b/src/compiler/GF/Command/Commands.hs index a743ee1f0..f3c2790fd 100644 --- a/src/compiler/GF/Command/Commands.hs +++ b/src/compiler/GF/Command/Commands.hs @@ -859,10 +859,13 @@ allCommands env@(pgf, mos) = Map.fromList [ "Show compiled source code, i.e. as it is included in GF object files.", "This command requires a source grammar to be in scope, imported with 'import -retain'.", "The optional MODULE arguments cause just these modules to be shown.", + "The -size and -detailedsize options show code size as the number of constructor nodes.", "This command must be a line of its own, and thus cannot be a part of a pipe." ], options = [ + ("detailedsize", "instead of code, show the sizes of all judgements and modules"), ("save", "save each MODULE in file MODULE.gfh instead of printing it on terminal"), + ("size", "instead of code, show the sizes of all modules"), ("strip","show only type signatures of oper's and lin's, not their definitions") ], examples = [ diff --git a/src/compiler/GF/Grammar/Analyse.hs b/src/compiler/GF/Grammar/Analyse.hs index b8c9f5042..8d41d1713 100644 --- a/src/compiler/GF/Grammar/Analyse.hs +++ b/src/compiler/GF/Grammar/Analyse.hs @@ -106,7 +106,7 @@ sizeInfo i = case i of ResOverload is fs -> 1 + sum [sizeTerm ty + sizeTerm tr | (L _ ty, L _ tr) <- fs] CncCat mty mte mtf -> 1 + msize mty -- ignoring lindef and printname CncFun mict mte mtf -> 1 + msize mte -- ignoring type and printname - AnyInd b f -> 0 + AnyInd b f -> -1 -- just to ignore these in the size _ -> 0 where msize mt = case mt of @@ -121,7 +121,7 @@ sizesModule :: SourceModule -> (Int, [(Ident,Int)]) sizesModule (_,m) = let js = Map.toList (jments m) - tb = [(i,sizeInfo j) | (i,j) <- js] + tb = [(i,k) | (i,j) <- js, let k = sizeInfo j, k >= 0] in (length tb + sum (map snd tb),tb) -- the size of a grammar |
