MCPcopy Create free account
hub / github.com/catboost/catboost / GuessTypeByWordT

Function GuessTypeByWordT

library/cpp/token/nlptypes.cpp:5–72  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3
4template <typename TChr>
5static NLP_TYPE GuessTypeByWordT(const TChr* w, size_t len) {
6 // NLP_WORD
7 // NLP_INTEGER
8 // NLP_FLOAT
9 // NLP_MARK
10
11 //integer {digit}+
12 //fixed {digit}+"."{digit}+
13 enum EState {
14 G_START,
15 G_INT,
16 G_DOT,
17 G_FRAC,
18 };
19 EState state = G_START;
20
21 static const TChr DIGITS[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 0};
22 static const TBasicStringBuf<TChr> DIGITS_BUF{DIGITS};
23
24 for (unsigned i = 0; i < len; ++i) {
25 TChr c = w[i];
26 bool bIsDigit = DIGITS_BUF.Contains(c);
27 switch (state) {
28 case G_START:
29 if (bIsDigit)
30 state = G_INT;
31 else {
32 if (TBasicStringBuf<TChr>(w, len).find_first_of(DIGITS_BUF) >= len)
33 return NLP_WORD;
34 else
35 return NLP_MARK;
36 }
37 break;
38 case G_INT:
39 if (bIsDigit)
40 break;
41 else if (c == '.')
42 state = G_DOT;
43 else
44 return NLP_MARK;
45 break;
46 case G_DOT:
47 if (bIsDigit)
48 state = G_FRAC;
49 else
50 return NLP_MARK;
51 break;
52 case G_FRAC:
53 if (bIsDigit)
54 break;
55 else
56 return NLP_MARK;
57 break;
58 }
59 }
60 switch (state) {
61 case G_START:
62 return NLP_MARK;

Callers 1

GuessTypeByWordFunction · 0.85

Calls 2

ContainsMethod · 0.45
find_first_ofMethod · 0.45

Tested by

no test coverage detected