亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? yy.cpp

?? 簡單易用 易看的編譯器 帶詞法分析和語法分析 輸出是二元式和四元式 使用讀取文件的方式進行編譯 功能基本完整
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include "cifa.h"
#include "iostream.h"
#include "stdlib.h"
# define FALSE false 
# define TRUE true 
//FILE *fp1;
//fp1=fopen("sour.txt","r");
cifa c1(fopen("sour.txt","r"));
int qiantao=0;//錢掏變量
struct errorType
{
	int ErrorNumber;//語法語義錯誤代碼
	int ErrorAddress;//語義錯誤對應(yīng)二元式的地址
};

struct yujutype
{
	int Etyp;
	int Evalue;
	int TC;
	int FC;
	int Code;
};


struct idtype //標(biāo)識符表
{
	char name[20];//名字
	int typ;//類型1:integer,2:real,3:program or procedure name
	int kind;//屬性1:簡單變量,2:臨時變量,3:值參變量,4:變參變量
	int addr;//地址
};


struct leveltype //層次表
{
	char name[20];//名字
	int outern;//外層
	int lnum;//層次號
	int parnum;//參數(shù)個數(shù)
	int varnum;//變量個數(shù)
	int pointer;//標(biāo)識符表首址
	int recl;//活動記錄長度
	int temp;//臨時變量首址
	int lnp;//入口
};

struct temptype //
{
	bool used;//
	int typ;//
	int taddr;//
};

struct argtype //
{
	int fl;//類型1:常數(shù)2:指令入口3:臨時變量4:直接訪問變量5:間接訪問變量6+i:第i外層變量
	int flvalue;//值 常數(shù)值|指令地址|相對地址
};

struct quadtype //四元式表
{
	int op;//操作
	argtype arg1;//操作數(shù)
	argtype arg2;//操作數(shù)
	argtype result;//結(jié)果
};

struct quanjutype //變量
{
	int lasent;//標(biāo)識符表長度指針
	int lastbl;//層次表長度指針
	int currbl;//當(dāng)前層指針
	int tempp;//變量表藏度指針
	int nxq;//四元式表長度指針
};


    errorType errorvalue;
   yujutype yujuvalue;
    CifaResult  yy_tCifa[500];
   char yy_QuadOpCodeTable[30][10];
   char yy_tErrorMessage[100][30];
  int yy_pCurSym=0;
	void coutgen();
    void coutty();
  int merge(int,int,int);
	int newtemp(int);
	int lookupp(char *);
	int lookupv_onelevel(char *,int);
	void backpatch(int,int,int,int);
	void addid(char *,int,int,int);
	quanjutype quanjuvalue;
	void gen(char *,int,int,int,int,int,int);
	idtype idtab[10000];
	leveltype leveltab[100];
	temptype temptab[100];
	quadtype quad[10000];
	int yy_nErrorAddress;
	int yy_nErrorNum;
	CifaResult  GetNextSym();
	void NextSym();
	CifaResult  GetCurSym();
	void initial();
    int s_GuanXi();
	int s_GuanXiBiaoDaShi();
	int s_BuErBiaoDaShi();
	int s_YingZi();
	int s_Xiang();
	int s_BiaoDaShi();
	int s_XunHuanYuJu();
	int s_TiaoJianYuJu();
	int s_FuZhiYuJu();
	int s_FuHeYuJu();
	int s_YuJu();
	int s_YuJuChuan();
	int s_XingChan();
	int s_XingChanBuFeng();
	int s_JianBianShuoMing();
	int s_ShuoMing();
	int s_ShuoMingChuan();
	int s_ChengXuTi();
	int s_ChengXu();

void gen(char * op,int a1,int a2,int a3,int a4,int a5,int a6)
{
	if (quanjuvalue.nxq>=1000-1) return;
	int r=29;
	for (int i=0;i<1000;i++)
	{
		if (!stricmp(yy_QuadOpCodeTable[i],op))
		{
			r=i;break;
		}
	}
	quad[quanjuvalue.nxq].op=r;
	quad[quanjuvalue.nxq].arg1.fl=a1;
	quad[quanjuvalue.nxq].arg1.flvalue=a2;
	quad[quanjuvalue.nxq].arg2.fl=a3;
	quad[quanjuvalue.nxq].arg2.flvalue=a4;
	quad[quanjuvalue.nxq].result.fl=a5;
	quad[quanjuvalue.nxq].result.flvalue=a6;
	quanjuvalue.nxq++;
}

