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

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

?? 新建 文本文檔.txt

?? 本文是關于編繹原理中語法分析的重要內容,嚴格實驗所以要求.
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
	{
		token=getnext();
		expression(token);
		if(token==40)
		{
			token=getnext();
		}
		else
		{
			cout<<"error13"<<endl;
		}
	}
	else if(token==36)
	{
		strcpy(stack[stack_num++],table1[table1_num2++]);
		cout<<stack_num<<endl;
		id(token);
	}
	else if(token==37)
	{
		strcpy(stack[stack_num++],table1[table1_num2++]);
		interger(token);
	}
	else 
	{
		cout<<"error14"<<endl;
	}
}
void interger(int &token)
{
	if(token==37)
	{
		token=getnext();
	}
	else
	{
		cout<<"error15"<<endl;
	}
}
void b_expression(int &token)
{
	b_1(token);
	mid_b1(token);
}
void mid_b1(int &token)
{
	if(token==20)
	{
		token=getnext();
		b_1(token);
		mid_b1(token);
	}
	else if(token!=40||token!=52||token!=29||token!=10||token!=12)
	{
		cout<<"error16"<<endl;
	}
}
void b_1(int &token)
{
	b_2(token);
	mid_b2(token);
}
void mid_b2(int &token)
{
	if(token==1)
	{
		token=getnext();
		b_2(token);
		mid_b2(token);
	}
	else if(token!=20||token!=40||token!=52||token!=29||token!=10||token!=12)
	{
		cout<<"error17"<<endl;
	}
}
void b_2(int &token)                 
{
	if(token==18)
	{
		token=getnext();
		b_2(token);
	}
	else
	{
		b_3(token);
	}
}
void b_3(int &token)                ///////////////////////////
{
	if(token==39)
	{
		token=getnext();
		b_expression(token);
		if(token==40)
		{
			token=getnext();
		}
		else
		{
			cout<<"error18"<<endl;
		}
	}
	else if(token==36)
	{
		a_expression(token);
		mid(token);
	}
	else if(token==13||token==31)
	{
		bool_digit(token);
	}
	else 
	{
		cout<<"error"<<endl;
	}
}
void bool_digit(int &token)
{
	if(token==13||token==31)
	{
		token=getnext();
	}
	else
	{
		cout<<"error19"<<endl;
	}
}
void relation(int &token)
{
	if(token==53)
	{
		flag=1;
		token=getnext();
	}
	else if(token==54)
	{
		flag=2;
		token=getnext();
	}
	else if(token==55)
	{
		flag=3;
		token=getnext();
	}
	else if(token==56)
	{
		flag=4;
		token=getnext();
	}
	else if(token==57)
	{
		flag=5;
		token=getnext();
	}
	else if(token==58)
	{
		flag=6;
		token=getnext();
	}
	else
	{
		cout<<"error20"<<endl;
	}
}
void mid(int &token)       ////////////////////////////
{
	relation(token);
	a_expression(token);
	if(flag==1){tet("j<",stack[stack_num-2],stack[stack_num-1],"T");}
	if(flag==2){tet("j<=",stack[stack_num-2],stack[stack_num-1],"T");}
	if(flag==3){tet("j<>",stack[stack_num-2],stack[stack_num-1],"T");}
	if(flag==4){tet("j=",stack[stack_num-2],stack[stack_num-1],"T");}
	if(flag==5){tet("j>",stack[stack_num-2],stack[stack_num-1],"T");}
	if(flag==6){tet("j>=",stack[stack_num-2],stack[stack_num-1],"T");}
}
	













void tet(char a1[],char a2[],char a3[],char a4[])
{
	if(tetrad_num>=500)
	{
		cout<<"error"<<endl;
		return;
	}
	strcpy(tetrad[tetrad_num].opr,a1);
	strcpy(tetrad[tetrad_num].p1,a2);
	strcpy(tetrad[tetrad_num].p2,a3);
	strcpy(tetrad[tetrad_num].p3,a4);
	tetrad_num++;
}
void putout()
{
	for(int i=0;i<tetrad_num;i++)
	{
		cout<<"("<<i<<")"<<"("<<tetrad[i].opr<<","<<tetrad[i].p1<<","<<tetrad[i].p2<<","<<tetrad[i].p3<<")"<<endl;
	}
}

