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

📄 四元式.cpp

📁 八、 设计SAMPLE语言的语法、语义分析器
💻 CPP
字号:
#include"头文件.h"
extern int nowaddress;//表示下一个地址
extern bianYi parse;            //词法分析
extern item sign;            //
void fouryuan::load(int address1,item t1,item t2,item t3,item t4){
	payyuan[yuantop][0]=t1;
	payyuan[yuantop][1]=t2;
	payyuan[yuantop][2]=t3;
	payyuan[yuantop][3]=t4;
	address[yuantop]=address1;
	yuantop++;
}
void fouryuan::load(int address1,int t4){
	jumplist[yuantop][0]=-1;
	jumplist[yuantop][1]=t4;
	address[yuantop]=address1;
	yuantop++;
}
void fouryuan::load(int address1,item t1,item t2,item t3,int t4){
	payyuan[yuantop][0]=t1;
	payyuan[yuantop][1]=t2;
	payyuan[yuantop][2]=t3;
	jumplist[yuantop][0]=1;
	jumplist[yuantop][1]=t4;
	address[yuantop]=address1;
	yuantop++;
}
fouryuan::fouryuan(){
	yuantop=0;
}
void fouryuan::writeback(int l[],int address){
	for(int i=1;i<l[0]+1;i++){
		jumplist[l[i]-baseaddress][1]=address;
	}
}
void fouryuan::printfouryuan(){
	for(int i=0;i<yuantop;i++){
		if(payyuan[i][0].x==23)
			cout<<"("<<address[i]<<")"<<" ("
			    <<parse.list1.list[payyuan[i][0].x]<<","
				<<parse.list2.list[payyuan[i][1].y]<<",-,-)"
				<<endl;
		else if(payyuan[i][0].x==12)
			cout<<"("<<address[i]<<")"<<" ("
			    <<"sys,-,-,-)"
				<<endl;

		else if(jumplist[i][0]==1){
			cout<<"("<<address[i]<<")"<<" ("<<"j"
				<<parse.list1.list[payyuan[i][0].x]<<",";
				helpprint(i,1);
				helpprint(i,2);
			cout<<jumplist[i][1]<<")"
				<<endl;
		}
		else if(jumplist[i][0]==-1){
			cout<<"("<<address[i]<<")"<<" ("<<"j"<<",-,-,"
				<<jumplist[i][1]<<")"
				<<endl;
		}
		else if(payyuan[i][0].x!=51){
			cout<<"("<<address[i]<<")"<<" ("
				<<parse.list1.list[payyuan[i][0].x]<<",";
				helpprint(i,1);
				helpprint(i,2);
			cout<<parse.list2.list[payyuan[i][3].y]<<")"
				<<endl;
		}
		else {
			cout<<"("<<address[i]<<")"<<" ("
				<<parse.list1.list[payyuan[i][0].x]<<",";
				helpprint(i,1);
			cout<<"-,"
				<<parse.list2.list[payyuan[i][3].y]<<")"
				<<endl;			
		}
	}
}
void fouryuan::helpprint(int i,int j){
    if(payyuan[i][j].x==36)
		cout<<parse.list2.list[payyuan[i][j].y]<<",";
	else cout<<payyuan[i][j].y<<",";
}

⌨️ 快捷键说明

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