📄 xksqlparser.h
字号:
// xkSQLParser.h: interface for the xkSQLParser class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_XKSQLPARSER_H__015C852F_9914_484D_AC4A_31298BEA4EEC__INCLUDED_)
#define AFX_XKSQLPARSER_H__015C852F_9914_484D_AC4A_31298BEA4EEC__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
//外模式--用于和用户交互,为用户提供操作数据库的接口(SQL语言)
//用于SQL语句的词法分析与语法分析
#include "xktype.h"
#include "xkExecEngine.h"
#include "xkInputSource.h"
#include "Vector.h"
class xkSQLParser
{
public:
xkSQLParser();
virtual ~xkSQLParser();
xkSQLParser(xkInputSource* pi_,xkExecEngine* pe_)
: in_(pi_), engine_(pe_)
{
}
bool Parse();
Token GetToken();
char getch()
{
assert(in_ != 0);
return in_->getc();
}
char ungetch()
{
assert(in_ != 0);
return in_->ungetc();
}
// bool isDigit(const char c_);在C++标准库中都有相应的函数
// bool isAlpha(const char c_);
// bool isSpace(const char c_);
bool isTable(const char* tablename_);
bool isField(const char* tablename_, const char* fieldname_);
protected:
bool SelectFunc();
bool UpdateFunc();
bool InsertFunc();
bool DeleteFunc();
bool CreatetableFunc();
bool DroptableFunc();
int FindTable(const char* tname_);//return -1 denotes not found
void DisplayTable(size_t RID_);
private:
xkExecEngine *engine_;//执行SQL语句的语义
xkInputSource *in_;//SQL语句输入源
Vector<char*> identifier_vec_;//存放标识符名
// Vector<int> int_vec_;
// Vector<float> float_vec_;
// Vector<char[256]> string_vec_;
// Vector<char*> value_vec_;//存放数值
Vector<char> char_vec_;//临时值
char *tablename_;//存放表名
};
#endif // !defined(AFX_XKSQLPARSER_H__015C852F_9914_484D_AC4A_31298BEA4EEC__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -