-
Notifications
You must be signed in to change notification settings - Fork 8
/
FormulaParser.h
73 lines (53 loc) · 1.13 KB
/
FormulaParser.h
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
#include "Token.h"
#include "TokenArray.h"
#include "TokenStack.h"
#include <vector>
#include <string>
using std::vector;
using std::string;
namespace pcrecpp
{
class RE;
}
using pcrecpp::RE;
namespace ExcelFormula
{
class TokenArray;
class TokenStack;
class FormulaParser
{
public:
FormulaParser(const char* szFormula);
/** scan formula and translate it
* into tokens literally
*/
void parserToToken1();
/**
* do some magic to he token array
* inorder to correct the function ending
* and remove some empty space token
*
* @param TokenArray* tmpToken form parserToToken1
* @param TokenArray* the final token array
*/
void parserToToken2();
const char* getFormula(){return m_formula.c_str();}
size_t getSize(){return m_tokens.size();}
vector<Token*>& getTokens()
{
return m_tokens;
}
/**
* clear internal token array,
* and release the monery
*/
void clear();
private:
FormulaParser();
string m_formula;
vector<Token*> m_tokens;
TokenArray m_tmpAry;
TokenStack m_tmpStack;
RE* m_regex;
}; //class ExcelFormula
} //namespace