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

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

?? yf.cpp

?? 這是一個(gè)用c++語(yǔ)言實(shí)現(xiàn)了語(yǔ)法分析的原代碼
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
	}
	else
	{
		string_tail->next->next=temp;
		string_tail->next=temp;
	}
}
void output()
{
	cout<<"token表內(nèi)容如下:"<<endl;
	token *temp1;
	temp1=new token;
	temp1=token_head->next;
	while(temp1!=NULL)
	{
		cout<<temp1->code;
		if(temp1->num == -1)
		{
			cout<<endl;
		}
		else
		{
			cout<<"   "<<temp1->num<<endl;
		}
		temp1=temp1->next;
	}
	cout<<"常數(shù)表內(nèi)容如下:"<<endl;
	number *temp2;
	temp2=new number;
	temp2=number_head->next;
	while(temp2!=NULL)
	{
		cout<<temp2->num<<"   "<<temp2->value<<endl;
		temp2=temp2->next;
	}
	cout<<"符號(hào)表內(nèi)容如下:"<<endl;
	str *temp3;
	temp3=new str;
	temp3=string_head->next;
	while(temp3!=NULL)
	{
		cout<<temp3->num<<"   "<<temp3->word<<endl;
		temp3=temp3->next;
	}
}
void outfile()
{
	ofstream fout1("token.txt");//寫文件
	ofstream fout2("number.txt");
	ofstream fout3("string.txt");
	token *temp1;
	temp1=new token;
	temp1=token_head->next;
	while(temp1!=NULL)
	{
		fout1<<temp1->code;
		if(temp1->num == -1)
			fout1<<endl;
		else
			fout1<<"   "<<temp1->num<<endl;
		temp1=temp1->next;
	}
	number *temp2;
	temp2=new number;
	temp2=number_head->next;
	while(temp2!=NULL)
	{
		fout2<<temp2->num<<"   "<<temp2->value<<endl;
		temp2=temp2->next;
	}
	str *temp3;
	temp3=new str;
	temp3=string_head->next;
	while(temp3!=NULL)
	{
		fout3<<temp3->num<<"   "<<temp3->word<<endl;
		temp3=temp3->next;
	}
}