void addid(char * name, int typ, int kind, int addr)
{
	if (quanjuvalue.lasent>=1000-1) return;
	::strcpy(idtab[quanjuvalue.lasent].name,name);
	idtab[quanjuvalue.lasent].typ=typ;
	idtab[quanjuvalue.lasent].kind=kind;
	idtab[quanjuvalue.lasent].addr=addr;
	quanjuvalue.lasent++;
}
void backpatch(int link, int point, int v1, int v2)
{
	if (link==0) return;
	switch (point)
	{
	case 2:
		backpatch(quad[link].arg1.fl,point,v1,v2);
		quad[link].arg1.fl=v1;
		quad[link].arg1.flvalue=v2;
		break;
	case 3:
		backpatch(quad[link].arg2.fl,point,v1,v2);
		quad[link].arg2.fl=v1;
		quad[link].arg2.flvalue=v2;
		break;
	case 4:
		backpatch(quad[link].result.fl,point,v1,v2);
		quad[link].result.fl=v1;
		quad[link].result.flvalue=v2;
		break;
	default:
		return;
	}
}
int lookupp(char * id)
{
	for (int i=0;i<quanjuvalue.lastbl;i++)
		if (!::stricmp(id,leveltab[i].name)) return i;
	return -1;
}
int lookupv_onelevel(char * idname, int idlevel)//
{
	if (!::stricmp(idname,leveltab[idlevel].name)) return -1;
	int n=leveltab[idlevel].varnum+leveltab[idlevel].parnum;
	int pointer=leveltab[idlevel].pointer;
	for (int i=pointer;i<(pointer+n);i++)
		if (!::stricmp(idname,idtab[i].name)) return i;
	return 0;
}

int lookupv_alllevel(char * name, int & level)
{
	int i=level;
	int r;
	while(1)
	{
		if (i<0) return 0;
		r=lookupv_onelevel(name,i);
		switch (r)
		{
		case -1:
			level=i;
			return -1;
		case 0:
			i--;
			break;
		default:
			level=i;
			return r;
		}
	}
}



CifaResult  GetCurSym()
{
	return yy_tCifa[yy_pCurSym];
}

void NextSym()
{
	yy_pCurSym++;
}


CifaResult  GetNextSym()
{
	return yy_tCifa[yy_pCurSym+1];
}


    
int YuYiFengXi()
{
	
	quanjuvalue.currbl=0;
	quanjuvalue.lasent=0;
	quanjuvalue.lastbl=0;
	quanjuvalue.nxq=0;
	quanjuvalue.tempp=0;
	gen("",0,0,0,0,0,0);//idtab start from 1
	addid("",0,0,0);//idtab start from 1
	yy_pCurSym=0;
	if(!s_ChengXu()) return FALSE;
	gen("_End_",0,0,0,0,0,0);//end note
     return 1;
}


