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

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

?? csshi.h

?? 一個(gè)LL1分析器,可以輸入產(chǎn)生式的條數(shù),以及產(chǎn)生式,開(kāi)始符號(hào) 結(jié)束符號(hào) 可以輸出堆棧的運(yùn)行情況
?? H
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
#include "shuzu.h"
#include "stack.h"
#include <iostream>
using namespace std;
//類的開(kāi)始
class csshi
{
private:
	char prochar[20][20];
	char first[20][20];
	char follow[20][20];
	char select[20][20];
    char chart[30][30];
	int intunsamech;//不同的非終結(jié)字符個(gè)數(shù)
	int intpro;//產(chǎn)生式個(gè)數(shù)
	char bgchar;//開(kāi)始字符
//......................................
	char string[20];
public:
csshi()
{
	intpro=0;
	intunsamech=0;
}
//輸入輸出產(chǎn)生式:
	void input();//
	void output();//
////////////////////////////////////////////////////////////////////////////////////////////
	int getpro();//
	char getbgch();//
	char getlch(int );//
	shuzu getrch(int );//
	bool inUnEndchar(char );//判斷是否字符為非終結(jié)字符
	shuzu getEndch();//
	shuzu getunEndch();//
/////////////////////////////////////////////////////////////////
	bool infirst(char );//判斷是否first集合中有空'&'
	void copyfirst(char ,char );//把前者的first集合并到后者中
	void inputfirst(char,int);//把前者字符添加到后面那行的first集合中,他能自動(dòng)消除重復(fù)
	void getfirst();//
	void outfirst();//
///////////////////////////////////////////////////////////////////	
	void inputfollow(char,int );//把前者字符添加到后者那行的follow集合中,它能自動(dòng)消除重復(fù)
	void copyfollow(char ,char );//把前者的follow集合并到后者中
	void firsttofollow(char ,char );//把前者的first除去非空元素并到后者的follow集合中
	void getfollow();//
	void outfollow();//
///////////////////////////////////////////////////////////////////////////////
	void inputselect(char ,int );//把這個(gè)字符添加到后者的select集合中
	void firsttoselect(char ,int );//把前者的first去空元素并到后面的select集合中
	void followtoselect(char ,int );//把前者的follow集合并到后者的select集合中
	void getselect();//
	void outselect();//
////////////////////////////////////////////////////////////////////////////////
	void getchart();//
	void outchart();//顯示預(yù)測(cè)分析表
///////////////////////////////////////////////////////////////////////////////
	void mainfuction();
};
void csshi::input()
{
	cout<<"---------------------------------說(shuō)明------------------------------------"<<endl;
	cout<<"版本:maXs   日期:2007-6-28  題目:LL(1)文法分析器"<<endl;
	cout<<"流程說(shuō)明:1.輸入產(chǎn)生式個(gè)數(shù),(如6 回車)"<<endl;
	cout<<"         2.輸入產(chǎn)生式,每行以'#'結(jié)束,(如E->ST#代表E->ST這條產(chǎn)生式)"<<endl;
	cout<<"         3.輸入開(kāi)始字符,如(E 回車)"<<endl;
	cout<<"         4.輸入要測(cè)試的句子,以'#'結(jié)束,如(a,a,a)#"<<endl;
	cout<<"         5.輸入是否要繼續(xù),(y or n)"<<endl;
	cout<<"使用說(shuō)明:1.在產(chǎn)生式中,如果要輸入E->空,就輸入E->#這樣就可以了。"<<endl;
	cout<<"         2.預(yù)測(cè)分析表里的數(shù)字代表產(chǎn)生式所對(duì)應(yīng)的條數(shù),按輸入時(shí)的順序排序。"<<endl;
	cout<<"-------------------------------------------------------------------------"<<endl;

	cout<<"*please input the number of chanshengshi:";
	cin>>csshi::intpro;
	cout<<"*please input the chanshengshi,use '#' end the line:"<<endl;;
	for (int i=1;i<=csshi::intpro;i++)
	{
		bool pd=true;
		int j=1;
		while(pd)
		{
			cin>>csshi::prochar[i][j];
			if (csshi::prochar[i][j]=='#')
				pd=false;
			j=j+1;
		}
	}
	cout<<"*please input the begin char:";
	cin>>csshi::bgchar;
}
void csshi::output()
{
	for (int i=1;i<=csshi::intpro;i++)
	{
		bool pd=true;
		int j=1;
		while(pd)
		{

			if (csshi::prochar[i][j]=='#')
				pd=false;
			else
			{
			cout<<csshi::prochar[i][j];
			j=j+1;
			}
		}
	cout<<endl;
	}
}
int csshi::getpro()
{
	return csshi::intpro;
}
char csshi::getbgch()
{
	return csshi::bgchar;
}
char csshi::getlch(int i)//得到第i條產(chǎn)生式的左部如"E->i*F:E"
{
	return csshi::prochar[i][1];
}
shuzu csshi::getrch(int i)//得到第i條產(chǎn)生式的右部如"E->(F+i):E(F+i)"
{
	shuzu sz;
	initshuzu(sz);
	sz.ch[1]=csshi::prochar[i][1];
	int j=4;
	while (csshi::prochar[i][j]!='#')
	{
	sz.ch[j-2]=csshi::prochar[i][j];
	j++;
	}
	if (j==4)
		sz.ch[2]='&';//&代表空
	sz.chang =j-4;//sz.chang存放的是右部字符的長(zhǎng)度
	return sz;
}
shuzu csshi::getEndch()//得到的格式如"E->i*E:i*"
{
	shuzu sz,szR;
	initshuzu(sz);
	initshuzu(szR);
	for (int i=1;i<=csshi::intpro;i++)
	{
		szR=csshi::getrch(i);
		for (int j=2;j<=szR.chang+1;j++)
			if (szR.ch[j]>'Z' || szR.ch[j]<'A')
            {
				sz.ch[sz.chang]=szR.ch[j];
				sz.chang ++;
			}
	}
	sz.chang--;
	cutsamech(sz);
	return sz;
}
shuzu csshi::getunEndch()//得到的格式如"E->i*T:ET"
{//其中的非終結(jié)字符包括為空的元素&
	shuzu sz,szR;
	initshuzu(sz);
	initshuzu(szR);
	for (int i=1;i<=csshi::intpro;i++)
	{
		szR=csshi::getrch(i);
		for (int j=1;j<=szR.chang;j++)
			if (szR.ch[j]<='Z' && szR.ch[j]>='A')
            {
				sz.ch[sz.chang]=szR.ch[j];
				sz.chang ++;
			}
	}
	sz.chang--;	
	cutsamech(sz);
	return sz;
}

