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

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

?? step2_clae_first_follow_select.c

?? 功能基本實現
?? C
?? 第 1 頁 / 共 3 頁
字號:
		for(i=0;i<vnSetLen;i++)
		{
			for(j=0;j<matrixSize;j++)
			{
				printf("%d,",relationMatrix[i][j]);
				fprintf(testFile,"%d,",relationMatrix[i][j]);
			}
			printf("\n");
			fprintf(testFile,"\r\n");
		}

		for(i=0;i<vnSetLen;i++)
		{
			printf("group %c:",VNSet[i]);
			fprintf(testFile,"group %c:",VNSet[i]);
			for(j=0;j<groupFollow[i].len;j++)
			{
					printf("%c,",groupFollow[i].ele[j]);
					fprintf(testFile,"%c",groupFollow[i].ele[j]);
			}
			printf("\n");
			fprintf(testFile,"\r\n");
		}
		printf("======================\n");
		fprintf(testFile,"======================\r\n");
	}

	//free mem
	for(i=0;i<matrixSize;i++)
		free(relationMatrix[i]);
	free(relationMatrix);
	free(firstGroupFlagArr);
}

void    cal_select_set()
{
	int i,j,k,l,m;
	int vnIndex;
	char tmpChar;

	vnIndex=0;
	for(i=0;i<grammerNum;i++)
	{
		if(GrammerSet[i].mSetence[0]!=VNSet[vnIndex])
			vnIndex++;

		j=1;
		groupSelect[i].len=0;
		while(GrammerSet[i].mSetence[j]!='\0')
		{
			if(!(GrammerSet[i].mSetence[j]>=65&&GrammerSet[i].mSetence[j]<=90))
			{
				if(GrammerSet[i].mSetence[j]!='z')
				{
					groupSelect[i].ele[groupSelect[i].len]=GrammerSet[i].mSetence[j];
					groupSelect[i].len++;
					goto sel_cond2;
				}
				else //if vt is 'z'
				if(GrammerSet[i].mSetence[j+1]=='\0')	//ADDED
					goto sel_cond3;
				else
					goto sel_cond1;
			}
			else	//it is a vn
			{
					for(k=0;k<vnSetLen;k++)//Finding corresponding vn
						if(VNSet[k]==GrammerSet[i].mSetence[j])
							break;

					//ASSERTION
					if(k==vnSetLen)
					{
						printf("in cal_select ,error happen.\n");
						return;
					}
				
				if(VNProduceZ[k]==0)
				{	//add its first group's element
					for(l=0;l<groupFirst[k].len;l++)
					{
						tmpChar=groupFirst[k].ele[l];
						
						if(tmpChar=='z')
						{
							printf("in cal select ,error happen.\n");
							return;
						}

							for(m=0;m<groupSelect[i].len;m++)
							{
								if(groupSelect[i].ele[m]==tmpChar)
									break;
							}
							if(m==groupSelect[i].len)
							{
								groupSelect[i].ele[groupSelect[i].len]=tmpChar;
								groupSelect[i].len++;
							}	
					}
					goto sel_cond2;
				}
				else	//VN COULD PRODUCE z
				{
					for(l=0;l<groupFirst[k].len;l++)
					{
						tmpChar=groupFirst[k].ele[l];
						if(tmpChar!='z')
						{
							for(m=0;m<groupSelect[i].len;m++)
							{
								if(groupSelect[i].ele[m]==tmpChar)
									break;
							}

							if(m==groupSelect[i].len)//if tmpChar is new
							{
								groupSelect[i].ele[groupSelect[i].len]=tmpChar;
								groupSelect[i].len++;
							}
						}
					}

					if(GrammerSet[i].mSetence[j+1]=='\0')
					{
						
sel_cond3:				for(l=0;l<groupFollow[vnIndex].len;l++)
						{
							tmpChar=groupFollow[vnIndex].ele[l];
						
							for(m=0;m<groupSelect[i].len;m++)
							{
								if(groupSelect[i].ele[m]==tmpChar)
									break;
							}

							if(m==groupSelect[i].len)//if tmpChar is new
							{
								groupSelect[i].ele[groupSelect[i].len]=tmpChar;
								groupSelect[i].len++;
							}
						
						}
						goto sel_cond2;
					}
					else
					{
						goto sel_cond1;
					}
				}

			}
sel_cond1:	j++;
		}
sel_cond2:;
	}
	
	if(DEBUG)
	{
		printf("\noutput of group select:\n");
		fprintf(testFile,"\r\noutput of group select:\r\n");
		for(i=0;i<grammerNum;i++)
		{
			printf("%s ",GrammerSet[i].mSetence);
			fprintf(testFile,"%s ",GrammerSet[i].mSetence);

			for(l=0;l<groupSelect[i].len;l++)
			{
				printf("%c,",groupSelect[i].ele[l]);
				fprintf(testFile,"%c,",groupSelect[i].ele[l]);
			}
			printf("\n");
			fprintf(testFile,"\r\n");
		}
		printf("=====================\n");
		fprintf(testFile,"================\r\n");
	}
}