//以上是詞法,以下是語(yǔ)法
void yufa_initialize()
{
	
	stack_head=new fxz;
	stack_tail=new fxz;
	stack_head->pre=NULL;
	stack_head->next=stack_tail;
	stack_head->num=0;
	stack_head->word='!';
	stack_tail->pre=stack_head;
	stack_tail->next=NULL;//初始化棧分析鏈表
	css[0].left='Q';
	css[0].right="P";
	css[1].left='P';
	css[1].right="id()L;R";
	css[2].left='L';
	css[2].right="L;D";
	css[3].left='L';
	css[3].right="D";
	css[4].left='D';
	css[4].right="id:int";
	css[5].left='E';
	css[5].right="E+T";
	css[6].left='E';
	css[6].right="T";
	css[7].left='T';
	css[7].right="T*F";
	css[8].left='T';
	css[8].right="F";
	css[9].left='F';
	css[9].right="(E)";
	css[10].left='F';
	css[10].right="id";
	css[11].left='B';
	css[11].right="B and B";
	css[12].left='B';
	css[12].right="id>id";
	css[13].left='M';
	css[13].right="id=E";
	css[14].left='S';
	css[14].right="if B then M";
	css[15].left='S';
	css[15].right="while B do M";
	css[16].left='S';
	css[16].right="M";
	css[17].left='N';
	css[17].right="N;S";
	css[18].left='N';
	css[18].right="S";
	css[19].left='R';
	css[19].right="{N}";
	int i,j;
	for(i=0;i<20;i++)
	{
		char *css_len;
		css_len=&css[i].right[0];
		css[i].len=strlen(css_len);
	}
	css[1].len=6;
	css[4].len=3;
	css[10].len=1;
	css[11].len=3;
	css[12].len=3;
	css[13].len=3;
	css[14].len=4;
	css[15].len=4;//初始化產(chǎn)生式
	for(i=0;i<46;i++)
	{
		for(j=0;j<18;j++)
			action[i][j].sr='#';
	}//初始化action表
	for(i=0;i<46;i++)
	{
		for(j=0;j<11;j++)
			go_to[i][j]=-1;
	}//初始化go_to表
	//給action表和go_to表賦初值
	action[0][0].sr='s';action[0][0].state=2;
	action[1][17].sr='@';//結(jié)束
	action[2][1].sr='s';action[2][1].state=3;
	action[3][2].sr='s';action[3][2].state=4;
	action[4][0].sr='s';action[4][0].state=5;
	action[5][4].sr='s';action[5][4].state=6;
	action[6][11].sr='s';action[6][11].state=7;
	action[7][3].sr='r';action[7][3].state=4;
	action[8][3].sr='r';action[8][3].state=3;
	action[9][3].sr='s';action[9][3].state=10;
	action[10][0].sr='s';action[10][0].state=5;action[10][9].sr='s';action[10][9].state=13;
	action[11][17].sr='r';action[11][17].state=1;
	action[12][3].sr='r';action[12][3].state=2;
	action[13][0].sr='s';action[13][0].state=14;action[13][13].sr='s';action[13][13].state=23;
	action[13][15].sr='s';action[13][15].state=27;
	action[14][8].sr='s';action[14][8].state=15;
	action[15][0].sr='s';action[15][0].state=36;action[15][1].sr='s';action[15][1].state=41;
	action[16][6].sr='s';action[16][6].state=43;action[16][3].sr='r';action[16][3].state=13;
	action[16][10].sr='r';action[16][10].state=13;
	action[17][3].sr='s';action[17][3].state=19;action[17][10].sr='s';action[17][10].state=18;
	action[18][17].sr='r';action[18][17].state=19;
	action[19][0].sr='s';action[19][0].state=14;action[19][13].sr='s';action[19][13].state=23;
	action[19][15].sr='s';action[19][15].state=27;
	action[20][3].sr='r';action[20][3].state=17;action[20][10].sr='r';action[20][10].state=17;
	action[21][3].sr='r';action[21][3].state=18;action[21][10].sr='r';action[21][10].state=18;
	action[22][3].sr='r';action[22][3].state=16;action[22][10].sr='r';action[22][10].state=16;
	action[23][0].sr='s';action[23][0].state=31;
	action[24][12].sr='s';action[24][12].state=34;action[24][14].sr='s';action[24][14].state=25;
	action[25][0].sr='s';action[25][0].state=14;
	action[26][3].sr='r';action[26][3].state=14;action[26][10].sr='r';action[26][10].state=14;
	action[27][0].sr='s';action[27][0].state=31;
	action[28][12].sr='s';action[28][12].state=34;action[28][16].sr='s';action[28][16].state=29;
	action[29][0].sr='s';action[29][0].state=14;
	action[30][3].sr='r';action[30][3].state=15;action[30][10].sr='r';action[30][10].state=15;
	action[31][7].sr='s';action[31][7].state=32;
	action[32][0].sr='s';action[32][0].state=33;
	action[33][12].sr='r';action[33][12].state=12;action[33][14].sr='r';action[33][14].state=12;
	action[33][16].sr='r';action[33][16].state=12;
	action[34][0].sr='s';action[34][0].state=31;
	action[35][12].sr='r';action[35][12].state=11;action[35][14].sr='r';action[35][14].state=11;
	action[35][16].sr='r';action[35][16].state=11;
	action[36][2].sr='r';action[36][2].state=10;action[36][3].sr='r';action[36][3].state=10;
	action[36][5].sr='r';action[36][5].state=10;action[36][6].sr='r';action[36][6].state=10;
	action[36][10].sr='r';action[36][10].state=10;
	action[37][2].sr='r';action[37][2].state=8;	action[37][3].sr='r';action[37][3].state=8;
	action[37][5].sr='r';action[37][5].state=8;action[37][6].sr='r';action[37][6].state=8;
	action[37][10].sr='r';action[37][10].state=8;
	action[38][2].sr='r';action[38][2].state=6;action[38][3].sr='r';action[38][3].state=6;
	action[38][5].sr='s';action[38][5].state=39;action[38][6].sr='r';action[38][6].state=6;
	action[38][10].sr='r';action[38][10].state=6;
	action[39][0].sr='s';action[39][0].state=36;action[39][1].sr='s';action[39][1].state=41;
	action[40][2].sr='r';action[40][2].state=7;action[40][3].sr='r';action[40][3].state=7;
	action[40][5].sr='r';action[40][5].state=7;action[40][6].sr='r';action[40][6].state=7;
	action[40][10].sr='r';action[40][10].state=7;
	action[41][0].sr='s';action[41][0].state=36;action[41][1].sr='s';action[41][1].state=41;
	action[42][2].sr='s';action[42][2].state=45;action[42][6].sr='s';action[42][6].state=43;
	action[43][0].sr='s';action[43][0].state=36;action[43][1].sr='s';action[43][1].state=41;
	action[44][2].sr='r';action[44][2].state=5;action[44][3].sr='r';action[44][3].state=5;
	action[44][5].sr='s';action[44][5].state=39;action[44][6].sr='r';action[44][6].state=5;
	action[44][10].sr='r';action[44][10].state=5;
	action[45][2].sr='r';action[45][2].state=9;action[45][3].sr='r';action[45][3].state=9;
	action[45][5].sr='r';action[45][5].state=9;action[45][6].sr='r';action[45][6].state=9;
	action[45][10].sr='r';action[45][10].state=9;

	go_to[0][0]=1;go_to[4][1]=8;go_to[4][9]=9;go_to[10][1]=12;go_to[10][2]=11;
	go_to[13][7]=22;go_to[13][8]=21;go_to[13][10]=17;go_to[15][3]=16;go_to[15][4]=38;
	go_to[15][5]=37;go_to[19][7]=20;go_to[19][8]=20;go_to[23][6]=24;go_to[25][7]=26;
	go_to[27][6]=28;go_to[29][7]=30;go_to[34][6]=35;go_to[39][5]=40;go_to[41][3]=42;
	go_to[41][4]=38;go_to[41][5]=37;go_to[43][4]=44;go_to[43][5]=37;
	//action表和go_to表賦初值完畢
}
int ID1(int i)//按action表,給終結(jié)符編號(hào)
{
	int j;
	j=-1;
	if(i==25 || i==26) j=0;
	if(i==1) j=8;
	if(i==2) j=6;
	if(i==3) j=5;
	if(i==4) j=7;
	if(i==5) j=4;
	if(i==6) j=3;
	if(i==7) j=9;
	if(i==8) j=10;
	if(i==9) j=1;
	if(i==10) j=2;
	if(i==31) j=12;
	if(i==32) j=13;
	if(i==33) j=14;
	if(i==35) j=15;
	if(i==36) j=16;
	if(i==37) j=11;
	return j;
}
string ID10(int i)//反編號(hào)輸入字符
{
	string ch;
	if(i==0) ch="id";
	if(i==1) ch="(";
	if(i==2) ch=")";
	if(i==3) ch=";";
	if(i==4) ch=":";
	if(i==5) ch="*";
	if(i==6) ch="+";
	if(i==7) ch=">";
	if(i==8) ch="=";
	if(i==9) ch="{";
	if(i==10) ch="}";
	if(i==11) ch="int";
	if(i==12) ch="and";
	if(i==13) ch="if";
	if(i==14) ch="then";
	if(i==15) ch="while";
	if(i==16) ch="do";
	if(i==17) ch="$";
	return(ch);
}
int ID2(char ch)//按go_to表給非終結(jié)符編號(hào)
{
	int j;
	j=-1;
	if(ch=='P') j=0;
	if(ch=='D') j=1;
	if(ch=='R') j=2;
	if(ch=='E') j=3;
	if(ch=='T') j=4;
	if(ch=='F') j=5;
	if(ch=='B') j=6;
	if(ch=='M') j=7;
	if(ch=='S') j=8;
	if(ch=='L') j=9;
	if(ch=='N') j=10;
	return(j);
}
int ID20(char ch)//給非終結(jié)符編號(hào)
{
	int j;
	j=-1;
	if(ch=='P') j=100;
	if(ch=='D') j=101;
	if(ch=='R') j=102;
	if(ch=='E') j=103;
	if(ch=='T') j=104;
	if(ch=='F') j=105;
	if(ch=='B') j=106;
	if(ch=='M') j=107;
	if(ch=='S') j=108;
	if(ch=='L') j=109;
	if(ch=='N') j=1010;
	return(j);
}