bool csshi::inUnEndchar(char c)
{
	bool jg=true;
	shuzu Unsz;
	initshuzu(Unsz);
	Unsz=csshi::getunEndch();
	for (int i=1;i<=Unsz.chang;i++)
		if (c!=Unsz.ch[i])
			jg=false;
	return jg;
}
bool csshi::infirst(char c)
{
	bool jg=false;
	for (int i=1;i<=csshi::intunsamech;i++)
		if (c==csshi::first[i][1])
		{
			int firstchang=int(csshi::first[i][2]-'a');
			for (int k=1;k<=firstchang;k++)
				if ('&'==csshi::first[i][k+2])
					jg=true;
		}
	return jg;
		
}
void csshi::inputfirst(char c,int i)
{
	int firstchang=int(csshi::first[i][2]-'a');
	bool pd=true;
	for (int j=3;j<=2+firstchang;j++)
		if (csshi::first[i][j]==c)
			pd=false;
	if(pd)
	{
		csshi::first[i][3+firstchang]=c;
		csshi::first[i][2]++;
	//	cout<<"添加一個(gè)"<<c<<"給"<<csshi::first[i][1]<<endl;
	}
}
void csshi::copyfirst(char c,char c1)
{
	if (c!=c1) 
	for (int i=1;i<=csshi::intunsamech;i++)
		if (csshi::first[i][1]==c)
			for (int j=1;j<=csshi::intunsamech;j++)	
				if (csshi::first[j][1]==c1)
				{
					int firstchang=int(csshi::first[i][2]-'a');
					int firstchang1=int(csshi::first[j][2]-'a');
					for (int k=1;k<=firstchang;k++)
					{
						bool pd=true;
						for (int tempi=3;tempi<=2+firstchang1;tempi++)
							if (csshi::first[j][tempi]==csshi::first[i][2+k])
								pd=false;
						if(pd)
						{
						csshi::first[j][3+firstchang1]=csshi::first[i][2+k];
						csshi::first[j][2]++;
					//	cout<<"添加一個(gè)"<<csshi::first[i][2+k]<<"給"<<c1<<endl;
						firstchang1++;
						}
					}
				}
}
void csshi::getfirst()//得到的格式如"E->i*E:Ebi"
//說(shuō)明,這里的a代表這個(gè)E的first集的元素個(gè)數(shù),如果有2個(gè)就是c,如果有25個(gè),就是z
{
	shuzu Unsz,szR;
//..........................................................
//get the unsame chars's number
	initshuzu(Unsz);
	Unsz=csshi::getunEndch();
	csshi::intunsamech=Unsz.chang;//**********
//..........................................................
	initshuzu(szR);
//把first集合這個(gè)2維數(shù)組的每行左段標(biāo)示對(duì)應(yīng)的元素
	for (int i=1;i<=csshi::intunsamech;i++)
	{
		csshi::first[i][1]=Unsz.ch[i];
		csshi::first[i][2]='a';
	}
//主算法程序開(kāi)始:
	int intunsame;
	int tempf;char tempc;//標(biāo)記要求誰(shuí)的first的集合
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::first[i][1]==Unsz.ch[intunsame])
			{	//標(biāo)記要求誰(shuí)的first集合
				tempc=csshi::first[i][1];
				tempf=i;
			}
		for (i=1;i<=csshi::intpro;i++)
			if (tempc==csshi::prochar[i][1])//找到對(duì)應(yīng)的產(chǎn)生式i
			{
				szR=csshi::getrch(i);

				bool pd=true;
				int firstch=2;
				while (pd)
				if(szR.ch[firstch]>'Z' || szR.ch[firstch]<'A')
				{	
					//如果為終結(jié)符,直接添加到first集合中
					csshi::inputfirst(szR.ch[firstch],tempf);
					pd=false;
				}
				else//如果是非終結(jié)元素
				{
					csshi::copyfirst(szR.ch[firstch],tempc);
					if (csshi::infirst(szR.ch[firstch]))//如果這個(gè)字符的first集合中有空
					{
						if (firstch<=szR.chang)//如果沒(méi)有到產(chǎn)生式右部的尾端
							firstch++;
						else
						{
							pd=false;
							csshi::inputfirst('&',tempf);
						}
					}//if (csshi::infirst(szR.ch[firstch]))
					else
						pd=false;
				}//else
			}
	}//while(intunsame<=csshi::intunsamech)
}//for(xh)
}//end getfirst fuction
void csshi::outfirst()
{
	cout<<".............................................................."<<endl;	
	for (int i=1;i<=csshi::intunsamech;i++)
	{
		cout<<csshi::first[i][1]<<"'s first:";
		if (csshi::first[i][2]=='a')
			cout<<"empty";
		else
		{
			bool pd=true;
			char c='a';int j=3;
			while(pd)
			{
				if (c==csshi::first[i][2])
					pd=false;
				else
				{
				cout<<csshi::first[i][j];
				j=j+1;
				c++;
				}
			}
		}
   	cout<<endl<<csshi::first[i][1]<<"'s number:"<<int(csshi::first[i][2]-'a');
	cout<<endl;
	}
	cout<<".............................................................."<<endl;
}
void csshi::inputfollow(char c,int i)
{
	int followchang=int(csshi::follow[i][2]-'a');
	bool pd=true;
	for (int j=3;j<=2+followchang;j++)
		if (csshi::follow[i][j]==c)
			pd=false;
	if(pd)
	{
		csshi::follow[i][3+followchang]=c;
		csshi::follow[i][2]++;
	//	cout<<"添加一個(gè)"<<c<<"給"<<csshi::follow[i][1]<<endl;
	}
}
void csshi::copyfollow(char c,char c1)
{
if (c!=c1) 
	for (int i=1;i<=csshi::intunsamech;i++)
		if (csshi::follow[i][1]==c)
			for (int j=1;j<=csshi::intunsamech;j++)	
				if (csshi::follow[j][1]==c1)
				{
					int followchang=int(csshi::follow[i][2]-'a');
					int followchang1=int(csshi::follow[j][2]-'a');
					for (int k=1;k<=followchang;k++)
					{
						bool pd=true;
						for (int tempi=3;tempi<=2+followchang1;tempi++)
							if (csshi::follow[j][tempi]==csshi::follow[i][2+k])
								pd=false;
						if(pd)
						{
						csshi::follow[j][3+followchang1]=csshi::follow[i][2+k];
						csshi::follow[j][2]++;
					//	cout<<"添加一個(gè)"<<csshi::follow[i][2+k]<<"給"<<c1<<endl;
						followchang1++;
						}
					}
				}
}
void csshi::firsttofollow(char cfs,char cfl)
{
	for (int i=1;i<=csshi::intunsamech;i++)
		if (csshi::first[i][1]==cfs)
			for (int j=1;j<=csshi::intunsamech;j++)	
				if (csshi::follow[j][1]==cfl)//找到對(duì)應(yīng)的first集合與follow集合i,j
				{
					int firstchang=int(csshi::first[i][2]-'a');
					int followchang=int(csshi::follow[j][2]-'a');
					for (int k=1;k<=firstchang;k++)
					{
						bool pd=true;
						for (int tempi=3;tempi<=2+followchang;tempi++)
							if (csshi::follow[j][tempi]==csshi::first[i][2+k])
								pd=false;
						if(pd && csshi::first[i][2+k]!='&')

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区不卡在线播放| 夜夜亚洲天天久久| 欧美日韩激情一区| 成人一区二区视频| 日本欧美韩国一区三区| **欧美大码日韩| 久久久电影一区二区三区| 欧美日韩国产片| 99久久综合精品| 国产高清无密码一区二区三区| 亚洲综合丝袜美腿| 国产日韩欧美精品综合| 日韩一级片网址| 欧美日韩国产123区| 91蝌蚪porny| 国产成人av电影在线观看| 无码av免费一区二区三区试看| 日韩码欧中文字| 久久精品欧美一区二区三区麻豆| 欧美一区二区视频网站| 在线中文字幕不卡| 91一区二区三区在线播放| 国产v综合v亚洲欧| 国产精品一区在线观看乱码| 看电视剧不卡顿的网站| 日韩av不卡一区二区| 亚洲va欧美va天堂v国产综合| 亚洲特级片在线| 亚洲欧洲性图库| 中文字幕精品—区二区四季| 国产视频亚洲色图| 国产欧美中文在线| 日本一区二区三区dvd视频在线| 精品福利av导航| 久久久久久久久久久久久女国产乱 | eeuss鲁片一区二区三区在线看| 精品一区二区免费在线观看| 蜜桃av噜噜一区二区三区小说| 日韩高清电影一区| 美女视频黄频大全不卡视频在线播放| 日韩制服丝袜先锋影音| 日韩高清不卡一区二区三区| 久久精品国产澳门| 精品在线亚洲视频| 国产一区二区三区观看| 国产精品99精品久久免费| 国产成a人亚洲| 91一区二区三区在线观看| 在线看国产一区二区| 欧洲视频一区二区| 91精品国产麻豆| 精品国产免费人成电影在线观看四季| 欧美v日韩v国产v| 久久久久国产精品人| 国产精品欧美经典| 亚洲一区免费观看| 免费在线看一区| 国模套图日韩精品一区二区| 粉嫩aⅴ一区二区三区四区| 99精品视频在线播放观看| 欧美写真视频网站| 欧美成人一区二区三区片免费| 久久久久99精品一区| 亚洲人成网站色在线观看| 亚洲电影欧美电影有声小说| 久久电影网站中文字幕| 国产盗摄女厕一区二区三区| 91小视频免费看| 欧美猛男男办公室激情| 久久老女人爱爱| 一区二区三区中文字幕在线观看| 日韩电影在线观看一区| 国产成人精品综合在线观看| 在线亚洲人成电影网站色www| 91精品国产色综合久久久蜜香臀| 久久久久久久久免费| 一区二区理论电影在线观看| 韩国视频一区二区| 欧美天天综合网| 国产三级一区二区| 亚洲不卡在线观看| 成人禁用看黄a在线| 欧美精品在线观看播放| 国产精品久久久久久久久免费相片 | 久久久精品国产99久久精品芒果 | 欧美成人aa大片| 国产精品每日更新在线播放网址| 亚洲国产一区视频| 成人黄色一级视频| 欧美成人女星排名| 亚洲午夜激情av| 成人av网址在线| 精品久久一区二区| 亚洲国产精品麻豆| 波多野结衣在线一区| 日韩欧美国产精品一区| 亚洲自拍与偷拍| av中文字幕不卡| 久久久久久久国产精品影院| 亚洲1区2区3区4区| 91在线小视频| 日本一区二区视频在线| 免费的成人av| 欧美精品三级在线观看| 亚洲精品国产成人久久av盗摄| 国产精品 日产精品 欧美精品| 91精品国产麻豆国产自产在线 | 91 com成人网| 一区二区三区日韩在线观看| 粉嫩嫩av羞羞动漫久久久| 精品国产一区二区国模嫣然| 亚洲成人综合在线| 在线观看视频91| 亚洲欧美另类小说视频| 成人综合婷婷国产精品久久蜜臀| 日韩欧美精品三级| 日本va欧美va瓶| 欧美久久久久久蜜桃| 亚洲一区在线观看网站| 色综合天天做天天爱| 中文字幕一区免费在线观看| 国产福利91精品一区| 26uuu国产日韩综合| 极品瑜伽女神91| 精品久久人人做人人爰| 韩日欧美一区二区三区| 精品免费视频一区二区| 秋霞影院一区二区| 91精品国产91久久久久久一区二区| 亚洲综合久久av| 欧美三级乱人伦电影| 亚洲丶国产丶欧美一区二区三区| 欧洲色大大久久| 午夜亚洲国产au精品一区二区| 欧美日韩国产一二三| 五月激情综合婷婷| 91精品国产乱码| 麻豆一区二区三| 精品国产乱码久久久久久影片| 日本va欧美va精品发布| 欧美成人艳星乳罩| 国产精品一区在线观看你懂的| 337p粉嫩大胆噜噜噜噜噜91av| 国产麻豆精品视频| 国产精品国产三级国产普通话三级| 成人激情视频网站| 亚洲欧美在线观看| 在线观看视频一区| 蜜臀久久久99精品久久久久久| 精品美女一区二区| 成人免费av资源| 亚洲精品免费电影| 欧美高清性hdvideosex| 精品一区二区三区av| 国产精品久久久久影院老司| 色吊一区二区三区| 日韩av电影免费观看高清完整版 | 蜜臀av国产精品久久久久| 精品久久久久久久久久久久包黑料 | 欧美系列一区二区| 麻豆精品精品国产自在97香蕉| www国产精品av| av一二三不卡影片| 丝袜诱惑制服诱惑色一区在线观看 | 欧美亚洲丝袜传媒另类| 七七婷婷婷婷精品国产| 久久五月婷婷丁香社区| 99re这里只有精品视频首页| 亚洲午夜免费视频| 精品免费国产二区三区| 91在线国产福利| 免费观看在线色综合| 国产精品久久久久影院亚瑟| 欧美日韩国产一二三| 国产成人在线免费观看| 一区二区视频在线看| 欧美一区二区三区免费在线看| 粉嫩绯色av一区二区在线观看| 亚洲午夜视频在线| 久久久99精品久久| 欧美日韩亚洲国产综合| 国模一区二区三区白浆| 亚洲综合一区二区三区| 精品免费国产一区二区三区四区| 91在线porny国产在线看| 蜜臀精品一区二区三区在线观看| 国产精品美女久久久久aⅴ国产馆| 欧美日韩视频在线第一区 | 欧美一区二区福利在线| 不卡的看片网站| 久久成人18免费观看| 夜色激情一区二区| 欧美国产欧美亚州国产日韩mv天天看完整| 欧日韩精品视频| 成人在线视频一区二区| 美女脱光内衣内裤视频久久网站 | 五月激情六月综合| 最新日韩在线视频| 久久久久99精品国产片| 欧美精品xxxxbbbb|