Mercurial > projects > dil
annotate trunk/src/cmd/Statistics.d @ 576:0df647660e76
Moved Lexer.d to new package 'lexer'.
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Sat, 05 Jan 2008 16:53:27 +0100 |
parents | d6212e3b9f36 |
children | 39fac5531b85 |
rev | line source |
---|---|
363 | 1 /++ |
2 Author: Aziz Köksal | |
3 License: GPL3 | |
4 +/ | |
5 module cmd.Statistics; | |
6 import dil.Token; | |
7 import dil.File; | |
576
0df647660e76
Moved Lexer.d to new package 'lexer'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
554
diff
changeset
|
8 import dil.lexer.Lexer; |
391
33b566df6af4
Migrated project to Tango.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
364
diff
changeset
|
9 import common; |
363 | 10 |
11 struct Statistics | |
12 { | |
534
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
13 uint whitespaceCount; /// Counter for whitespace characters. |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
14 uint wsTokenCount; /// Counter for all whitespace tokens. |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
15 uint keywordCount; /// Counter for keywords. |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
16 uint identCount; /// Counter for identifier. |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
17 uint numberCount; /// Counter for number literals. |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
18 uint commentCount; /// Counter for comments. |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
19 uint tokenCount; /// Counter for all tokens produced by the Lexer. |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
20 uint linesOfCode; /// Number of lines. |
545
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
21 uint[] tokensTable; /// Table of counters for all token types. |
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
22 |
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
23 static Statistics opCall(bool allocateTokensTable) |
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
24 { |
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
25 Statistics s; |
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
26 if (allocateTokensTable) |
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
27 s.tokensTable = new uint[TOK.MAX]; |
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
28 return s; |
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
29 } |
401
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
30 |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
31 void opAddAssign(Statistics s) |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
32 { |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
33 this.whitespaceCount += s.whitespaceCount; |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
34 this.wsTokenCount += s.wsTokenCount; |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
35 this.keywordCount += s.keywordCount; |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
36 this.identCount += s.identCount; |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
37 this.numberCount += s.numberCount; |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
38 this.commentCount += s.commentCount; |
534
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
39 this.tokenCount += s.tokenCount; |
401
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
40 this.linesOfCode += s.linesOfCode; |
545
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
41 foreach (i, count; s.tokensTable) |
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
42 this.tokensTable[i] += count; |
401
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
43 } |
363 | 44 } |
45 | |
545
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
46 void execute(string[] filePaths, bool printTokensTable) |
363 | 47 { |
401
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
48 Statistics[] stats; |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
49 foreach (filePath; filePaths) |
545
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
50 stats ~= getStatistics(filePath, printTokensTable); |
401
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
51 |
545
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
52 auto total = Statistics(printTokensTable); |
401
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
53 |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
54 foreach (i, ref stat; stats) |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
55 { |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
56 total += stat; |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
57 Stdout.formatln( |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
58 "----\n" |
534
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
59 "File: {}\n" |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
60 "Whitespace character count: {}\n" |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
61 "Whitespace token count: {}\n" |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
62 "Keyword count: {}\n" |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
63 "Identifier count: {}\n" |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
64 "Number count: {}\n" |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
65 "Comment count: {}\n" |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
66 "All tokens count: {}\n" |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
67 "Lines of code: {}", |
401
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
68 filePaths[i], |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
69 stat.whitespaceCount, |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
70 stat.wsTokenCount, |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
71 stat.keywordCount, |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
72 stat.identCount, |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
73 stat.numberCount, |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
74 stat.commentCount, |
534
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
75 stat.tokenCount, |
401
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
76 stat.linesOfCode |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
77 ); |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
78 } |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
79 |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
80 if (filePaths.length > 1) |
545
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
81 { |
401
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
82 Stdout.formatln( |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
83 "--------------------------------------------------------------------------------\n" |
534
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
84 "Total of {} files:\n" |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
85 "Whitespace character count: {}\n" |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
86 "Whitespace token count: {}\n" |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
87 "Keyword count: {}\n" |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
88 "Identifier count: {}\n" |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
89 "Number count: {}\n" |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
90 "Comment count: {}\n" |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
91 "All tokens count: {}\n" |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
92 "Lines of code: {}", |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
93 filePaths.length, |
401
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
94 total.whitespaceCount, |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
95 total.wsTokenCount, |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
96 total.keywordCount, |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
97 total.identCount, |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
98 total.numberCount, |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
99 total.commentCount, |
534
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
100 total.tokenCount, |
401
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
101 total.linesOfCode |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
102 ); |
545
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
103 } |
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
104 |
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
105 if (printTokensTable) |
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
106 { |
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
107 Stdout("Table of tokens:").newline; |
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
108 Stdout.formatln(" {,10} | {}", "Count", "Token type"); |
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
109 Stdout("-----------------------------").newline; |
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
110 foreach (i, count; total.tokensTable) |
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
111 Stdout.formatln(" {,10} | {}", count, Token.toString(cast(TOK)i)); |
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
112 Stdout("// End of table.").newline; |
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
113 } |
401
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
114 } |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
115 |
545
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
116 Statistics getStatistics(string filePath, bool printTokensTable) |
401
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
117 { |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
118 auto sourceText = loadFile(filePath); |
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
119 auto lx = new Lexer(sourceText, filePath); |
506
1b897a4536a4
Refactored code and fixed a few things in cmd.Statistics.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
485
diff
changeset
|
120 lx.scanAll(); |
1b897a4536a4
Refactored code and fixed a few things in cmd.Statistics.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
485
diff
changeset
|
121 auto token = lx.firstToken(); |
363 | 122 |
545
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
123 auto stats = Statistics(printTokensTable); |
534
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
124 // Lexer creates HEAD + Newline, which are not in the source text. |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
125 // No token left behind! |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
126 stats.tokenCount = 2; |
485
ea8c7459f1c4
Changed a lot of things in the Lexer.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
401
diff
changeset
|
127 stats.linesOfCode = lx.lineNum; |
545
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
128 if (printTokensTable) |
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
129 { |
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
130 stats.tokensTable[TOK.HEAD] = 1; |
554
d6212e3b9f36
Fixed code in cmd.Statistics.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
545
diff
changeset
|
131 stats.tokensTable[TOK.Newline] = 1; |
545
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
132 } |
363 | 133 // Traverse linked list. |
534
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
134 while (1) |
363 | 135 { |
534
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
136 stats.tokenCount += 1; |
545
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
137 |
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
138 if (printTokensTable) |
554
d6212e3b9f36
Fixed code in cmd.Statistics.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
545
diff
changeset
|
139 stats.tokensTable[token.type] += 1; |
545
0bac0bb506ca
Added '--table' option to 'stats' command.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
534
diff
changeset
|
140 |
363 | 141 // Count whitespace characters |
401
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
142 if (token.ws !is null) |
506
1b897a4536a4
Refactored code and fixed a few things in cmd.Statistics.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
485
diff
changeset
|
143 stats.whitespaceCount += token.start - token.ws; |
363 | 144 |
145 switch (token.type) | |
146 { | |
147 case TOK.Identifier: | |
148 stats.identCount++; | |
149 break; | |
150 case TOK.Comment: | |
151 stats.commentCount++; | |
152 break; | |
153 case TOK.Int32, TOK.Int64, TOK.Uint32, TOK.Uint64, | |
154 TOK.Float32, TOK.Float64, TOK.Float80, | |
155 TOK.Imaginary32, TOK.Imaginary64, TOK.Imaginary80: | |
156 stats.numberCount++; | |
157 break; | |
506
1b897a4536a4
Refactored code and fixed a few things in cmd.Statistics.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
485
diff
changeset
|
158 case TOK.Newline: |
1b897a4536a4
Refactored code and fixed a few things in cmd.Statistics.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
485
diff
changeset
|
159 break; |
363 | 160 default: |
161 if (token.isKeyword) | |
162 stats.keywordCount++; | |
506
1b897a4536a4
Refactored code and fixed a few things in cmd.Statistics.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
485
diff
changeset
|
163 else if (token.isWhitespace) |
1b897a4536a4
Refactored code and fixed a few things in cmd.Statistics.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
485
diff
changeset
|
164 stats.wsTokenCount++; |
363 | 165 } |
534
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
166 |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
167 if (token.next is null) |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
168 break; |
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
169 token = token.next; |
363 | 170 } |
534
581b3cf3fe8f
Added a new field to statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
506
diff
changeset
|
171 assert(token.type == TOK.EOF); |
401
fcdf7ac5ad27
Improved statistics generation.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
391
diff
changeset
|
172 return stats; |
363 | 173 } |