-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMareInitExec.h
51 lines (34 loc) · 1.15 KB
/
MareInitExec.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
#ifndef MARE_INITEXECUTE_H_INCLUDED
#define MARE_INITEXECUTE_H_INCLUDED
#include "MareExecuter.h"
namespace mare_vm {
using namespace std;
class MareInitExec : public MareExecuter {
public:
MareInitExec(MareUtil &util) : MareExecuter(-1, util) {}
void verifySyntax();
void updateCode();
protected:
void chkSyntax();
private:
void assignVariable(bool strict=false);
void setProperty_syntax(CodeSet const& varCode, SymKind sk);
int getMemAdrs(CodeSet const& cd, SymKind& objType, DtType& varTp); // override function
VarObj getExpression_syntax(short kind1=0, short kind2=0);
void expression_syntax(short kind1, short kind2);
void term_syntax(short n);
void factor_syntax();
void callFunction_syntax(int fncIdx, bool needReturn);
void execSysFunc_syntax(bool needReturn);
short setParams_syntax(vector<VarObj>& vs, short numOfParams);
VarObj getInitVar(DtType dt) {
VarObj obj;
obj.init(dt);
if (dt == INT_T || dt == DBL_T) obj.set(1.0);
else if (dt == DATETIME_T || dt == OBJECT_T) obj.set(5);
else obj.set("ABC");
return obj;
}
};
}
#endif