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

📄 exptoken.h

📁 一个简单实现了词法分析
💻 H
字号:
#include <vector>

#include "CToken.h"

using namespace std;
class EToken
{
public:
	char ETokenLeft[10]; //left var of an exp
	char ETokenOp_1; //op
	char ETokenR_1[10];//right var
	double ETokenRN_1;//right var
	double ETokenRN_2;//right var
	char ETokenR_Op_1; //right op
	char ETokenR_2[10];//right 2 var
	char ETokenEnd[10];//end discriminator
	int ETokenKind;
	EToken();
//	EToken(const EToken& P);
	void IniEToken();//initiation
	//x1=x2+x3;
	
};
class ETokenMap  //存放有关表达式类型的类
{
public:
	char A_ETokenLeft[10]; //left var of an exp
	char A_ETokenOp_1; //op
	char A_ETokenR_1[10];//right var
	char A_ETokenR_Op_1; //right op
	char A_ETokenR_2[10];//right 2 var
	char A_ETokenEnd[10];//end discriminator
	//x1=x2+x3;
};
class ETokenMan
{
private:
	
	vector<ETokenMap> AExpStack;
	int CToken_Index;
	int GenExpToken(CTokens* T,EToken *PEToken);
public:
	vector<EToken> ExpStack;
	ETokenMan();
	~ETokenMan();
	int GetExp(CTokens* TT);
	int GetExpNum();
};
//int printEtokens();
//变量表的类
class CVarToken
{
public:
	char VarName[10];
	double VarValue;
	CVarToken();
};
class CVarMan
{
public:
	
	int GenVarStack(CTokens* T);
	vector<CVarToken> VarStack;//变量表
	int QueryVstack(char* VarN);//返回变量的值
	int PutInValue(char* VarN,double* VarVal);//give a value
	int GetVarStackLgth();
	int CleanStack();
	int PrintVarS();
	double ExpOpMan(char* op,char* PCVar,double P2,double P3);//符号操作

	int ManAExp(EToken* TE);
	int GenFinalES(ETokenMan* TEM );
	int GenERVar();
};

⌨️ 快捷键说明

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