1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
|
(Adapted from KeY statistics by Vladimir Klebanov)
This is GF right now:
Total Physical Source Lines of Code (SLOC) = 42,467
Development Effort Estimate, Person-Years (Person-Months) = 10.24 (122.932)
(Basic COCOMO model, Person-Months = 2.4 * (KSLOC**1.05))
Schedule Estimate, Years (Months) = 1.30 (15.56)
(Basic COCOMO model, Months = 2.5 * (person-months**0.38))
Estimated Average Number of Developers (Effort/Schedule) = 7.90
Total Estimated Cost to Develop = $ 1,383,870
(average salary = $56,286/year, overhead = 2.40).
SLOCCount, Copyright (C) 2001-2004 David A. Wheeler
----------- basis of counting: Haskell code + BNFC code - generated Happy parsers
-- GF/src% wc -l *.hs GF/*.hs GF/*/*.hs GF/*/*/*.hs GF/*/*.cf JavaGUI/*.java
-- date Fri Jun 3 10:00:31 CEST 2005
104 GF.hs
402 GF/API.hs
98 GF/GFModes.hs
379 GF/Shell.hs
4 GF/Today.hs
43 GF/API/BatchTranslate.hs
145 GF/API/GrammarToHaskell.hs
77 GF/API/IOGrammar.hs
25 GF/API/MyParser.hs
177 GF/Canon/AbsGFC.hs
37 GF/Canon/ByLine.hs
192 GF/Canon/CanonToGrammar.hs
293 GF/Canon/CMacros.hs
79 GF/Canon/GetGFC.hs
86 GF/Canon/GFC.hs
291 GF/Canon/LexGFC.hs
201 GF/Canon/Look.hs
235 GF/Canon/MkGFC.hs
46 GF/Canon/PrExp.hs
352 GF/Canon/PrintGFC.hs
147 GF/Canon/Share.hs
207 GF/Canon/SkelGFC.hs
46 GF/Canon/TestGFC.hs
49 GF/Canon/Unlex.hs
202 GF/CF/CanonToCF.hs
213 GF/CF/CF.hs
217 GF/CF/CFIdent.hs
62 GF/CF/CFtoGrammar.hs
47 GF/CF/CFtoSRG.hs
206 GF/CF/ChartParser.hs
191 GF/CF/EBNF.hs
45 GF/CFGM/AbsCFG.hs
312 GF/CFGM/LexCFG.hs
157 GF/CFGM/PrintCFG.hs
109 GF/CFGM/PrintCFGrammar.hs
85 GF/CF/PPrCF.hs
150 GF/CF/PrLBNF.hs
106 GF/CF/Profile.hs
141 GF/Compile/BackOpt.hs
763 GF/Compile/CheckGrammar.hs
337 GF/Compile/Compile.hs
136 GF/Compile/Extend.hs
124 GF/Compile/GetGrammar.hs
282 GF/Compile/GrammarToCanon.hs
93 GF/Compile/MkConcrete.hs
128 GF/Compile/MkResource.hs
83 GF/Compile/MkUnion.hs
146 GF/Compile/ModDeps.hs
294 GF/Compile/NewRename.hs
227 GF/Compile/Optimize.hs
76 GF/Compile/PGrammar.hs
84 GF/Compile/PrOld.hs
119 GF/Compile/Rebuild.hs
63 GF/Compile/RemoveLiT.hs
274 GF/Compile/Rename.hs
535 GF/Compile/ShellState.hs
135 GF/Compile/Update.hs
129 GF/Conversion/GFC.hs
149 GF/Conversion/GFCtoSimple.hs
53 GF/Conversion/MCFGtoCFG.hs
46 GF/Conversion/RemoveEpsilon.hs
102 GF/Conversion/RemoveErasing.hs
82 GF/Conversion/RemoveSingletons.hs
137 GF/Conversion/SimpleToFinite.hs
26 GF/Conversion/SimpleToMCFG.hs
230 GF/Conversion/Types.hs
143 GF/Data/Assoc.hs
118 GF/Data/BacktrackM.hs
20 GF/Data/ErrM.hs
119 GF/Data/GeneralDeduction.hs
30 GF/Data/Glue.hs
67 GF/Data/IncrementalDeduction.hs
61 GF/Data/Map.hs
662 GF/Data/Operations.hs
127 GF/Data/OrdMap2.hs
120 GF/Data/OrdSet.hs
193 GF/Data/Parsers.hs
64 GF/Data/RedBlack.hs
150 GF/Data/RedBlackSet.hs
19 GF/Data/SharedString.hs
127 GF/Data/SortedList.hs
134 GF/Data/Str.hs
120 GF/Data/Trie2.hs
129 GF/Data/Trie.hs
71 GF/Data/Utilities.hs
243 GF/Data/Zipper.hs
78 GF/Embed/EmbedAPI.hs
113 GF/Embed/EmbedCustom.hs
137 GF/Embed/EmbedParsing.hs
50 GF/Formalism/CFG.hs
51 GF/Formalism/GCFG.hs
58 GF/Formalism/MCFG.hs
246 GF/Formalism/SimpleGFC.hs
349 GF/Formalism/Utilities.hs
30 GF/Fudgets/ArchEdit.hs
134 GF/Fudgets/CommandF.hs
51 GF/Fudgets/EventF.hs
59 GF/Fudgets/FudgetOps.hs
37 GF/Fudgets/UnicodeF.hs
86 GF/Grammar/AbsCompute.hs
38 GF/Grammar/Abstract.hs
149 GF/Grammar/AppPredefined.hs
312 GF/Grammar/Compute.hs
215 GF/Grammar/Grammar.hs
46 GF/Grammar/Lockfield.hs
189 GF/Grammar/LookAbs.hs
182 GF/Grammar/Lookup.hs
745 GF/Grammar/Macros.hs
340 GF/Grammar/MMacros.hs
115 GF/Grammar/PatternMatch.hs
279 GF/Grammar/PrGrammar.hs
121 GF/Grammar/Refresh.hs
44 GF/Grammar/ReservedWords.hs
251 GF/Grammar/TC.hs
301 GF/Grammar/TypeCheck.hs
96 GF/Grammar/Unify.hs
101 GF/Grammar/Values.hs
89 GF/Infra/CheckM.hs
43 GF/Infra/Comments.hs
152 GF/Infra/Ident.hs
390 GF/Infra/Modules.hs
358 GF/Infra/Option.hs
179 GF/Infra/Print.hs
331 GF/Infra/ReadFiles.hs
337 GF/Infra/UseIO.hs
153 GF/OldParsing/CFGrammar.hs
283 GF/OldParsing/ConvertFiniteGFC.hs
121 GF/OldParsing/ConvertFiniteSimple.hs
34 GF/OldParsing/ConvertGFCtoMCFG.hs
122 GF/OldParsing/ConvertGFCtoSimple.hs
44 GF/OldParsing/ConvertGrammar.hs
52 GF/OldParsing/ConvertMCFGtoCFG.hs
30 GF/OldParsing/ConvertSimpleToMCFG.hs
43 GF/OldParsing/GCFG.hs
86 GF/OldParsing/GeneralChart.hs
148 GF/OldParsing/GrammarTypes.hs
50 GF/OldParsing/IncrementalChart.hs
206 GF/OldParsing/MCFGrammar.hs
43 GF/OldParsing/ParseCFG.hs
82 GF/OldParsing/ParseCF.hs
177 GF/OldParsing/ParseGFC.hs
37 GF/OldParsing/ParseMCFG.hs
161 GF/OldParsing/SimpleGFC.hs
188 GF/OldParsing/Utilities.hs
51 GF/Parsing/CFG.hs
66 GF/Parsing/CF.hs
151 GF/Parsing/GFC.hs
64 GF/Parsing/MCFG.hs
83 GF/Printing/PrintParser.hs
127 GF/Printing/PrintSimplifiedTerm.hs
190 GF/Shell/CommandL.hs
556 GF/Shell/Commands.hs
524 GF/Shell/HelpFile.hs
79 GF/Shell/JGF.hs
171 GF/Shell/PShell.hs
221 GF/Shell/ShellCommands.hs
66 GF/Shell/SubShell.hs
87 GF/Shell/TeachYourself.hs
296 GF/Source/AbsGF.hs
229 GF/Source/GrammarToSource.hs
312 GF/Source/LexGF.hs
528 GF/Source/PrintGF.hs
353 GF/Source/SkelGF.hs
657 GF/Source/SourceToGrammar.hs
58 GF/Source/TestGF.hs
72 GF/Speech/PrGSL.hs
65 GF/Speech/PrJSGF.hs
128 GF/Speech/SRG.hs
103 GF/Speech/TransformCFG.hs
30 GF/System/ArchEdit.hs
90 GF/System/Arch.hs
27 GF/System/NoReadline.hs
27 GF/System/Readline.hs
73 GF/System/Tracing.hs
25 GF/System/UseReadline.hs
63 GF/Text/Arabic.hs
97 GF/Text/Devanagari.hs
72 GF/Text/Ethiopic.hs
99 GF/Text/ExtendedArabic.hs
37 GF/Text/ExtraDiacritics.hs
172 GF/Text/Greek.hs
53 GF/Text/Hebrew.hs
95 GF/Text/Hiragana.hs
69 GF/Text/LatinASupplement.hs
47 GF/Text/OCSCyrillic.hs
45 GF/Text/Russian.hs
77 GF/Text/Tamil.hs
125 GF/Text/Text.hs
69 GF/Text/Unicode.hs
47 GF/Text/UTF8.hs
56 GF/Translate/GFT.hs
427 GF/UseGrammar/Custom.hs
435 GF/UseGrammar/Editing.hs
180 GF/UseGrammar/Generate.hs
71 GF/UseGrammar/GetTree.hs
143 GF/UseGrammar/Information.hs
228 GF/UseGrammar/Linear.hs
130 GF/UseGrammar/Morphology.hs
70 GF/UseGrammar/Paraphrases.hs
157 GF/UseGrammar/Parsing.hs
66 GF/UseGrammar/Randomized.hs
170 GF/UseGrammar/Session.hs
186 GF/UseGrammar/Tokenize.hs
43 GF/UseGrammar/Transfer.hs
122 GF/Visualization/NewVisualizationGrammar.hs
123 GF/Visualization/VisualizeGrammar.hs
63 GF/Conversion/SimpleToMCFG/Coercions.hs
256 GF/Conversion/SimpleToMCFG/Nondet.hs
129 GF/Conversion/SimpleToMCFG/Strict.hs
71 GF/OldParsing/ConvertGFCtoMCFG/Coercions.hs
281 GF/OldParsing/ConvertGFCtoMCFG/Nondet.hs
277 GF/OldParsing/ConvertGFCtoMCFG/Old.hs
189 GF/OldParsing/ConvertGFCtoMCFG/Strict.hs
70 GF/OldParsing/ConvertSimpleToMCFG/Coercions.hs
245 GF/OldParsing/ConvertSimpleToMCFG/Nondet.hs
277 GF/OldParsing/ConvertSimpleToMCFG/Old.hs
139 GF/OldParsing/ConvertSimpleToMCFG/Strict.hs
83 GF/OldParsing/ParseCFG/General.hs
142 GF/OldParsing/ParseCFG/Incremental.hs
156 GF/OldParsing/ParseMCFG/Basic.hs
103 GF/Parsing/CFG/General.hs
150 GF/Parsing/CFG/Incremental.hs
98 GF/Parsing/CFG/PInfo.hs
226 GF/Parsing/MCFG/Active2.hs
304 GF/Parsing/MCFG/Active.hs
144 GF/Parsing/MCFG/Incremental2.hs
163 GF/Parsing/MCFG/Incremental.hs
128 GF/Parsing/MCFG/Naive.hs
163 GF/Parsing/MCFG/PInfo.hs
194 GF/Parsing/MCFG/Range.hs
183 GF/Parsing/MCFG/ViaCFG.hs
167 GF/Canon/GFC.cf
36 GF/CFGM/CFG.cf
321 GF/Source/GF.cf
272 JavaGUI/DynamicTree2.java
272 JavaGUI/DynamicTree.java
2357 JavaGUI/GFEditor2.java
1420 JavaGUI/GFEditor.java
30 JavaGUI/GrammarFilter.java
13 JavaGUI/LinPosition.java
18 JavaGUI/MarkedArea.java
1552 JavaGUI/Numerals.java
22 JavaGUI/Utils.java
5956 total
48713 total
- 2131 GF/Canon/ParGFC.hs
3336 GF/Source/ParGF.hs
779 GF/CFGM/ParCFG.hs
42467 total
--------
sloccount sloc =
let
ksloc = sloc / 1000
effort = 2.4 * (ksloc ** 1.05)
schedule = 2.5 * (effort ** 0.38)
develops = effort / schedule
cost = 56286 * (effort/12) * 2.4
in
[sloc,ksloc,effort,effort/12,schedule,schedule/12,develops,cost]
|