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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? csshi.h

?? 一個LL1分析器,可以輸入產生式的條數,以及產生式,開始符號 結束符號 可以輸出堆棧的運行情況
?? H
?? 第 1 頁 / 共 2 頁
字號:
						{
						csshi::follow[j][3+followchang]=csshi::first[i][2+k];
						csshi::follow[j][2]++;
					//	cout<<"添加一個"<<csshi::follow[i][2+k]<<"給"<<c1<<endl;
						followchang++;
						}
					}
				}
}
void csshi::getfollow()
{
	shuzu Unsz,szR;
//..........................................................
//get the unsame chars's number
	initshuzu(Unsz);
	Unsz=csshi::getunEndch();
	csshi::intunsamech=Unsz.chang;
//..........................................................
	initshuzu(szR);
//把follow集合這個2維數組的每行左段標示對應的元素
	for (int i=1;i<=csshi::intunsamech;i++)
	{
		csshi::follow[i][1]=Unsz.ch[i];
		csshi::follow[i][2]='a';
	}
//主程序算法開始:
	int intunsame;
	int tempf;char tempc;//標記要求誰的follow的集合
	csshi::inputfollow('#',1);
for(int xh=1;xh<=csshi::intunsamech;xh++)
{   intunsame=0;
	while (intunsame<=csshi::intunsamech)
	{
		intunsame++;
		for (int i=1;i<=csshi::intunsamech;i++)
			if (csshi::follow[i][1]==Unsz.ch[intunsame])
			{	//標記要求誰的follow集合
				tempc=csshi::follow[i][1];
				tempf=i;
			}
		for (i=1;i<=csshi::intpro;i++)
			{
				szR=csshi::getrch(i);
				for (int j=2;j<=szR.chang+1;j++)
					if (szR.ch[j]==tempc)//如果找到右部有要求的標記字符
					{
						bool pd=true;
						int followch=j;
						while (pd)
						{
							pd=false;
							if (followch==szR.chang+1)//如果找到的字符是右部最后一個字符
								csshi::copyfollow(csshi::prochar[i][1],tempc);
							else if (szR.ch[followch+1]>'Z' || szR.ch[followch+1]<'A')
								csshi::inputfollow(szR.ch[followch+1],tempf);
							else//后面一個字符是非終結符 
							{
								csshi::firsttofollow(szR.ch[followch+1],tempc);
								if(csshi::infirst(szR.ch[followch+1]))
								{
									pd=true;followch++;
								}
								
							}//else//后面一個字符是非終結符 
						}//while (pd)
					}//if (szR.ch[j]==tempc)//如果找到右部有要求的標記字符
								
			}//for (i=1;i<=csshi::intpro;i++)
	}//while(intunsame<=csshi::intunsamech)
}//for(xh)
}
void csshi::outfollow()
{
	cout<<".............................................................."<<endl;	
	for (int i=1;i<=csshi::intunsamech;i++)
	{
		cout<<csshi::follow[i][1]<<"'s follow:";
		if (csshi::follow[i][2]=='a')
			cout<<"empty";
		else
		{
			bool pd=true;
			char c='a';int j=3;
			while(pd)
			{
				if (c==csshi::follow[i][2])
					pd=false;
				else
				{
				cout<<csshi::follow[i][j];
				j=j+1;
				c++;
				}
			}
		}
   	cout<<endl<<csshi::follow[i][1]<<"'s number:"<<int(csshi::follow[i][2]-'a');
	cout<<endl;
	}
	cout<<".............................................................."<<endl;
}
void csshi::inputselect(char c,int i)
{
int selectchang=int(csshi::select[i][1]-'a');
	bool pd=true;
	for (int j=2;j<=1+selectchang;j++)
		if (csshi::select[i][j]==c)
			pd=false;
	if(pd)
	{
		csshi::select[i][2+selectchang]=c;
		csshi::select[i][1]++;
	//	cout<<"添加一個"<<c<<"給第"<<i<<"條產生式的select集合"<<endl;
	}
}
void csshi::firsttoselect(char cfs,int temps)
{
	int selectchang=int(csshi::select[temps][1]-'a');
	for (int i=1;i<=csshi::intunsamech;i++)
		if (csshi::first[i][1]==cfs)
		{
			int firstchang=int(csshi::first[i][2]-'a');
			for (int k=1;k<=firstchang;k++)
				{
					bool pd=true;
					for (int tempi=2;tempi<=1+selectchang;tempi++)
						if (csshi::select[temps][tempi]==csshi::first[i][2+k])
							pd=false;
					if(pd && csshi::first[i][2+k]!='&')
					{
						csshi::select[temps][2+selectchang]=csshi::first[i][2+k];
						csshi::select[temps][1]++;
					//	cout<<"添加一個"<<csshi::first[i][2+k]<<"給第"<<temps<<"條產生式的select集合"<<endl;
						selectchang++;
					}
				}
		
		}//if (csshi::first[i][1]==cfs)
}
void csshi::followtoselect(char c,int temps)
{
	int selectchang=int(csshi::select[temps][1]-'a');
	for (int i=1;i<=csshi::intunsamech;i++)
		if (csshi::follow[i][1]==c)
		{
			int followchang=int(csshi::follow[i][2]-'a');
			for (int k=1;k<=followchang;k++)
				{
					bool pd=true;
					for (int tempi=2;tempi<=1+selectchang;tempi++)
						if (csshi::select[temps][tempi]==csshi::follow[i][2+k])
							pd=false;
					if(pd)
					{
						csshi::select[temps][2+selectchang]=csshi::follow[i][2+k];
						csshi::select[temps][1]++;
					//	cout<<"添加一個"<<csshi::follow[i][2+k]<<"給"<<c1<<endl;
						selectchang++;
					}//if(pd && csshi::first[i][2+k]!='&')
				}//for (int k=1;k<=firstchang;k++)
		
		}//if (csshi::first[i][1]==cfs)




}
void csshi::getselect()//格式如:E->+F#: a+
/////////////////////////a代表數量,只有一個元素+
{
//初始化select集合的元素個數
	for (int i=1;i<=csshi::intpro;i++)
		csshi::select[i][1]='a';

//主程序開始:
	shuzu szR;
	initshuzu(szR);
	for	(i=1;i<=csshi::intpro;i++)
	{
		szR=csshi::getrch(i);
		bool pd=true;
		int chint=2;
		while(pd)
		{
			pd=false;
			if (szR.ch[chint]=='&')
				csshi::followtoselect(szR.ch[1],i);
			else if (szR.ch[chint]>'Z' || szR.ch[chint]<'A')
				csshi::inputselect(szR.ch[chint],i);
			else
			{
				csshi::firsttoselect(szR.ch[chint],i);
				if (csshi::infirst(szR.ch[chint]))
					if (chint==szR.chang+1)
						csshi::followtoselect(szR.ch[1],i);
					else
					{
						pd=true;chint++;
					}//else
			}//else
		}//while(pd)
	}//for	(i=1;i<=csshi::intpro;i++)
}//end fuction csshi::getselect()
void csshi::outselect()
{
cout<<".............................................................."<<endl;	
	for (int i=1;i<=csshi::intpro;i++)
	{
		cout<<"第"<<i<<"條產生式的select集合是";
		if (csshi::select[i][1]=='a')
			cout<<"empty";
		else
		{
			bool pd=true;
			char c='a';int j=2;
			while(pd)
			{
				if (c==csshi::select[i][1])
					pd=false;
				else
				{
				cout<<csshi::select[i][j];
				j=j+1;
				c++;
				}
			}
		}
   	cout<<endl<<"第"<<i<<"條產生式的select集合元素個數是:"<<int(csshi::select[i][1]-'a');
	cout<<endl;
	}
	cout<<".............................................................."<<endl;
}
void csshi::getchart()
{
//得到非終結字符與終結字符
	int UncharInt,charInt;
	shuzu szU,sz;
	initshuzu(szU);
	initshuzu(sz);
	szU=csshi::getunEndch();
	UncharInt=szU.chang;
	sz=csshi::getEndch();
	charInt=sz.chang;
//...................................................
for (int i=1;i<=UncharInt+1;i++)
	for (int j=1;j<=charInt+2;j++)
		csshi::chart[i][j]=' ';
//初始化行
	for (i=2;i<=UncharInt+1;i++)
		csshi::chart[i][1]=szU.ch[i-1];
//初始化列
	for (int j=2;j<=charInt+1;j++)
		csshi::chart[1][j]=sz.ch[j-1];
	csshi::chart[1][charInt+2]='#';
//...................................................
//主程序開始:
	for (i=1;i<=csshi::intpro;i++)
	{
		int selectchang=int(csshi::select[i][1]-'a');
		for (j=2;j<=selectchang+1;j++)
			for (int k=2;k<=UncharInt+1;k++)
				if (csshi::prochar[i][1]==csshi::chart[k][1])//find the hang
					for (int z=2;z<=charInt+2;z++)
						if (csshi::select[i][j]==csshi::chart[1][z])//find the lie
							csshi::chart[k][z]=char(i+48);
	}

}
void csshi::outchart()
{
//得到非終結字符與終結字符
	int UncharInt,charInt;
	shuzu szU,sz;
	initshuzu(szU);
	initshuzu(sz);
	szU=csshi::getunEndch();
	UncharInt=szU.chang;
	sz=csshi::getEndch();
	charInt=sz.chang;
//..........................................
cout<<"預測分析表:"<<endl;
cout<<"------------------------"<<endl;
for (int i=1;i<=UncharInt+1;i++)
	{	for (int j=1;j<=charInt+2;j++)
			cout<<csshi::chart[i][j]<<"  ";
		cout<<endl;
	}
cout<<"------------------------"<<endl;
}
void csshi::mainfuction()
{
//初始化
	stack st;
	initstack(st);
	push(st,csshi::bgchar);
	cout<<"please input the string,end it by input '#':";
	bool pd=true;int x=1;
	while (pd)
	{
		cin>>csshi::string[x];
		if (string[x]=='#')
			pd=false;
		else
			x++;
	}
	cout<<"序列號"<<"          "<<"字符棧"<<"           "<<"剩余棧"<<"          "<<"動作"<<endl;
//主程序
	int i=1;//標記第幾行
	pd=true;//判斷是否循環結束
	int otherint=1;//標記去掉幾個字符
	int stackint=1;//標示去掉了幾個分析棧中的元素
	while (pd)
	{
		if (i<10)
			cout<<"  "<<i<<"             ";
		else
			cout<<" "<<i<<"             ";
		//分析棧
		stackint=st.chang;
		for (int sti=1;sti<=st.chang+1;sti++)
			cout<<st.ch[sti];
		for (int temp=1;temp<=16-st.chang;temp++)
			cout<<" ";
		//字符串棧
		int str=otherint;bool pd1=true;int temp1=0;
		while (pd1)
		{
			cout<<csshi::string[str];
			if (csshi::string[str]=='#')
				pd1=false;
			str++;
			temp1++;
		}
		for(temp=1;temp<=17-temp1;temp++)
			cout<<" ";
//...........................................................
		if(st.ch[st.chang+1]==csshi::string[otherint])
			if (st.ch[st.chang+1]=='#')
			{	cout<<"接受"<<endl;
				pd=false;
			}
			else
			{	
				pop(st);
				otherint++;
				cout<<"匹配"<<endl;
			}
		else
		{
		//從select集合中找對應的產生式
		int UncharInt,charInt;
		shuzu szU,sz;
		initshuzu(szU);
		initshuzu(sz);
		szU=csshi::getunEndch();
		UncharInt=szU.chang;
		sz=csshi::getEndch();
		charInt=sz.chang;
		bool pd2=false;
		char c=st.ch[stackint+1];
		for (int x1=2;x1<=UncharInt+1;x1++)
			for (int x2=2;x2<=charInt+2;x2++)
				if (c==csshi::chart[x1][1] && csshi::string[otherint]==csshi::chart[1][x2])
					{
					pd2=true;
					if (csshi::chart[x1][x2]==' ')
						{
						cout<<"報錯"<<endl;
						pd=false;
						}
					else
						{

						cout<<csshi::chart[x1][x2]<<endl;
						pop(st);
						int chanshengshi=int(csshi::chart[x1][x2])-48;
						shuzu szR;
						initshuzu(szR);
						szR=csshi::getrch(chanshengshi);
						for (int pushint=szR.chang+1;pushint>1;pushint--)
							push(st,szR.ch[pushint]);
						}
					}//if
		if (!pd2)
			{
			cout<<"報錯"<<endl;
			pd=false;
			}
		}
		i++;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美在线999| 国产盗摄一区二区| 欧美性色黄大片| 亚洲精品国产一区二区三区四区在线| 不卡av在线免费观看| 国产午夜精品美女毛片视频| 国产伦理精品不卡| 国产日韩欧美电影| 成人av网址在线| 有码一区二区三区| 欧美日韩一区 二区 三区 久久精品 | 中文字幕av一区二区三区高| 成人h精品动漫一区二区三区| 亚洲靠逼com| 91精品国产91久久久久久最新毛片| 免费的成人av| 国产免费观看久久| 色婷婷一区二区| 奇米777欧美一区二区| 久久午夜老司机| 91女神在线视频| 热久久久久久久| 国产欧美一区二区精品久导航| 色香蕉久久蜜桃| 免费观看在线色综合| 欧美激情综合五月色丁香| 972aa.com艺术欧美| 日韩影院免费视频| 久久久久久久综合| 色噜噜久久综合| 久久99精品久久久久| 国产精品久久久久久久久久久免费看| 欧美午夜电影在线播放| 激情欧美一区二区| 亚洲精品少妇30p| 精品蜜桃在线看| 色88888久久久久久影院按摩 | 亚洲一级二级三级| 日韩欧美国产电影| caoporn国产一区二区| 婷婷久久综合九色国产成人| 中文字幕欧美激情一区| 欧美日本国产一区| www.在线欧美| 狠狠色丁香久久婷婷综合_中| 亚洲色图制服诱惑| 日韩欧美一卡二卡| 日本韩国一区二区三区| 国产精品自在欧美一区| 亚洲国产一区二区在线播放| 国产精品色一区二区三区| 欧美肥胖老妇做爰| 97成人超碰视| 国产精品资源在线看| 亚洲一区成人在线| 中文文精品字幕一区二区| 日韩一级在线观看| 欧洲一区二区三区在线| 风间由美中文字幕在线看视频国产欧美| 天天亚洲美女在线视频| 亚洲手机成人高清视频| 久久久久久久久久久电影| 欧美日韩国产高清一区| 色综合久久久久久久久久久| 国产成人福利片| 久色婷婷小香蕉久久| 一区二区三区在线播放| 国产女主播一区| 久久久久99精品国产片| 日韩三级中文字幕| 337p亚洲精品色噜噜噜| 欧美色视频在线| 欧洲另类一二三四区| 91丨九色丨蝌蚪丨老版| 成人av在线一区二区| 国产91对白在线观看九色| 男人的天堂亚洲一区| 亚洲成人av一区二区三区| 樱桃国产成人精品视频| 最新欧美精品一区二区三区| 中文字幕在线播放不卡一区| 国产精品福利一区| 国产精品视频免费| 成人欧美一区二区三区小说| 综合久久给合久久狠狠狠97色| 国产精品婷婷午夜在线观看| 国产精品乱人伦| 欧美激情在线一区二区| 中文字幕不卡在线观看| 国产精品视频第一区| 国产精品福利在线播放| 亚洲欧洲另类国产综合| 国产精品乱人伦| 亚洲最新视频在线播放| 国产日韩欧美不卡| 亚洲欧洲精品一区二区精品久久久 | 欧美大片国产精品| 日韩免费视频一区| 亚洲精品一区二区三区香蕉| 久久精品一区二区三区不卡牛牛| 国产三级欧美三级日产三级99| 亚洲国产精品av| 亚洲视频在线观看三级| 亚洲精品成人a在线观看| 亚洲第一激情av| 久久爱另类一区二区小说| 国内精品国产三级国产a久久| 国产精品夜夜嗨| 99精品视频在线免费观看| 欧洲国内综合视频| 69久久99精品久久久久婷婷| 欧美v日韩v国产v| 国产蜜臀97一区二区三区| 亚洲激情六月丁香| 免费高清在线一区| 成人av在线网| 欧美一二三四区在线| 国产午夜精品久久久久久免费视| 亚洲美女免费视频| 免费欧美在线视频| aaa国产一区| 日韩免费电影网站| 中文字幕五月欧美| 日韩成人一区二区三区在线观看| 国产一区二区三区av电影| 99精品视频在线观看免费| 日韩欧美在线一区二区三区| 综合中文字幕亚洲| 日本欧美久久久久免费播放网| 白白色亚洲国产精品| 91精品福利在线一区二区三区 | 久久国产夜色精品鲁鲁99| 风流少妇一区二区| 欧美日韩三级视频| 国产精品午夜电影| 男女男精品视频| 色视频一区二区| 欧美激情一区二区三区不卡| 日韩黄色免费网站| 99久久精品免费精品国产| 亚洲精品一区二区在线观看| 婷婷开心久久网| 色综合天天狠狠| 国产精品视频在线看| 黑人巨大精品欧美一区| 欧美老年两性高潮| 亚洲欧美视频在线观看| 国产一区二区女| 久久只精品国产| 日韩中文字幕av电影| 日本乱人伦一区| 中文字幕一区二区三区视频| 国产精品一级片| 久久久久国产精品麻豆 | 国内精品伊人久久久久av一坑| 欧美精三区欧美精三区| 亚洲女人的天堂| av成人老司机| 1024亚洲合集| eeuss鲁一区二区三区| 久久久99精品久久| 精品一区二区免费看| 日韩欧美一级二级| 日韩av在线发布| 欧美一区二区精品| 三级精品在线观看| 欧美日韩精品专区| 亚洲最大色网站| 欧美日韩1区2区| 日韩中文字幕区一区有砖一区| 欧美日韩国产影片| 亚洲午夜免费视频| 欧美午夜免费电影| 一区二区欧美视频| 欧美在线免费观看视频| 亚洲综合视频网| 欧美三级午夜理伦三级中视频| 亚洲成年人影院| 欧美久久久久久蜜桃| 婷婷夜色潮精品综合在线| 91精品国产色综合久久不卡蜜臀| 午夜欧美电影在线观看| 91精品国产一区二区三区蜜臀| 久久精品久久久精品美女| 精品国产乱码久久久久久浪潮| 国产一区二区三区四区五区入口| 久久中文字幕电影| 成人晚上爱看视频| 亚洲免费大片在线观看| 欧美午夜精品免费| 青草国产精品久久久久久| 欧美精品一区二区三区四区| 成人永久aaa| 亚洲综合色成人| 欧美成人一区二区三区片免费 | 日韩精品国产欧美| 欧美精品一区二区三区蜜臀| 91在线视频观看| 午夜伦理一区二区| 欧美变态口味重另类|