📄 vbs_context.h
字号:
#ifndef VBS_PARSAR_CONTEXT#define VBS_PARSAR_CONTEXT#include <string>#include <map>#include <stack>#include "CTIActionStateTree.h"class Cvbs_context;#include "VBSMem.h"#include "vbs_lex.h"#ifndef Statementtypedef struct Statement_struct *Statement;#endiftypedef map<string,Statement> func_map;typedef pair<string,string> VAR;typedef const char* vb_sz;typedef Cvbs_context* PtrCont;class Cvbs_context{public: inline void* Alloc(size_t size){return mem.alloc(size);}; inline void Release(void) {return mem.release();}; inline Cvbs_context() {debug=0;}; inline virtual ~Cvbs_context(){}; int parse(FILE* pf=NULL); int parse(const char* szClause); void push_var(vars_table& g_var); void pop_var(vars_table& g_var); string eval(const char* szExp, vars_table& var); void do_eval(const char* szExp); void execute(const char* szExp, vars_table& tvar); string eval(const char* szExp); void execute(const char* szExp); yyscan_t get_scanner() { return scanner;}; string get_var(const char* n); bool set_var(const char* name, const char* value); bool insert_var(const char* szVarName,const char* value); bool is_digital(const char* str); bool true_value(const char* s); int int_value(const char* s); void save_func(const char* szName); string eq(const char* s1,const char* s2); string lt(const char* s1,const char* s2); string le(const char* s1,const char* s2); string gt(const char* s1,const char* s2); string ge(const char* s1,const char* s2); string ne(const char* s1,const char* s2); string vb_and(const char* s1,const char* s2); string vb_or(const char* s1,const char* s2); string vb_xor(const char* s1,const char* s2); string vb_not(const char* s1); string plus(const char* s1,const char* s2); string amd(const char* s1,const char* s2); string minus(const char* s1,const char* s2); string mult(const char* s1,const char* s2); string divide(const char* s1,const char* s2); string neg(const char* s); string clng(const char* x); string cstr(const char* x); string len(const char* x); string date(void); string vbtime(void); string vbyear(const char* x); string vbmonth(const char* x); string vbday(const char* x); string vbweekday(const char* x); string vbhour(const char* x); string vbminute(const char* x); string vbsecond(const char* x); string getString(const char* szR,const char* szField, const char* nNum); string inStr(const char* szStart,const char* s1,const char* s2, const char* szM); string ubound(const char* name, int dim); string rnd(const char* sz); string rnd0(void); void init_rnd(const char* sz); void init_rnd0(void); void printv(const char* s1); string namev(const char* n); string name_av(const char* n,int i); string value(const char* n); int save_func(const char* name,const char* body); int call(const char* name); int set_arg_val(const char* fn, int i, const char* value); int create_array(const char* name,int num); int set_array_dim(const char* name,int dim); int get_array_dim(const char* name,int idx); int set_array_val(const char* name,int idx,const char* val); bool isSubName(const char* name); const char* szValue; //This value for lexer to output string strValue;//This value for lexer to output multi match int nlastCol; int nlastLeng; int debug;protected: CVBSMem mem; vars_table var; vars_table sub_table; yyscan_t scanner; int m_rnd;};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -