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

📄 expressioncompli.h

📁 一个C++对赋值语句的翻译,能输出四元式
💻 H
字号:
/*  Class CExpression Header
/   By Great_csk 2004
/
/
*/
#include "CStack.h"
#include "linknode.h"

#ifndef _EXPRESSIONCOMP_H
#define _EXPRESSIONCOMP_H

#define MAX_EXP 1024

#define STACK_ALL 0
#define STACK_ITEM 1
#define STACK_EXP 2

#define ITEM_TYPE_OPERATOR 1
#define ITEM_TYPE_NULL 0
#define ITEM_TYPE_NUM 2

#define COMPLINE_SUCCEED 1
#define COMPLINE_BAD_TYPE -1

#define ERROR_NULL 0
#define ERROR_COMPLINE -1
#define ERROR_EXP_END 0
#define ERROR_STACK_ERROR -3
#define ERROR_BAD_USEAGE -4
#define ERROR_STACK_OVERFLOW -5
#define ERROR_DIVIDED_BY_ZERO -6

typedef  long  hResult;
typedef  char*  pExpression;

struct EXP_ITEM{
	union datacollection{
		double num_data;
		char operator_data;
	}itemdata;
	int item_type;
};




class CExpression{
public:
	CExpression();
	~CExpression();

	hResult SetExpression(pExpression exp);
	hResult Compile();
	hResult Solve(double &result);

private:

	EXP_ITEM *pexpItem;
	CStack stkItems;
	CLinkNode stkExp;
	long GetNextStrItem(EXP_ITEM * pItem);
	int nScanPos;
	char *num_table;//="0123456789.";
	char *operator_table;//="+-*/()# ^";
public:
	pExpression t_expression;
	char GetDataType(char t_char);
private:
	bool IsInTheTable(char * pTable,char QueryChar);
public:
	int StrToFloat(pExpression pExp, int start, int end, double* ans);
	int n_last_error;
	bool ClearStack(int nType=STACK_ALL);
    int OperatorComp(char operator1, char operator2);
private:
	int operatorToStack(char operator1, char operator2);
public:
    double CalculateValueByOperator(double num1, double num2, char Operator);
};

#endif

⌨️ 快捷键说明

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