int s_ChengXu()
{
switch (GetCurSym().type)
	{
	case 3://program
		break;
	default:
		yy_nErrorNum=3;
		yy_nErrorAddress=yy_pCurSym;
		return FALSE;
	}
		
	NextSym();
	switch (GetCurSym().type)
	{
	case 1://id
		break;
	default:
		yy_nErrorNum=4;
		yy_nErrorAddress=yy_pCurSym;
		return FALSE;
	}
//yy
	//對層次的副直
	leveltab[quanjuvalue.currbl].lnp=quanjuvalue.nxq+1;
	//cout<<"fasdfas亂七八糟 "<<leveltab[quanjuvalue.currbl].lnp<<endl;
	leveltab[quanjuvalue.currbl].lnum=0;
	strcpy(leveltab[quanjuvalue.currbl].name,GetCurSym().text);
	leveltab[quanjuvalue.currbl].outern=0;
	leveltab[quanjuvalue.currbl].parnum=0;
	leveltab[quanjuvalue.currbl].pointer=quanjuvalue.lasent;
	leveltab[quanjuvalue.currbl].recl=5;
	leveltab[quanjuvalue.currbl].varnum=0;
	leveltab[quanjuvalue.currbl].temp=quanjuvalue.tempp;
	quanjuvalue.lastbl++;
	gen("call",1,0,1,0,2,2);
	int link=quanjuvalue.nxq;
	gen("in",0,0,0,0,0,0);
//yy end
	NextSym();
	switch (GetCurSym().type)
	{
	case 30://;
		break;
	default:
		yy_nErrorNum=5;
		yy_nErrorAddress=yy_pCurSym;
		return FALSE;
	}
	NextSym();
	
	if (!s_ChengXuTi()) return FALSE;
//yy
//	printf("餓我我哦我外哦我哦我我忘我歐文\n");
	backpatch(link,2,2,leveltab[quanjuvalue.currbl].recl);
	gen("out",0,0,0,0,0,0);
	gen("ret",0,0,0,0,0,0);
	quanjuvalue.currbl=leveltab[quanjuvalue.currbl].outern;
	quanjuvalue.tempp=leveltab[quanjuvalue.currbl].temp;
//yy end
	switch (GetCurSym().type)
	{
	case 31://.
		break;
	default:
		yy_nErrorNum=6;
		yy_nErrorAddress=yy_pCurSym;
		return FALSE;
	}
		
	return TRUE;
}

int s_ChengXuTi()
{
	switch (GetCurSym().type)
	{
	case 14://integer
	case 15://real
//	case 5://procedure程序不要過程
		if (!s_ShuoMingChuan()) return FALSE;
		switch (GetCurSym().type)
		{
		case 30://;
			break;
		default:
			yy_nErrorNum=5;
			yy_nErrorAddress=yy_pCurSym;
			return FALSE;
		}
		NextSym();
		break;
	case 6://begin
		break;
	default:
		yy_nErrorNum=7;
		yy_nErrorAddress=yy_pCurSym;
		return FALSE;
	}
	switch (GetCurSym().type)
	{
	case 6://begin
		break;
	default:
		yy_nErrorNum=8;
		yy_nErrorAddress=yy_pCurSym;
		return FALSE;
	}
	NextSym();
	
	if (!s_YuJuChuan()) return FALSE;
	//cout<<"我愛我愛我愛我愛"<<endl;
	switch (GetCurSym().type)
	{
	case 7://end
		break;
	default:
		yy_nErrorNum=10;
		yy_nErrorAddress=yy_pCurSym;
		return FALSE;
	}
	NextSym();
	return TRUE;
}


int s_ShuoMingChuan()
{
	if (!s_ShuoMing()) return FALSE;
	while (GetCurSym().type==30 
		&& GetNextSym().type!=6)//; begin
	{
		NextSym();
		if (!s_ShuoMing()) return FALSE;
	}
	return TRUE;
}

int s_ShuoMing()
{
	switch (GetCurSym().type)
	{
	case 14://integer
	case 15://real
		if (!s_JianBianShuoMing()) return FALSE;
		break;
	//case 5://procedure
		//if (!s_GuoChengShuoMing()) return FALSE;
	//	break;
	default:
		yy_nErrorNum=11;
		yy_nErrorAddress=yy_pCurSym;
		return FALSE;
	}
	return TRUE;
}