int getnext()
{
	if(token_num>=500)
	{
		cout<<"error"<<endl;
		return 0;
	}
	else
	{
		return c[token_num++]%100;
	}
}





/*設置保留字名字*/
void init()
{
	strcpy(&(word[1][0]),"and");
	strcpy(&(word[2][0]),"array");
	strcpy(&(word[3][0]),"begin");
	strcpy(&(word[4][0]),"bool");
	strcpy(&(word[5][0]),"call");
	strcpy(&(word[6][0]),"case");	
	strcpy(&(word[7][0]),"char");
	strcpy(&(word[8][0]),"constant");
	strcpy(&(word[9][0]),"dim");
	strcpy(&(word[10][0]),"do");
	strcpy(&(word[11][0]),"else");
	strcpy(&(word[12][0]),"end");
	strcpy(&(word[13][0]),"false");
	strcpy(&(word[14][0]),"for");
	strcpy(&(word[15][0]),"if");
	strcpy(&(word[16][0]),"input");	
	strcpy(&(word[17][0]),"integer");
	strcpy(&(word[18][0]),"not");
	strcpy(&(word[19][0]),"of");
	strcpy(&(word[20][0]),"or");
	strcpy(&(word[21][0]),"output");
	strcpy(&(word[22][0]),"procedure");
	strcpy(&(word[23][0]),"program");
	strcpy(&(word[24][0]),"read");
	strcpy(&(word[25][0]),"real");
	strcpy(&(word[26][0]),"repeat");	
	strcpy(&(word[27][0]),"set");
	strcpy(&(word[28][0]),"stop");
	strcpy(&(word[29][0]),"then");
	strcpy(&(word[30][0]),"to");
	strcpy(&(word[31][0]),"true");
	strcpy(&(word[32][0]),"until");
	strcpy(&(word[33][0]),"var");
	strcpy(&(word[34][0]),"while");
	strcpy(&(word[35][0]),"write");
	strcpy(&(word[36][0]),"標識符");	
	strcpy(&(word[37][0]),"整數");
	strcpy(&(word[38][0]),"字符常數");
	strcpy(&(word[39][0]),"(");
	strcpy(&(word[40][0]),")");
	strcpy(&(word[41][0]),"*");
	strcpy(&(word[42][0]),"*/");
	strcpy(&(word[43][0]),"+");
	strcpy(&(word[44][0]),",");
	strcpy(&(word[45][0]),"-");
	strcpy(&(word[46][0]),".");	
	strcpy(&(word[47][0]),"..");
	strcpy(&(word[48][0]),"/");
	strcpy(&(word[49][0]),"/*");
	strcpy(&(word[50][0]),":");
	strcpy(&(word[51][0]),":=");
	strcpy(&(word[52][0]),";");
	strcpy(&(word[53][0]),"<");
	strcpy(&(word[54][0]),"<=");
	strcpy(&(word[55][0]),"<>");
	strcpy(&(word[56][0]),"=");	
	strcpy(&(word[57][0]),">");
	strcpy(&(word[58][0]),">=");
	strcpy(&(word[59][0]),"[");
	strcpy(&(word[60][0]),"]");
}


/*判斷ch是否為數字*/
int IsDigit(char ch)
{
	if((ch>='0')&&(ch<='9'))return 1;
	else return 0;
}

/*判斷ch是否為字母*/
int IsAlpha(char ch)
{
	if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))return 1;
	else return 0;
}

/*查表*/
int  Find(char *A,char B[60][20])
{
	for(int i=1; i<=60; i++)
	{
	
	
		if(!strcmp(A,B[i]))
		{
			return i ;
		}
	}
	return 0;
}