int checkLL1_consTable()
{

	int signedList[MAX_ELE_NUM];
	int i,j,k,l,m;
	int vnIndex,tmpIndex;
	
	//INIT
	for(i=0;i<vnSetLen;i++)
		for(j=0;j<vtSetLen+1;j++)
			analyseTable[i][j][0]='\0';
	
	vnIndex=0;
	tmpIndex=0;
	for(k=0;k<vtSetLen+1;k++)
		signedList[k]=0;
    i=0;



	while(i<grammerNum)
	{
		//FIND vnIndex whether collide.
		//IF collide,break and return 0
		if(GrammerSet[i].mSetence[0]==VNSet[vnIndex])
		{

cons_cond1:
				k=0;
			while(k<groupSelect[i].len)
			{
				l=0;
				while(l<vtSetLen&&groupSelect[i].ele[k]!=VTSet[l])
					l++;
				
				if(l==vtSetLen)
				{
					if(groupSelect[i].ele[k]!='#')
					{
						printf("in check LL1,error happen.\n");
						return 0;
					}
				}
			
				if(signedList[l]==1)
				{	//collide,exit
					printf("in check LL1,this grammer is not a LL1.\n");
					return 0;
				}
				else
				{
					signedList[l]=1;
					
					m=1;
					while(GrammerSet[i].mSetence[m]!='\0')
					{
						analyseTable[vnIndex][l][m-1]=GrammerSet[i].mSetence[m];
						m++;
					}
					analyseTable[vnIndex][l][m-1]='\0';
				}
				k++;
			}
		}
		else			//NEW VN OCCUR
		{
			vnIndex++;
		
			for(k=0;k<vtSetLen+1;k++)
				signedList[k]=0;

			goto cons_cond1;
		}

		i++;
	}

	if(DEBUG)
	{
		//output analyse table
		fprintf(stdout,"==output analyse table.==\n");
		fprintf(testFile,"==output analyse table.==\r\n");
		fprintf(stdout,"  ");
		fprintf(testFile,"  ");
		
		for(i=0;i<vtSetLen;i++)
		{
			fprintf(stdout,"%c        ",VTSet[i]);
			fprintf(testFile,"%c        ",VTSet[i]);
		}
			fprintf(stdout,"%c        \n",'#');
			fprintf(testFile,"%c        \r\n",'#');
			

		
		for(i=0;i<vnSetLen;i++)
		{	
			fprintf(stdout,"%c ",VNSet[i]);
			fprintf(testFile,"%c ",VNSet[i]);
			
			for(j=0;j<vtSetLen+1;j++)
			{
				fprintf(stdout,"%s",analyseTable[i][j]);
				fprintf(testFile,"%s",analyseTable[i][j]);
				
				l=strlen(analyseTable[i][j]);
				
				l=8-l;
				while(l>=0)	//CORRECTED if(l>=1)
				{
					fprintf(stdout,"%c",' ');
					fprintf(testFile,"%c",' ');
					l--;
				}		
			}
			fprintf(stdout,"\n");
			fprintf(testFile,"\r\n");
		}
	}

	return 1;
}