int s_JianBianShuoMing()
{
	int typ;//yy
	switch (GetCurSym().type)
	{
	case 14://integer
		typ=1;//yy
		break;
	case 15://real
		typ=2;//yy
		break;
	default:
		yy_nErrorNum=12;
		yy_nErrorAddress=yy_pCurSym;
		return FALSE;
	}
	NextSym();
	switch (GetCurSym().type)
	{
	case 1://id
		break;
	default:
		yy_nErrorNum=14;
		yy_nErrorAddress=yy_pCurSym;
		return FALSE;
	}
//yy
	switch (lookupv_onelevel(GetCurSym().text,quanjuvalue.currbl))
	{
	case -1:
		yy_nErrorNum=31;
		yy_nErrorAddress=yy_pCurSym;
		return FALSE;
	case 0:
		addid(GetCurSym().text,typ,1,leveltab[quanjuvalue.currbl].recl);
		leveltab[quanjuvalue.currbl].varnum++;
		leveltab[quanjuvalue.currbl].recl+=typ;
		break;
	default:
		yy_nErrorNum=32;
		yy_nErrorAddress=yy_pCurSym;
		return FALSE;
	}
//yy end
	NextSym();
	while (GetCurSym().type==32) //,
	{
		NextSym();
		switch (GetCurSym().type)
		{
		case 1://id
			break;
		default:
			yy_nErrorNum=14;
			yy_nErrorAddress=yy_pCurSym;
			return FALSE;
		}
//yy
		switch (lookupv_onelevel(GetCurSym().text,quanjuvalue.currbl))
		{
		case -1:
			yy_nErrorNum=31;
			yy_nErrorAddress=yy_pCurSym;
			return FALSE;
		case 0:
			addid(GetCurSym().text,typ,1,leveltab[quanjuvalue.currbl].recl);
			leveltab[quanjuvalue.currbl].varnum++;
			leveltab[quanjuvalue.currbl].recl+=typ;
			break;
		default:
			yy_nErrorNum=32;
			yy_nErrorAddress=yy_pCurSym;
			return FALSE;
		}
//yy end
		NextSym();
	}
	return TRUE;
}



int  s_YuJuChuan()
{
	if (!s_YuJu()) return FALSE;

	while (GetCurSym().type==30)//;
	{
		NextSym();
		if (!s_YuJu()) return FALSE;
	}
	cout<<"語句串結(jié)束"<<endl;
	return TRUE;
}

int  s_YuJu()
{
	switch (GetCurSym().type)
	{
	case 6://begin
		if (!s_FuHeYuJu()) return FALSE;
		break;
	case 1://id
		if (!s_FuZhiYuJu()) return FALSE;
		break;
	case 8://if
		if (!s_TiaoJianYuJu()) return FALSE;
		break;
	case 11://while
		if (!s_XunHuanYuJu()) return FALSE;
		break;
//	case 13://call
	//	if (!s_GuoChengYuJu()) return FALSE;
	//	break;
	default:
		yy_nErrorNum=9;
		yy_nErrorAddress=yy_pCurSym;
		return FALSE;
	}
	return TRUE;
}

int  s_FuHeYuJu()
{
	switch (GetCurSym().type)
	{
	case 6://begin
		break;
	default:
		yy_nErrorNum=8;
		yy_nErrorAddress=yy_pCurSym;
		return FALSE;
	}
	NextSym();
	if (!s_YuJuChuan()) return FALSE;
	switch (GetCurSym().type)
	{
	case 7://end
		break;
	default:
		yy_nErrorNum=10;
		yy_nErrorAddress=yy_pCurSym;
		return FALSE;
	}
	NextSym();
	return TRUE;
}

int  s_FuZhiYuJu()
{
	switch (GetCurSym().type)
	{
	case 1://id
		break;
	default:
		yy_nErrorNum=20;
		yy_nErrorAddress=yy_pCurSym;
		return FALSE;
	}
//yy
	int idlevel=quanjuvalue.currbl;
	int idpoint=lookupv_alllevel(GetCurSym().text,idlevel);
	if (idpoint==0)
	{
		yy_nErrorNum=33;
		yy_nErrorAddress=yy_pCurSym;
		return FALSE;
	}
	if (idpoint==-1)
	{
		yy_nErrorNum=34;
		yy_nErrorAddress=yy_pCurSym;
		return FALSE;
	}
	int t1=idtab[idpoint].typ;
	int k1=idtab[idpoint].addr;
	int i1;
	if (idlevel==quanjuvalue.currbl)
	{
		if (idtab[idpoint].kind==4) i1=5;
		else i1=4;
	}
	else
	{
		i1=idlevel+6;
	}
//yy end
	NextSym();
	switch (GetCurSym().type)
	{
	case 29://:=
		break;
	default:
		yy_nErrorNum=21;
		yy_nErrorAddress=yy_pCurSym;
		return FALSE;
	}
	NextSym();
	if (!s_BiaoDaShi()) return FALSE;
//yy
	int t2;
	int k2;
	int i2=yujuvalue.Etyp;
	int j2=yujuvalue.Evalue;
	if (i2==1)
	{
		k2=j2;
		t2=1;
	}
	else if (i2==2)
	{
		k2=temptab[j2].taddr;
		t2=temptab[j2].typ;
		i2=3;
	}
	else
	{
		k2=idtab[j2].addr;
		t2=idtab[j2].typ;
		i2+=1;
	}
	if (t1<t2)
	{
		yy_nErrorNum=35;
		yy_nErrorAddress=yy_pCurSym;
		return FALSE;
	}
	if (t1==1) gen(":=I",i1,k1,i2,k2,0,0);
	else gen(":=R",i1,k1,i2,k2,0,0);
	if (i2==3) temptab[j2].used=FALSE;
//yy end
	return TRUE;
}

