⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 analysewords.h

📁 our homework big project
💻 H
字号:
/////////////////////////////////////////////////////////////////////
//
//
//
////////////////////////////////////////////////////////////////////

#ifndef __ANALYSEWORDS_H__
#define __ANALYSEWORDS_H__

#pragma warning(disable:4786)
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<map>
using namespace std;

#include "Exception.h"
#include "CatalogManager.h"


enum TokenValue
{
	_CREATE,_DROP,						//creat, drop
	_INSERT,_DELETE,_SELECT,				//insert, delete, select
	TABLE,INDEX,UNIQUE,					//table, index,unique
	PRIMARY,KEY,						//primary,key
	FROM,WHERE,							//from, where
	ON,INTO,VALUES,AND,					//on, into, values, and
	_INT,_CHAR,_FLOAT,						//int, char(n), float
	EQ,NE,LE,ME,LS,MR,					//'=', '!=' , '<=', '>=', '<', '>'
	LP,RP,								//'(' ,  ')'
	ASTERISK,COMMA,						//'*', ','
	END,								//';'
	_CONSTSTRING,						//const string
	_STRING
};

//extern map<string,TokenValue> TokenMap;


class AnalyseWords
{
protected:
	vector<string> m_word;

public:
	AnalyseWords(vector<string> word):m_word(word){}
	~AnalyseWords(){}
	
	void InitToken(void);
	TokenValue GetToken(int);
	int PreAnalyseSQL(int ,int );
	bool AnIllegalChars(const string &);
	virtual void AnalyseSQL(int , int ){}

};


class AnCreateTable : public AnalyseWords
{
private:
	CatalogHead m_catahead;
	vector<CatalogFile> m_cata;
public:
	friend class ExCreateTable;
	AnCreateTable(vector<string> word) : AnalyseWords(word){}
	
	virtual void AnalyseSQL(int ,int );
	void AnalyseAttr(int,int,int,char &);
	
};

class AnCreateIndex : public AnalyseWords
{
private:
	string m_indexName;
	string m_tableName;
	string m_attrName;

public:
	friend class ExCreateIndex;
	AnCreateIndex(vector<string> word) : AnalyseWords(word){}
	
	void AnalyseSQL(int, int );
};

class AnDropTable : public AnalyseWords
{
private:
	string m_tableName;
public:
	friend class ExDropTable;
	AnDropTable(vector<string> word) : AnalyseWords(word){}

	void AnalyseSQL(int ,int );
};

class AnDropIndex : public AnalyseWords
{
private:
	string m_indexName;
public:
	friend class ExDropIndex;
	AnDropIndex(vector<string> word) : AnalyseWords(word){}

	void AnalyseSQL(int, int);
};

class AnInsertValues : public AnalyseWords
{
private:
	string m_tableName;
	vector<string> m_values;
public:
	friend class ExInsertValues;
	AnInsertValues(vector<string> word) : AnalyseWords(word){}

	void AnalyseSQL(int, int);
};

class AnDeleteValues : public AnalyseWords
{
private:
	string m_tableName;
	vector<string> m_attr;
	vector<string> m_opcode;
	vector<string> m_attrvalue;

public:
	friend class ExDeleteValues;
	AnDeleteValues(vector<string> word) : AnalyseWords(word){}

	void AnDeleteCondition(int, int);
	void AnalyseSQL(int, int);
};

class AnSelectTable : public AnalyseWords
{
private:
	string m_tableName;
	vector<string> m_attr;
	vector<string> m_opcode;
	vector<string> m_attrvalue;

public:
	friend class ExSelectTable;
	AnSelectTable(vector<string> word) : AnalyseWords(word){}

	void AnSelectCondition(int, int);
	void AnalyseSQL(int, int);
};

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -