📄 execute.h
字号:
/************************************************************************/
/* 文件名:execute.h */
/* 功 能:四元式解释器 */
/* 创建时间:2007-7-1 */
/* 最后修改时间:2007-7-5 */
/************************************************************************/
#ifndef EXECUTE_H_EXECUTE_H
#define EXECUTE_H_EXECUTE_H
#include <iostream>
#include <fstream>
#include <string>
#include <string.h>
#include <ctype.h>
#include <stdio.h>
#include "lexer.h"
#include "parser.h"
using namespace std;
int cutequen=0;
//--------------------取得四元式------------------------//
struct fourth getcode(int tab)
{
if(tab>=0&&tab<codetab)
return code[tab];
else if(tab>=300&&tab<procecode)
return code[tab];
}
//------------------解释四元式的函数---------------------//
void interpreter(struct fourth code)
{
if(code.op==5)
cout<<"开始解释执行四元式......"<<endl;
else if(code.op==0)
signtable[code.result].val=signtable[code.ag1].val+signtable[code.ag2].val;
else if(code.op==1)
signtable[code.result].val=signtable[code.ag1].val-signtable[code.ag2].val;
else if(code.op==2)
signtable[code.result].val=signtable[code.ag1].val*signtable[code.ag2].val;
else if(code.op==3)
signtable[code.result].val=signtable[code.ag1].val/signtable[code.ag2].val;
else if(code.op==4)
signtable[code.result].val=signtable[code.ag1].val;
else if(code.op==10)
cout<<"\n输出:"<<signtable[code.ag1].val<<endl;
else if(code.op==6)
{
if(code.result!=-1)
cutequen=code.result-1;
}
else if(code.op==7)
{
if(signtable[code.ag1].val>signtable[code.ag2].val)
cutequen=code.result-1;
}
else if(code.op==8)
{
if(signtable[code.ag1].val!=signtable[code.ag2].val)
cutequen=code.result-1;
}
else if(code.op==9)
{
if(signtable[code.ag1].val<signtable[code.ag2].val)
cutequen=code.result-1;
}
else if(code.op==12)
{
if(signtable[code.ag1].val>=signtable[code.ag2].val)
cutequen=code.result-1;
}
else if(code.op==13)
{
if(signtable[code.ag1].val<=signtable[code.ag2].val)
cutequen=code.result-1;
}
else if(code.op==14)
{
if(signtable[code.ag1].val=signtable[code.ag2].val)
cutequen=code.result-1;
}
else if(code.op==11)
cout<<"----------四元式解释完成----------"<<endl;
}
//------------------------解释执行--------------------//
void execute()
{
while(cutequen<procecode && cutequen!=codetab)
{
interpreter(getcode(cutequen));
cutequen++;
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -