📄 intpresymset.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 + -