| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | #include "token.h" | ||
| 2 | #include "utilities/strings.h" | ||
| 3 | |||
| 4 | namespace lython { | ||
| 5 | |||
| 6 | String to_string(int8 t) { | ||
| 7 |
51/70✓ Branch 0 taken 9753 times.
✓ Branch 1 taken 256 times.
✓ Branch 2 taken 174 times.
✓ Branch 3 taken 1025 times.
✓ Branch 4 taken 1224 times.
✓ Branch 5 taken 71 times.
✓ Branch 6 taken 12 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2188 times.
✓ Branch 9 taken 733 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 1120 times.
✓ Branch 14 taken 123 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 541 times.
✓ Branch 17 taken 128 times.
✓ Branch 18 taken 561 times.
✓ Branch 19 taken 57 times.
✓ Branch 20 taken 174 times.
✓ Branch 21 taken 132 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 139 times.
✓ Branch 25 taken 34 times.
✓ Branch 26 taken 62 times.
✓ Branch 27 taken 132 times.
✓ Branch 28 taken 269 times.
✓ Branch 29 taken 95 times.
✓ Branch 30 taken 206 times.
✓ Branch 31 taken 269 times.
✓ Branch 32 taken 78 times.
✓ Branch 33 taken 23 times.
✓ Branch 34 taken 35 times.
✓ Branch 35 taken 1203 times.
✓ Branch 36 taken 22 times.
✓ Branch 37 taken 26 times.
✓ Branch 38 taken 362 times.
✓ Branch 39 taken 431 times.
✓ Branch 40 taken 51 times.
✓ Branch 41 taken 688 times.
✓ Branch 42 taken 521 times.
✗ Branch 43 not taken.
✓ Branch 44 taken 52 times.
✗ Branch 45 not taken.
✓ Branch 46 taken 7 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 34 times.
✓ Branch 52 taken 41 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 23 times.
✗ Branch 56 not taken.
✓ Branch 57 taken 23 times.
✓ Branch 58 taken 68 times.
✓ Branch 59 taken 26 times.
✓ Branch 60 taken 96 times.
✓ Branch 61 taken 34 times.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✓ Branch 66 taken 213 times.
✓ Branch 67 taken 612 times.
✓ Branch 68 taken 36 times.
✓ Branch 69 taken 928 times.
|
25113 | switch (t) { |
| 8 | #define X(name, nb) \ | ||
| 9 | case nb: return String(#name); | ||
| 10 | |||
| 11 |
50/88✓ Branch 2 taken 9753 times.
✓ Branch 6 taken 256 times.
✓ Branch 10 taken 174 times.
✓ Branch 14 taken 1025 times.
✓ Branch 18 taken 1224 times.
✓ Branch 22 taken 71 times.
✓ Branch 26 taken 12 times.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✓ Branch 34 taken 2188 times.
✓ Branch 38 taken 733 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✓ Branch 54 taken 1120 times.
✓ Branch 58 taken 123 times.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
✓ Branch 66 taken 541 times.
✓ Branch 70 taken 128 times.
✓ Branch 74 taken 561 times.
✓ Branch 78 taken 57 times.
✓ Branch 82 taken 174 times.
✓ Branch 86 taken 132 times.
✗ Branch 90 not taken.
✗ Branch 91 not taken.
✓ Branch 94 taken 2 times.
✓ Branch 98 taken 139 times.
✓ Branch 102 taken 34 times.
✓ Branch 106 taken 62 times.
✓ Branch 110 taken 132 times.
✓ Branch 114 taken 269 times.
✓ Branch 118 taken 95 times.
✓ Branch 122 taken 206 times.
✓ Branch 126 taken 269 times.
✓ Branch 130 taken 78 times.
✓ Branch 134 taken 23 times.
✓ Branch 138 taken 35 times.
✓ Branch 142 taken 1203 times.
✓ Branch 146 taken 22 times.
✓ Branch 150 taken 26 times.
✓ Branch 154 taken 362 times.
✓ Branch 158 taken 431 times.
✓ Branch 162 taken 51 times.
✓ Branch 166 taken 688 times.
✓ Branch 170 taken 521 times.
✗ Branch 174 not taken.
✗ Branch 175 not taken.
✓ Branch 178 taken 52 times.
✗ Branch 182 not taken.
✗ Branch 183 not taken.
✓ Branch 186 taken 7 times.
✗ Branch 190 not taken.
✗ Branch 191 not taken.
✗ Branch 194 not taken.
✗ Branch 195 not taken.
✗ Branch 198 not taken.
✗ Branch 199 not taken.
✗ Branch 202 not taken.
✗ Branch 203 not taken.
✓ Branch 206 taken 34 times.
✓ Branch 210 taken 41 times.
✗ Branch 214 not taken.
✗ Branch 215 not taken.
✗ Branch 218 not taken.
✗ Branch 219 not taken.
✓ Branch 222 taken 23 times.
✗ Branch 226 not taken.
✗ Branch 227 not taken.
✓ Branch 230 taken 23 times.
✓ Branch 234 taken 68 times.
✓ Branch 238 taken 26 times.
✓ Branch 242 taken 96 times.
✓ Branch 246 taken 34 times.
✗ Branch 250 not taken.
✗ Branch 251 not taken.
✗ Branch 254 not taken.
✗ Branch 255 not taken.
✗ Branch 258 not taken.
✗ Branch 259 not taken.
✗ Branch 262 not taken.
✗ Branch 263 not taken.
✓ Branch 266 taken 213 times.
✓ Branch 270 taken 612 times.
✓ Branch 274 taken 36 times.
|
24185 | LYTHON_TOKEN(X) |
| 12 | #undef X | ||
| 13 | 928 | default: | |
| 14 |
1/1✓ Branch 2 taken 928 times.
|
1856 | String s = "' '"; |
| 15 |
1/1✓ Branch 1 taken 928 times.
|
928 | s[1] = t; |
| 16 | 928 | return s; | |
| 17 | } | ||
| 18 | } | ||
| 19 | |||
| 20 | String to_human_name(int8 t) { | ||
| 21 |
4/7✓ Branch 0 taken 2 times.
✓ Branch 1 taken 505 times.
✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
|
507 | static String eof = String("EOF (End Of File)"); |
| 22 | |||
| 23 |
1/1✓ Branch 1 taken 507 times.
|
507 | String n = to_string(t); |
| 24 |
1/1✓ Branch 1 taken 507 times.
|
507 | Array<String> arr = split('_', n); |
| 25 | |||
| 26 |
2/2✓ Branch 1 taken 160 times.
✓ Branch 2 taken 347 times.
|
507 | if (arr.size() == 2) { |
| 27 |
1/1✓ Branch 2 taken 160 times.
|
160 | return arr[1]; |
| 28 | } | ||
| 29 | |||
| 30 |
2/3✗ Branch 0 not taken.
✓ Branch 1 taken 33 times.
✓ Branch 2 taken 314 times.
|
347 | switch (t) { |
| 31 | ✗ | case EOF: return eof; | |
| 32 |
1/1✓ Branch 1 taken 33 times.
|
33 | case '\0': return eof; |
| 33 | } | ||
| 34 | |||
| 35 | 314 | return n; | |
| 36 | 507 | } | |
| 37 | |||
| 38 | // this should be computed at compile time | ||
| 39 | // this is used for pretty printing | ||
| 40 | int8 tok_name_size() { | ||
| 41 | std::vector<String> v = { | ||
| 42 | #define X(name, nb) #name, | ||
| 43 | LYTHON_TOKEN(X) | ||
| 44 | #undef X | ||
| 45 | ✗ | }; | |
| 46 | |||
| 47 | ✗ | int8 max = 0; | |
| 48 | |||
| 49 | ✗ | for (auto& i: v) | |
| 50 | ✗ | max = std::max(int8(i.size()), max); | |
| 51 | |||
| 52 | ✗ | return max; | |
| 53 | ✗ | } | |
| 54 | |||
| 55 | std::ostream& Token::debug_print(std::ostream& out) const { | ||
| 56 | ✗ | out << fmt::format("{:>20}", to_string(_type)); | |
| 57 | |||
| 58 | out << " =>" | ||
| 59 | ✗ | << " [l:" << fmt::format("{:4}", _line) << ", c:" << fmt::format("{:4}", _col) << "] `" | |
| 60 | ✗ | << _identifier << "`"; | |
| 61 | ✗ | return out; | |
| 62 | } | ||
| 63 | |||
| 64 | std::ostream& Token::print(std::ostream& out) const { | ||
| 65 | |||
| 66 |
2/2✓ Branch 1 taken 270 times.
✓ Branch 2 taken 73 times.
|
343 | if (type() > 0) { |
| 67 | 270 | return out << type(); | |
| 68 | } | ||
| 69 | |||
| 70 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 73 times.
|
73 | if (type() == tok_identifier) { |
| 71 | ✗ | return out << identifier(); | |
| 72 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 73 times.
|
73 | } else if (type() == tok_docstring) { |
| 73 | ✗ | return out << "\"\"\"" << identifier() << "\"\"\""; | |
| 74 |
3/6✓ Branch 1 taken 73 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 73 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 73 times.
|
73 | } else if (type() == tok_int || type() == tok_float) { |
| 75 | ✗ | return out << identifier(); | |
| 76 | } | ||
| 77 | |||
| 78 |
1/1✓ Branch 3 taken 73 times.
|
73 | String const& str = keyword_as_string()[type()]; |
| 79 | |||
| 80 |
1/2✗ Branch 1 not taken.
✓ Branch 2 taken 73 times.
|
73 | if (str.size() > 0) { |
| 81 | ✗ | return out << str; | |
| 82 | } | ||
| 83 | |||
| 84 | // is this possible ? | ||
| 85 | 73 | return out << identifier(); | |
| 86 | } | ||
| 87 | |||
| 88 | ReservedKeyword& keywords() { | ||
| 89 | static ReservedKeyword _keywords = { | ||
| 90 | #define X(str, tok) {str, tok}, | ||
| 91 | ✗ | LYTHON_KEYWORDS(X) | |
| 92 | #undef X | ||
| 93 |
6/11✓ Branch 0 taken 12 times.
✓ Branch 1 taken 7914 times.
✓ Branch 3 taken 12 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 12 times.
✓ Branch 10 taken 468 times.
✓ Branch 11 taken 12 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
|
8406 | }; |
| 94 | 7926 | return _keywords; | |
| 95 | 12 | } | |
| 96 | |||
| 97 | KeywordToString& keyword_as_string() { | ||
| 98 | static KeywordToString _keywords = { | ||
| 99 | #define X(str, tok) {int(tok), String(str)}, | ||
| 100 |
39/39✓ Branch 1 taken 12 times.
✓ Branch 4 taken 12 times.
✓ Branch 7 taken 12 times.
✓ Branch 10 taken 12 times.
✓ Branch 13 taken 12 times.
✓ Branch 16 taken 12 times.
✓ Branch 19 taken 12 times.
✓ Branch 22 taken 12 times.
✓ Branch 25 taken 12 times.
✓ Branch 28 taken 12 times.
✓ Branch 31 taken 12 times.
✓ Branch 34 taken 12 times.
✓ Branch 37 taken 12 times.
✓ Branch 40 taken 12 times.
✓ Branch 43 taken 12 times.
✓ Branch 46 taken 12 times.
✓ Branch 49 taken 12 times.
✓ Branch 52 taken 12 times.
✓ Branch 55 taken 12 times.
✓ Branch 58 taken 12 times.
✓ Branch 61 taken 12 times.
✓ Branch 64 taken 12 times.
✓ Branch 67 taken 12 times.
✓ Branch 70 taken 12 times.
✓ Branch 73 taken 12 times.
✓ Branch 76 taken 12 times.
✓ Branch 79 taken 12 times.
✓ Branch 82 taken 12 times.
✓ Branch 85 taken 12 times.
✓ Branch 88 taken 12 times.
✓ Branch 91 taken 12 times.
✓ Branch 94 taken 12 times.
✓ Branch 97 taken 12 times.
✓ Branch 100 taken 12 times.
✓ Branch 103 taken 12 times.
✓ Branch 106 taken 12 times.
✓ Branch 109 taken 12 times.
✓ Branch 112 taken 12 times.
✓ Branch 115 taken 12 times.
|
480 | LYTHON_KEYWORDS(X) |
| 101 | #undef X | ||
| 102 |
6/11✓ Branch 0 taken 12 times.
✓ Branch 1 taken 2397 times.
✓ Branch 3 taken 12 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 12 times.
✓ Branch 10 taken 468 times.
✓ Branch 11 taken 12 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
|
2901 | }; |
| 103 | 2409 | return _keywords; | |
| 104 | 480 | } | |
| 105 | |||
| 106 | } // namespace lython | ||
| 107 |