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

📄 intpresymset.h

📁 pl0文法编译器
💻 H
字号:
#ifndef __INTPRESYMSET_H
#define __INTPRESYMSET_H

#include <string>
#include <vector>
using namespace std;

/************************************************************************/
/*							指令码枚举									*/
/************************************************************************/
enum OPCode{
	LITCH=1,//取常量字符到运算栈栈顶						LITCH	0,a
	LITI,
	LITR,	//取常量实数到运算栈栈顶						LITR	0,a
	LODCH,
	LODI,	//取整型变量到运算栈栈顶						LODI	l,a (l为层次差, a为相对地址)
	LODR,	//取实型变量到运算栈栈顶						LODR	l,a (l为层次差, a为相对地址)
	STO,
	READI,	//读数据到活动记录中变量						READ	l,a (l为层次差, a为相对地址)
	READR,
	READS,
	WRTCH,	//显示运算栈站定值								WRT		0,0	(为零地址指令)
	WRTI,
	WRTR,
	WRTSTR,	//从stringstack指定位置读取字符串并显示在终端	WRTSTR	0,a (a为在stringstack中的指定位置)
	JMP,	//指令寄存器跳转到代码段指定位置				JMP		0,a (a为跳转位置)
	JPC,	
	RTN,	//函数返回指令
	REV,	//将运算栈栈顶操作数取反						REV		0,0
	ADD,	//将运算栈顶两个操作数相加						ADD		0,0
	MIN,	//将运算栈顶两操作数相减,次栈顶减栈顶			MIN		0,0
	TIM,	//将运算栈顶两操作数相乘						TIM		0,0
	DIV,	//将运算栈顶两操作数相除,栈顶去除次栈顶		DIV		0,0
	DIVI,
	ALOC,	//申请活动记录									ALOC	0,a (活动记录的长度)
	CALL,
	EQU,
	NEQU,
	GRT,
	GRTEQ,
	LES,
	LESEQ
};

struct Instruction
{
	OPCode code;//指令码
	int	l;		//层次差
	float a;	//值
};

typedef vector<Instruction> CodeStack;//数据栈定义
typedef vector<string> StringStack;//字符串栈,用于输出函数调用
typedef vector<float>  ActiveRecord;//活动记录
typedef vector<float> OpertionStack;//运算栈


#endif//SymSey.h

⌨️ 快捷键说明

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