void    parsingSetence()
{
	int rowIndex,colIndex;
	int analyseStackIndex,setenceIndex;
	int i,l,k,count;
	int printSelect;
	char analyseStack[MAX_SETENCE_LEN];
	
	if(parseSetence==NULL)
	{
		printf("in parsing setence,setence is null.\n");
		return;
	}

	i=0;
	while(parseSetence[i]!='\0')
	{
		if(parseSetence[i]>=65&&parseSetence[i]<=90)
		{
			printf("parse setence has vn sign,can't parse.\n");
			return;
		}
		i++;
	}

	printf("\nparseSetence: %s\n",parseSetence);

	//INIT
	analyseStackIndex=0;
	setenceIndex=0;
	count=0;
	//
	analyseStack[0]='#';
	analyseStack[1]=startedSign;
	analyseStackIndex=1;


	fprintf(stdout,"==parse setence : %s ==\n",parseSetence);
	fprintf(testFile,"==parse setence : %s ==\r\n",parseSetence);

	fprintf(stdout,"s   analyseStack   unParseSetence op    \n");
	fprintf(testFile,"s   analyseStack   unParseSetence op    \r\n");

	while(!(analyseStackIndex==0&&parseSetence[setenceIndex]=='#'))
	{
			//OUTPUT THE RESULT
			fprintf(stdout,"%3d ",count);
			fprintf(testFile,"%3d ",count);
			
			l=0;
			while(l<=analyseStackIndex&&l<=14)
			{
				fprintf(stdout,"%c",analyseStack[l]);
				fprintf(testFile,"%c",analyseStack[l]);
				l++;
			}

			l++;
			if(l<15)
				l=15-l;

			while(l>=1)
			{
				fprintf(stdout,"%c",32);
				fprintf(testFile,"%c",32);
				l--;
			}

			k=setenceIndex;
			l=0;
			while(parseSetence[k]!='\0'&&l<=14)
			{
				fprintf(stdout,"%c",parseSetence[k]);
				fprintf(testFile,"%c",parseSetence[k]);
				
				k++;
				l++;
			}

			l++;
			if(l<15)
				l=15-l;
			while(l>=1)
			{
				fprintf(stdout,"%c",32);
				fprintf(testFile,"%c",32);
				l--;
			}
			count++;


		if(analyseStack[analyseStackIndex]==parseSetence[setenceIndex])
		{	
			//'match'
			//pop analyse stack
			analyseStackIndex--;
			//setence index forward.
			setenceIndex++;
			printSelect=1;
		}
		else	//find produce exp
		{
			if(!(analyseStack[analyseStackIndex]>=65&&analyseStack[analyseStackIndex]<=90))
			{
				printf("in parse setence,can't match.\n");
				return;
			}

			rowIndex=0;
			while(rowIndex<vnSetLen&&VNSet[rowIndex]!=analyseStack[analyseStackIndex])
				rowIndex++;

			if(rowIndex==vnSetLen)
			{
				printf("in parse setence, rowIndex==vnSetLen.\n");
				return;
			}
		
			colIndex=0;
			while(colIndex<vtSetLen&&VTSet[colIndex]!=parseSetence[setenceIndex])
				colIndex++;

			if(colIndex==vtSetLen)
			{
				if(parseSetence[setenceIndex]!='#')
				{
					printf("in parse setence, colIndex==vtSetLen.\n");
					return;
				}
			}

			if(analyseTable[rowIndex][colIndex][0]=='\0')
			{
				printf("in parse setence,can't find produce exp.");
				return;
			}
			else if(analyseTable[rowIndex][colIndex][0]=='z')
			{
				analyseStackIndex--;
				printSelect=2;
			}
			else
			{
				l=0;
				while(analyseTable[rowIndex][colIndex][l]!='\0')
					l++;
				l--;

				//push the produce exp reverse seq to stack.
				analyseStackIndex--;//an operation as pop
				while(l>=0)
				{
					analyseStackIndex++;
					analyseStack[analyseStackIndex]=analyseTable[rowIndex][colIndex][l];
					l--;
				}	

				printSelect=2;
			}
		}

			//ANALYSE RESULT
			if(printSelect==1)
			 {
				fprintf(stdout,"%c matched.\n",parseSetence[setenceIndex-1]);
				fprintf(testFile,"%c matched.\r\n",parseSetence[setenceIndex-1]);
			 }
			 else if(printSelect==2)
			 {
				fprintf(stdout,"%c->%s\n",VNSet[rowIndex],analyseTable[rowIndex][colIndex]);
				fprintf(testFile,"%c->%s\r\n",VNSet[rowIndex],analyseTable[rowIndex][colIndex]);
			 }
	}

	fprintf(stdout,"parse successfully.\n");
	fprintf(testFile,"parse successfully.\r\n");
}