int  s_TiaoJianYuJu()
{
	switch (GetCurSym().type)
	{
	case 8://if
		break;
	default:
		yy_nErrorNum=22;
		yy_nErrorAddress=yy_pCurSym;
		return FALSE;
	}
	NextSym();
	if (!s_BuErBiaoDaShi()) return FALSE;
//yy
	int TCexit=yujuvalue.TC;
	int FCexit=yujuvalue.FC;
	backpatch(TCexit,4,2,quanjuvalue.nxq);
//	cout<<"if語句的真出口"<<quanjuvalue.nxq<<endl;
//yy end
	switch (GetCurSym().type)
	{
	case 9://then
		break;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品综合在线视频| 午夜精品在线看| 日韩国产欧美一区二区三区| 欧美亚洲综合久久| 自拍偷拍欧美激情| 国产丶欧美丶日本不卡视频| 日韩欧美国产午夜精品| 免费一级片91| 69久久99精品久久久久婷婷| 亚洲精品乱码久久久久| 97超碰欧美中文字幕| 亚洲视频一区二区在线观看| 成人h动漫精品一区二区| 中文字幕色av一区二区三区| 不卡的电影网站| 亚洲精品久久久蜜桃| 不卡av免费在线观看| 中文字幕一区二区三区四区不卡| 99国产精品99久久久久久| 国产亚洲成av人在线观看导航| 久久疯狂做爰流白浆xx| 久久久亚洲精华液精华液精华液| 国产在线精品一区二区夜色 | 成人免费在线播放视频| 成人国产在线观看| 一二三区精品福利视频| 欧美顶级少妇做爰| 国产精品自拍一区| 亚洲毛片av在线| 欧美一级在线观看| 国产69精品久久777的优势| 亚洲男人电影天堂| 精品国产乱码91久久久久久网站| 国产另类ts人妖一区二区| 精品久久人人做人人爰| 成人性生交大片免费| 久久精品久久99精品久久| 综合自拍亚洲综合图不卡区| 日韩午夜电影av| 国产一区二区久久| 欧美激情综合在线| 日韩欧美久久久| 欧美三级电影网| 91在线播放网址| 成人av综合在线| 成人精品一区二区三区四区| 裸体在线国模精品偷拍| 日韩极品在线观看| 日本午夜一区二区| 亚洲h在线观看| 亚洲高清视频的网址| 亚洲精品水蜜桃| 亚洲精品美国一| 亚洲丝袜美腿综合| 国产精品国产自产拍高清av王其| 欧美成人vps| 日韩网站在线看片你懂的| 日本精品一级二级| 99久久婷婷国产综合精品 | 6080午夜不卡| 欧美日韩高清一区| 欧美日韩国产经典色站一区二区三区| 在线观看国产日韩| 色综合久久综合| 91捆绑美女网站| 日本高清不卡在线观看| 欧美亚洲精品一区| 日韩一区二区电影| 久久天堂av综合合色蜜桃网| 久久综合一区二区| 国产女人水真多18毛片18精品视频| 成人国产一区二区三区精品| 国产丶欧美丶日本不卡视频| 成人午夜私人影院| 欧美伊人久久久久久午夜久久久久| 91久久精品一区二区| 欧美一区二区啪啪| 亚洲欧洲美洲综合色网| 偷窥少妇高潮呻吟av久久免费| 裸体一区二区三区| 色综合久久中文字幕| 精品国产99国产精品| 亚洲色图都市小说| 国产精品99久久久| 91精品国产综合久久福利软件| 久久精品夜色噜噜亚洲aⅴ| 亚洲综合丝袜美腿| 丰满亚洲少妇av| 日韩精品一区二区三区在线播放| 亚洲男同1069视频| 懂色一区二区三区免费观看| 3d动漫精品啪啪一区二区竹菊| 中文字幕在线播放不卡一区| 国产成人一区在线| 久久嫩草精品久久久精品| 美国十次了思思久久精品导航| 色视频成人在线观看免| 亚洲日本在线看| 99v久久综合狠狠综合久久| 中文字幕av不卡| 国产精品18久久久久久久久| 欧美精品一区二区三区蜜桃| 日韩精品乱码av一区二区| 欧美肥大bbwbbw高潮| 日本aⅴ亚洲精品中文乱码| 91精品国产综合久久久蜜臀粉嫩| 午夜国产精品影院在线观看| 欧美日韩一区二区三区高清| 亚洲一区二区三区四区不卡| 欧美系列日韩一区| 免费成人在线网站| 1区2区3区欧美| 久久只精品国产| 日韩亚洲欧美在线| 在线观看国产日韩| 91同城在线观看| 国产一区二区免费看| 一区二区三区欧美| 日本一区二区三区国色天香 | 成人av网在线| 国产精品影音先锋| 狠狠色狠狠色合久久伊人| 五月天久久比比资源色| 一区二区三区在线免费观看| 亚洲图片激情小说| 亚洲激情图片qvod| 亚洲资源中文字幕| 97超碰欧美中文字幕| 精品亚洲成a人| 久久综合久久综合久久综合| jlzzjlzz国产精品久久| 奇米影视7777精品一区二区| 国产精品毛片大码女人| 欧美成人午夜电影| 欧美久久一二区| 99久久99久久综合| 国产成人综合亚洲91猫咪| 视频一区二区三区入口| 一区二区三区资源| 亚洲精品中文字幕在线观看| 2014亚洲片线观看视频免费| 日韩亚洲电影在线| 91麻豆精品国产91久久久更新时间 | 亚洲视频你懂的| 欧美国产精品专区| 日本一区二区免费在线| 精品国产91洋老外米糕| 精品国产一区二区亚洲人成毛片| 欧美精品一二三| 欧美日韩国产精选| 欧美一级一区二区| 2024国产精品| 久久精品一区二区三区不卡| 久久无码av三级| 中文字幕高清一区| 久久国产免费看| 亚洲国产视频一区二区| 中文字幕中文字幕在线一区| 国产欧美日本一区视频| 欧美写真视频网站| 成人丝袜18视频在线观看| 一级女性全黄久久生活片免费| 精品少妇一区二区三区视频免付费 | 国产精品自拍毛片| 国内精品伊人久久久久影院对白| 激情综合网av| www.色综合.com| 欧美午夜精品一区二区三区| 欧美日韩免费观看一区三区| 日韩一区二区三区精品视频| 亚洲精品一区二区三区影院| 中文字幕乱码久久午夜不卡| 亚洲综合激情网| 精品一二三四区| 日本久久一区二区| 精品第一国产综合精品aⅴ| 中文字幕第一区二区| 亚洲成人动漫在线免费观看| 国产成人免费在线观看不卡| 欧洲精品一区二区| 亚洲欧洲99久久| 蜜桃在线一区二区三区| 99久久精品免费看国产| 日韩一区二区电影| 亚洲一区二区三区在线播放| 国产精品一区二区久激情瑜伽| 6080日韩午夜伦伦午夜伦| 国产精品成人免费在线| 久久99国产精品久久| 在线成人高清不卡| 亚洲精品精品亚洲| 成人午夜电影网站| 国产欧美综合在线| 激情av综合网| 国产亚洲欧洲997久久综合 | 五月激情综合色| 欧美性色aⅴ视频一区日韩精品| 国产精品伦一区| 国产99一区视频免费| 精品欧美一区二区久久|