(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]