void    topologySort(int** inMatrix,int* topSeqArr,int row,int col)
{
	int i,j;
	int* labeledRow;
	int labeledNum;
	unsigned noFirstNode;
	
	if(inMatrix==NULL||topSeqArr==NULL)
	{
		printf("in topologySort ,pass in matrix or topSeqArr is null\n");
		return;
	}
	
	labeledRow=(int*)malloc(sizeof(int)*row);
	if(labeledRow==NULL)
	{
		printf("in topologySort, mem apply failure.\n");
		return;
	}
	

	for(i=0;i<row;i++)
		labeledRow[i]=0;

	labeledNum=0;
	while(labeledNum!=row)
	{
		noFirstNode=1;
		
		for(j=0;j<col;j++)
		{
			if(!labeledRow[j])	//forget this line.
			{
				for(i=0;i<row;i++)
				{
					if(!labeledRow[i])
					{	//j is not a first node
						if(i!=j&&inMatrix[i][j]==1)
						{
							break;	
						}
					}
				}
			
				if(i==row)//j is a first node,note it ,del from the graph
				{
					topSeqArr[labeledNum]=j;
					labeledRow[j]=1;	//CORRECT->labeledRow[labeledNum]=1
					labeledNum++;
					noFirstNode=0;
				}
			}
		}

		if(noFirstNode)
		{
			printf("can't arrange a toplogy sort.\n");
			return;
		}
	}
	
	if(DEBUG)
	{
		printf("topsort result:\n");
		for(i=0;i<row;i++)
			printf("%d ",topSeqArr[i]);
		printf("\n");
	}
	
	free(labeledRow);

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美日韩另类一区| 国内久久精品视频| 日韩电影在线观看一区| 成人午夜av电影| 欧美精品乱码久久久久久| 中文字幕一区二区三区不卡在线| 日本午夜精品一区二区三区电影| youjizz久久| 久久久噜噜噜久噜久久综合| 亚洲高清免费视频| aaa欧美大片| 亚洲国产精品二十页| 美脚の诱脚舐め脚责91| 欧美日韩一本到| 18成人在线视频| 国产传媒欧美日韩成人| 日韩欧美123| 日韩和欧美的一区| 欧美性生活影院| 亚洲精品免费在线观看| 国产白丝精品91爽爽久久| 日韩欧美亚洲一区二区| 日韩国产欧美在线视频| 欧美理论在线播放| 亚洲永久免费视频| 91成人在线免费观看| 亚洲日本一区二区| 94-欧美-setu| 国产精品久久毛片a| 国产精品系列在线播放| 欧美精品一区二区在线观看| 日本中文字幕一区| 欧美一区二区三级| 日本美女一区二区| 日韩欧美国产午夜精品| 麻豆专区一区二区三区四区五区| 欧美精品一卡两卡| 日日夜夜免费精品| 7777精品伊人久久久大香线蕉超级流畅 | 国产调教视频一区| 久久精品国产99国产精品| 日韩一级片在线播放| 免费在线观看成人| 久久综合九色综合久久久精品综合| 久久国产麻豆精品| 2020国产精品| 国产99久久精品| 中文字幕一区二区三区精华液 | 一区二区久久久| 在线观看欧美精品| 日韩av电影天堂| 精品日韩一区二区三区 | 韩国av一区二区| 国产欧美1区2区3区| 丰满亚洲少妇av| 一区二区三区不卡视频在线观看| 精品视频在线看| 久久99国产精品久久99果冻传媒| 久久久欧美精品sm网站| 91丨九色丨尤物| 三级精品在线观看| 日本一区免费视频| 欧洲激情一区二区| 蜜臀91精品一区二区三区| 精品国产sm最大网站免费看| 成人18精品视频| 午夜视频一区二区| 国产片一区二区三区| 91在线码无精品| 奇米四色…亚洲| 中文成人综合网| 欧美精品久久99| 波多野结衣欧美| 欧美96一区二区免费视频| 国产精品久久久久久亚洲伦| 欧美日韩一级二级| 不卡免费追剧大全电视剧网站| 一区二区不卡在线播放 | 精品一二三四区| 自拍偷拍欧美激情| 日韩欧美黄色影院| 91精品福利视频| 国产成人自拍网| 日韩av网站在线观看| 亚洲欧美视频在线观看视频| 日韩美女一区二区三区四区| 色av成人天堂桃色av| 国产久卡久卡久卡久卡视频精品| 亚洲一区在线观看视频| 国产精品久久三区| 久久综合久久久久88| 欧美日本在线播放| 91碰在线视频| 国产成人av影院| 精品在线播放免费| 日韩精品电影在线| 亚洲一区二区精品3399| 国产精品久久二区二区| 久久先锋影音av鲁色资源网| 欧美日本国产视频| 色综合色综合色综合| 国产成人免费av在线| 极品少妇一区二区三区精品视频| 亚洲va欧美va人人爽午夜| 成人免费在线观看入口| 国产精品嫩草影院com| 亚洲精品在线三区| 日韩欧美国产一区二区在线播放| 欧美日韩在线观看一区二区| 一本色道久久加勒比精品| 成人一道本在线| 成人一区二区在线观看| 粉嫩13p一区二区三区| 国产美女视频91| 韩国毛片一区二区三区| 免费成人在线观看| 日韩国产欧美在线视频| 免费一级片91| 美腿丝袜一区二区三区| 美女mm1313爽爽久久久蜜臀| 男女视频一区二区| 蜜桃视频一区二区三区在线观看| 日本特黄久久久高潮| 日韩国产在线观看| 蜜臀av一区二区在线免费观看 | 91精品啪在线观看国产60岁| 4438成人网| 日韩欧美在线观看一区二区三区| 91精品国产福利在线观看| 欧美一区二区人人喊爽| 精品日韩欧美一区二区| 久久久欧美精品sm网站| 国产精品福利电影一区二区三区四区| 中文字幕av资源一区| 亚洲色图制服诱惑 | 午夜精品久久久久久久久久| 午夜电影一区二区| 美日韩一区二区| 国产成人免费在线视频| 一道本成人在线| 91精品国产欧美一区二区成人 | 在线一区二区三区做爰视频网站| 色狠狠一区二区| 91精品一区二区三区久久久久久 | 99久久精品免费看| 在线这里只有精品| 欧美成人r级一区二区三区| 久久久激情视频| 亚洲精品免费一二三区| 美女一区二区视频| 成人高清视频免费观看| 欧美日韩在线播放一区| 久久精品一区蜜桃臀影院| 自拍av一区二区三区| 免费成人av在线| 成人av片在线观看| 91精品在线麻豆| 国产精品人成在线观看免费| 亚洲激情图片qvod| 韩日欧美一区二区三区| 欧美伊人久久久久久久久影院| 欧美本精品男人aⅴ天堂| 亚洲欧美综合网| 美女视频一区在线观看| 色综合天天狠狠| 久久久www成人免费毛片麻豆| 亚洲精品免费在线播放| 国产精品亚洲专一区二区三区| 色婷婷精品久久二区二区蜜臂av | 麻豆精品视频在线观看视频| www.亚洲色图.com| 亚洲精品在线免费播放| 亚洲成人免费视| 99在线精品观看| 久久亚洲精品小早川怜子| 亚洲成a天堂v人片| 91在线云播放| 国产三级精品三级在线专区| 日韩高清国产一区在线| 在线观看日韩一区| ...av二区三区久久精品| 国产另类ts人妖一区二区| 日韩一本二本av| 亚洲一区二区三区影院| 91欧美一区二区| 国产精品久久久久毛片软件| 国产精品99久久久久久久女警| 91精品久久久久久蜜臀| 亚洲一区二区中文在线| 91在线视频免费91| 中文字幕亚洲视频| 国产成人综合在线播放| 精品国产一区二区精华| 男人的天堂久久精品| 91精品综合久久久久久| 日韩精品成人一区二区三区| 欧日韩精品视频| 亚洲一区二区三区视频在线| 色噜噜狠狠色综合中国| 樱花草国产18久久久久|