char ID21(int j)//反編號(hào)非終結(jié)符
{
	char ch;
	if(j==100 || j==0) ch='P';
	if(j==101 || j==1) ch='D';
	if(j==102 || j==2) ch='R';
	if(j==103 || j==3) ch='E';
	if(j==104 || j==4) ch='T';
	if(j==105 || j==5) ch='F';
	if(j==106 || j==6) ch='B';
	if(j==107 || j==7) ch='M';
	if(j==108 || j==8) ch='S';
	if(j==109 || j==9) ch='L';
	if(j==1010 || j==10) ch='N';
	return(ch);
}
void add(fxz *temp)//加一個(gè)結(jié)點(diǎn)
{
	if(stack_head->next==stack_tail)
	{
		temp->pre=stack_head;
		temp->next=stack_tail;
		stack_head->next=temp;
		stack_tail->pre=temp;
	}
	else
	{
		temp->pre=stack_tail->pre;
		temp->next=stack_tail;
		stack_tail->pre->next=temp;
		stack_tail->pre=temp;
	}
}
void del()//刪除一個(gè)結(jié)點(diǎn)
{
	stack_tail->pre->pre->next=stack_tail;
	stack_tail->pre=stack_tail->pre->pre;
}
int yufa_main(int w)
{
	cout<<"當(dāng)前輸入符號(hào):"<<ID10(w)<<"   ";
	int i,flag=0,state_temp;//flag錯(cuò)誤標(biāo)志,0正常移進(jìn),1錯(cuò)誤,2歸約,3結(jié)束
	char sr_temp;
	sr_temp=action[stack_tail->pre->num][w].sr;//動(dòng)作變化
	state_temp=action[stack_tail->pre->num][w].state;//狀態(tài)變化
	if(sr_temp=='#')//錯(cuò)誤動(dòng)作報(bào)錯(cuò)
	{
		flag=1;
		cout<<endl<<"句子的語(yǔ)法出錯(cuò)!"<<endl;
	}
	else if(sr_temp=='s')//移進(jìn)動(dòng)作
	{
		fxz *temp;
		temp=new fxz;
		temp->next=NULL;
		temp->pre=NULL;
		temp->word=w;//符號(hào)存入分析棧
		temp->num=state_temp;//狀態(tài)存入分析棧
		add(temp);
		cout<<"動(dòng)作(移進(jìn)):"<<sr_temp<<state_temp<<"    ";
		cout<<"狀態(tài)轉(zhuǎn)為:"<<stack_tail->pre->num<<"  "<<"棧頂符號(hào):"<<ID10(stack_tail->pre->word)<<endl;
		flag=0;//0正常移進(jìn)
	}
	else if(sr_temp=='r')//歸約動(dòng)作
	{
		int p=ID2(css[state_temp].left);//文法左部
		int q=css[state_temp].len;//文法右部
		for(i=0;i<q;i++)
			del();//刪除要規(guī)約的狀態(tài)和符號(hào)
		fxz *temp;
		temp=new fxz;
		temp->next=NULL;
		temp->pre=NULL;
		temp->word=ID20(css[state_temp].left);
		temp->num=go_to[stack_tail->pre->num][p];//查go_to表找到當(dāng)前棧頂狀態(tài)遇到規(guī)則左部需要轉(zhuǎn)入的狀態(tài)
		add(temp);//加入分析棧
		cout<<"動(dòng)作(歸約):"<<sr_temp<<state_temp<<"  "<<css[state_temp].left<<"→"<<css[state_temp].right<<"    ";
		cout<<"狀態(tài)轉(zhuǎn)為:"<<stack_tail->pre->num<<"  "<<"棧頂符號(hào):"<<ID21(stack_tail->pre->word)<<endl;
		flag=2;//
	}
	else if(sr_temp=='@')//結(jié)束動(dòng)作
	{
		cout<<"動(dòng)作(歸約):"<<sr_temp<<state_temp<<"  "<<css[state_temp].left<<"→"<<css[state_temp].right<<"    ";
		cout<<"狀態(tài)轉(zhuǎn)為:"<<stack_tail->pre->num<<"  "<<"棧頂符號(hào):"<<ID21(stack_tail->pre->word)<<endl;
		flag=3;
		cout<<endl<<"語(yǔ)法分析正確完成!"<<endl;
	}
	else//其他意外情況
	{
		flag=1;
		cout<<endl<<"語(yǔ)法分析出錯(cuò)!"<<endl;
	}
	return(flag);
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久久裸模| 五月天激情综合| 欧美日韩一区在线| 国产在线麻豆精品观看| 99久久夜色精品国产网站| 亚洲精品v日韩精品| 久久综合国产精品| 欧美性xxxxx极品少妇| 国产精品一线二线三线精华| 一区二区三区不卡视频在线观看 | 亚洲女人小视频在线观看| 日韩欧美另类在线| 日本福利一区二区| 国产99久久久国产精品潘金网站| 日本女人一区二区三区| 1024成人网| 国产视频911| 欧美tickling挠脚心丨vk| 91福利国产成人精品照片| 成人午夜碰碰视频| 狠狠色丁香婷婷综合| 日韩影视精彩在线| 亚洲在线视频免费观看| 亚洲天天做日日做天天谢日日欢| 国产亚洲欧美日韩日本| 欧美mv日韩mv亚洲| 日韩欧美久久久| 欧美精品视频www在线观看| 色屁屁一区二区| 97精品国产露脸对白| 国产成人免费视频网站| 国产在线国偷精品免费看| 麻豆成人久久精品二区三区红| 久久久精品国产免大香伊| 欧美xxxx在线观看| 欧美大胆一级视频| 日韩精品一区二区三区在线播放| 欧美疯狂做受xxxx富婆| 欧美日本一区二区| 欧美视频你懂的| 欧美三级视频在线观看| 欧美午夜在线观看| 欧美体内she精高潮| 欧美视频三区在线播放| 欧美乱熟臀69xxxxxx| 欧美一区二区三区色| 欧美精选午夜久久久乱码6080| 欧美午夜精品一区二区三区 | 午夜在线成人av| 午夜私人影院久久久久| 亚洲电影在线播放| 日韩在线观看一区二区| 久久99热这里只有精品| 国产精品综合二区| 成人自拍视频在线观看| 91猫先生在线| 欧美日韩精品欧美日韩精品一综合| 欧美日韩精品欧美日韩精品一| 91麻豆精品国产91久久久更新时间| 欧美精品日韩一区| 精品国产亚洲在线| 日本一区二区电影| 亚洲激情图片qvod| 国产精品一区2区| 亚洲欧洲成人精品av97| 亚洲欧美欧美一区二区三区| 亚洲自拍偷拍网站| 蜜臀99久久精品久久久久久软件| 精品一区二区精品| av男人天堂一区| 欧美日韩中文字幕一区| 日韩免费一区二区三区在线播放| 久久久久久99久久久精品网站| 中文字幕亚洲欧美在线不卡| 亚洲高清视频在线| 久久疯狂做爰流白浆xx| www.日本不卡| 欧美一区二区三区在| 国产日韩欧美精品综合| 亚洲一区二区视频| 国产真实乱对白精彩久久| av动漫一区二区| 欧美电影影音先锋| 久久精品亚洲国产奇米99| 亚洲裸体xxx| 精品一区二区国语对白| 在线精品亚洲一区二区不卡| 日韩精品一区二区三区在线观看 | 久久福利资源站| 91视频免费观看| 日韩三级电影网址| 依依成人综合视频| 久久免费看少妇高潮| 亚洲综合久久av| 国产69精品久久久久777| 欧美另类videos死尸| 久久精品无码一区二区三区| 视频在线观看一区| 成人免费毛片片v| 日韩欧美专区在线| 亚洲激情在线激情| 成人91在线观看| 日韩精品一区二区三区四区视频 | 国产精品久久久久影院| 丝袜亚洲精品中文字幕一区| 不卡一区在线观看| 久久麻豆一区二区| 视频一区在线视频| 91成人网在线| 亚洲视频一区二区在线| 国产不卡视频在线播放| 日韩欧美一二三| 亚洲一区在线看| 成人sese在线| 久久久五月婷婷| 欧美aa在线视频| 欧美人妇做爰xxxⅹ性高电影| 中文字幕一区二区三区在线播放 | 韩国精品久久久| 4438成人网| 亚洲色图欧美在线| 国产激情一区二区三区| 日韩欧美国产综合| 视频一区欧美精品| 久久亚洲影视婷婷| 欧美一区二区三区在线| 丝袜美腿成人在线| 日本韩国欧美在线| 亚洲欧美另类小说视频| 成人精品gif动图一区| 国产亚洲午夜高清国产拍精品| 男男视频亚洲欧美| 日韩一级高清毛片| 日韩国产精品久久久| 欧美日韩一区成人| 午夜精品福利一区二区三区av| 99国产精品久久久久| 欧美性三三影院| 成a人片亚洲日本久久| 免费成人av资源网| 一级特黄大欧美久久久| 国产精品久久综合| 精品一区二区av| 国产精品自拍av| 婷婷开心激情综合| 同产精品九九九| 亚洲乱码国产乱码精品精小说| 亚洲一区在线观看免费观看电影高清| 91亚洲精品久久久蜜桃网站| 自拍偷自拍亚洲精品播放| 99久久伊人精品| 亚洲男人的天堂在线aⅴ视频| 99re成人精品视频| 玉足女爽爽91| 欧美精品v日韩精品v韩国精品v| 午夜在线成人av| 日韩欧美一级二级三级| 国产成人夜色高潮福利影视| 国产精品毛片高清在线完整版 | 久久超级碰视频| 国产亚洲综合av| 成人av电影在线网| 亚洲最大成人网4388xx| 91精品啪在线观看国产60岁| 日韩欧美一级二级| 懂色中文一区二区在线播放| 一区在线播放视频| 欧美日韩精品一二三区| 久久精品国产一区二区| 中文在线资源观看网站视频免费不卡 | 久久久久久免费毛片精品| 成人国产精品免费网站| 亚洲一区在线观看视频| 精品国一区二区三区| 99久久国产综合色|国产精品| 亚洲第一久久影院| 久久久精品日韩欧美| 91亚洲男人天堂| 久久99精品久久久| 亚洲欧美日韩人成在线播放| 欧美日韩国产片| 国产宾馆实践打屁股91| 午夜精品福利一区二区蜜股av | 精品国产髙清在线看国产毛片| 丁香另类激情小说| 日韩一区欧美二区| 成人免费一区二区三区在线观看| 欧美日韩国产美| 播五月开心婷婷综合| 亚洲国产成人精品视频| 久久欧美中文字幕| 欧美肥妇free| 成人午夜在线播放| 久久精品国产秦先生| 悠悠色在线精品| 久久精品水蜜桃av综合天堂| 欧美久久一二三四区| 91老师国产黑色丝袜在线| 国产一区二区三区免费观看| 亚洲成人在线网站|