/*詞法分析*/
void getsym(FILE *fin)
{
	init();
	char A[20];
	int m=5;
	n=0;
	int k=1;
	int i=0;
	int j=0;
	int p=0;
	q=0;
	int row=1;
	int col=1;
	char ch=' ';
	while(!feof(fin))
	{
		
		if( ch==' '|| ch =='\t'){ch=fgetc(fin);col++;}
		else if(ch=='\n'){row++;ch=fgetc(fin);col=1;}
		else if( IsDigit(ch))
		{
			while(IsDigit(ch))
			{
				 
				A[j] = ch;
				j++;
				ch=fgetc(fin);
				col++;
				
			}
			A[j]='\0';
			if(!Find(A,table1))
			{
				c[q]=(k++)*100+37;q++;
				strcpy(table1[n++],A);
			}
			else
			{
				c[q]=Find(A,table1)*100+37;q++;
			}

			
			j=0;
			
		}
		else if(IsAlpha(ch))//是字母開頭的
		{
		
			while(IsAlpha(ch) || IsDigit(ch))
			{
				A[i] =ch;
				i++;
				ch=fgetc(fin);
				col++;
			}
			A[i]='\0';
            if(Find(A,word))       //查表
			{
				c[q]=Find(A,word);q++;
			}
		    else
			{
				if(!Find(A,table1))
				{
					c[q]=100*(k++)+36;q++;
					strcpy(table1[n++],A);
				}
				else
				{
					c[q]=100*Find(A,table1)+36;q++;
				}

			  
			}
			i=0;
		}

		//以下為字符常數

		else if(ch=='\'')
		{
			ch=fgetc(fin);
			col++;
			while(ch!='\'')
			{
				if(ch=='\n')
				{
					cout<<"第"<<row<<"行,第"<<col<<"列錯誤:字符常數缺右邊的單引號(字符常數要求左、右邊用單引號界定,不能跨行)"<<endl;
					break;
				}
				A[p] = ch;
				p++;
				ch=fgetc(fin);
				col++;
			}
			A[p]='\0';
			if(!Find(A,table1))
			{
				c[q]=100*(k++)+38;q++;
				ch=fgetc(fin);
				col++;
				strcpy(table1[n++],A);
				
			}
			else
			{
				c[q]=100*Find(A,table1)+38;q++;
				ch=fgetc(fin);
				col++;
			}
			p=0;
		}

	
		//以下為2字節的運算符號
		

		else if( ch=='/')
		{
			ch=fgetc(fin);
			col++;
		    if(ch!='*') 
			{
				c[q]=48;q++;
			}
			if(ch=='*') 
			{
				do
				{
					ch=fgetc(fin);
					col++;
					if(ch=='\n'){cout<<"第"<<row<<"行,第"<<col<<"列錯誤:注釋部分缺右邊的界符*/(注釋要求左右邊分別用/*和*/界定,不能跨行)"<<endl;break;}
				}
				while(ch!='/');
				ch=fgetc(fin);
				col++;
			}

		}

		else if( ch=='.')
		{
			ch=fgetc(fin);
			col++;
			if(ch!='.') 
			{
				c[q]=46;q++;
			}
			if(ch=='.') 
			{
				c[q]=47;q++;
				ch=fgetc(fin);
			}

		}

		else if( ch==':')
		{
			ch=fgetc(fin);
			col++;
			if(ch!='=')
			{
				c[q]=50;q++;
			}

			if(ch=='=') 
			{
				c[q]=51;q++;
				ch=fgetc(fin);
				col++;
			}
		}

		else if( ch=='<')
		{
			ch=fgetc(fin);
			col++;
			if(ch!='='&&ch!='>')
			{
				c[q]=53;q++;
			}
			if(ch=='=') 
			{
				c[q]=54;q++;
				ch=fgetc(fin);
				col++;
			}
			if(ch=='>')
			{
				c[q]=55;q++;
				ch=fgetc(fin);
				col++;
			}
		}

		else if( ch=='>')
		{
			ch=fgetc(fin);
			col++;
			if(ch!='=') 
			{
				c[q]=57;q++;
			}
			if(ch=='=') 
			{
				c[q]=58;q++;
				ch=fgetc(fin);
				col++;
			}
		}
	
        //以下為一個字節的運算符號 
			else if(ch=='(') {c[q]=39;q++;ch=fgetc(fin);col++;}
			else if(ch==')') {c[q]=40;q++;ch=fgetc(fin);col++;}
			else if(ch=='*') {c[q]=41;q++;ch=fgetc(fin);col++;}  
		    else if(ch=='+') {c[q]=43;q++;ch=fgetc(fin);col++;}
		    else if(ch==',') {c[q]=44;q++;ch=fgetc(fin);col++;}
		    else if(ch=='-') {c[q]=45;q++;ch=fgetc(fin);col++;}
		    else if(ch==';') {c[q]=52;q++;ch=fgetc(fin);col++;}
		    else if(ch=='=') {c[q]=56;q++;ch=fgetc(fin);col++;}
		    else if(ch=='[') {c[q]=59;q++;ch=fgetc(fin);col++;}
		    else if(ch==']') {c[q]=60;q++;ch=fgetc(fin);col++;}  
	
		else
		{
			cout<<"第"<<row<<"行,第"<<col<<"列錯誤:非法字符,即不是SAMPLE字符集的符號"<<endl;
			ch=fgetc(fin);col++;
		}
	}

	//輸出二元式
	for(i=0;i<q;i++)
	{
		if(c[i]/100==0)
		{
			cout<<"("<<c[i]%100<<","<<"-)"<<'\t';
			m--;if(m==0){cout<<'\n';m=5;}
		}
		else
		{
			cout<<"("<<c[i]%100<<","<<c[i]/100<<")"<<'\t';
			m--;if(m==0){cout<<'\n';m=5;}
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产自产视频一区二区三区| 精品视频全国免费看| 一本一本久久a久久精品综合麻豆| 欧美精品在欧美一区二区少妇| 国产视频不卡一区| 青草av.久久免费一区| 99天天综合性| 久久免费视频色| 免费成人结看片| 欧美体内she精视频| 国产欧美一区在线| 国产资源在线一区| 欧美成人a在线| 亚洲国产精品一区二区www| 99久久精品99国产精品| 精品国产三级a在线观看| 午夜电影久久久| 欧洲av在线精品| 最新日韩av在线| 成人高清av在线| 国产日韩成人精品| 色综合咪咪久久| 欧美激情一区二区三区在线| 久久av资源站| 精品欧美黑人一区二区三区| 天天av天天翘天天综合网色鬼国产| 99久久精品免费精品国产| 中文字幕久久午夜不卡| 国产黄色精品网站| 国产日韩欧美麻豆| 成人精品国产福利| 国产精品国产三级国产a | 成人免费黄色在线| 国产丝袜欧美中文另类| 久99久精品视频免费观看| 日韩视频在线观看一区二区| 日本欧美肥老太交大片| 欧美一区二区三区日韩| 精品一区二区三区在线视频| 久久夜色精品一区| 国产精品一区二区免费不卡| 国产视频视频一区| 91视频观看视频| 亚洲成人先锋电影| 欧美变态tickle挠乳网站| 国产精品18久久久久久久久| 国产精品少妇自拍| 色国产综合视频| 五月婷婷激情综合| 久久久亚洲国产美女国产盗摄| 丁香一区二区三区| 日韩黄色一级片| 久久女同性恋中文字幕| 91在线一区二区| 亚洲国产精品人人做人人爽| 91精品国产综合久久久久久漫画| 美日韩一区二区| 国产精品丝袜久久久久久app| 91麻豆精品秘密| 日本欧美一区二区三区乱码| 精品国产电影一区二区| 成a人片亚洲日本久久| 丝袜亚洲另类欧美| 国产亚洲欧美激情| 欧美日韩精品欧美日韩精品| 精品一区精品二区高清| 日韩毛片一二三区| 日韩三级中文字幕| a美女胸又www黄视频久久| 日日夜夜精品视频天天综合网| www国产精品av| 欧美色图免费看| 国产剧情av麻豆香蕉精品| 一区二区久久久久久| 久久奇米777| 91精品一区二区三区在线观看| 国产激情一区二区三区四区| 亚洲一区在线免费观看| 26uuu国产电影一区二区| 欧美视频一区二区| 国产成人亚洲综合a∨婷婷图片 | 一本色道亚洲精品aⅴ| 丝袜诱惑亚洲看片| 亚洲免费观看高清完整版在线| 欧美大白屁股肥臀xxxxxx| 91在线国内视频| 国产精品一级片| 日产国产欧美视频一区精品| 亚洲黄色尤物视频| 欧美激情中文不卡| 久久久久亚洲蜜桃| 欧美一级xxx| 欧美色视频在线观看| 色噜噜狠狠一区二区三区果冻| 国产精品一级黄| 蜜桃一区二区三区四区| 视频一区二区三区在线| 玉米视频成人免费看| 国产精品久久久久毛片软件| 久久精品日产第一区二区三区高清版| 911精品产国品一二三产区 | 国产精品123| 久久99精品国产麻豆婷婷| 天天色图综合网| 亚洲成av人片www| 午夜精品福利久久久| 亚洲高清视频的网址| 洋洋成人永久网站入口| 一区二区三区免费| 亚洲伦理在线免费看| 尤物在线观看一区| 亚洲精品国产无天堂网2021| 亚洲欧美偷拍三级| 一区二区三区国产豹纹内裤在线 | 日本亚洲免费观看| 视频一区国产视频| 男男视频亚洲欧美| 久久国产精品99久久久久久老狼| 日本怡春院一区二区| 日韩vs国产vs欧美| 国内成人精品2018免费看| 国产米奇在线777精品观看| 国产乱码精品1区2区3区| 丁香婷婷综合网| 91影院在线观看| 欧美色精品在线视频| 欧美男生操女生| 精品国产乱码久久久久久久| 久久久久国产成人精品亚洲午夜| 久久久99精品免费观看不卡| 日本一区二区动态图| 亚洲免费三区一区二区| 日韩va亚洲va欧美va久久| 极品美女销魂一区二区三区免费| 国产一区二区精品久久99| 成人黄色免费短视频| 精品污污网站免费看| 日韩欧美高清一区| 中文字幕第一页久久| 亚洲自拍偷拍麻豆| 美腿丝袜亚洲综合| 99re热视频精品| 欧美日韩在线免费视频| 精品精品国产高清a毛片牛牛| 国产精品日韩成人| 五月激情综合色| 国产成人午夜99999| 欧美午夜在线观看| 久久久久久亚洲综合影院红桃| 日韩精品成人一区二区三区| 国产美女精品在线| 色婷婷av一区二区三区之一色屋| 欧美一区三区二区| 中文成人综合网| 天堂成人免费av电影一区| 国产精品主播直播| 欧美在线观看18| 久久夜色精品国产欧美乱极品| 亚洲精品欧美在线| 麻豆91精品91久久久的内涵| eeuss鲁片一区二区三区在线看| 欧美日本不卡视频| 国产精品网站在线播放| 日本亚洲三级在线| 欧美亚洲国产一区在线观看网站| 久久这里只精品最新地址| 一区二区三区四区国产精品| 国产中文字幕一区| 欧美精品在线视频| 综合久久久久综合| 国产风韵犹存在线视精品| 91麻豆精品国产自产在线| 日韩码欧中文字| 国产99久久久国产精品潘金 | 国产精品色呦呦| 精品一区二区三区的国产在线播放 | 欧美三级韩国三级日本一级| 欧美国产日韩精品免费观看| 奇米精品一区二区三区四区| 欧美色偷偷大香| 伊人开心综合网| 99久久精品国产导航| 国产婷婷色一区二区三区在线| 蜜臀91精品一区二区三区| 在线不卡a资源高清| 一区二区三区四区在线播放| 9色porny自拍视频一区二区| 久久精品一区二区三区不卡| 久久99这里只有精品| 欧美一区二区三区视频| 天天综合日日夜夜精品| 精品视频免费看| 午夜成人在线视频| 欧美一级片免费看| 免费高清在线一区| 日韩视频在线你懂得| 久草在线在线精品观看| 久久网站热最新地址| 国产在线视频不卡二| www国产精品av|