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

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

?? yufayuyi.cpp

?? 基本實現基于LL(1)法的語法及語義分析程序設計
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
		 AD_ADDRESS(quad_len,JL,a,b,trueadd);
		 AD_ADDRESS(quad_len,JUMP,0,0,falseadd);
		}
	 }
		else
             ERROR("E(id/num)");
	}
	else
		ERROR("E(greater/less)");	
}

//分析語句
void sentence()
{   char rtn;
    char c;	
	if(!nexttoken())
	    ERROR("S(0)");
	if(cur.type==$id)
	{   	  
		c=cur.ch;
		if(!nexttoken())
		 ERROR("S(0)");
		if(cur.type!=$equal)
			ERROR("S(equal)");
		push();
		one=0;
		rtn=LL1();                                                                            
		AD_RESULT(quad_len,equal,rtn,'-',c);
		nexttoken();
		while(cur.type==$id)
		{
		c=cur.ch;
		if(!nexttoken())
		 ERROR("S(0)");
		if(cur.type!=$equal)
			ERROR("S(equal)");
		push();
		one=0;
		rtn=LL1();                                                                     
		AD_RESULT(quad_len,equal,rtn,'-',c);
		nexttoken();
		}
	}
	
}

//LL(1)文法分析
char LL1()
{
    right=1;                     //開關項為1
	flag=0;
	char t;
	base=(struct Lchar *)malloc(sizeof(Lchar));   //初始化堆棧
	base->next=NULL;
	base->char_ch='#';
	temp=(struct Lchar *)malloc(sizeof(Lchar));
	temp->next=base;
	temp->char_ch='E';
	top=temp;                 //初始化堆棧
    t=dosome();  //開始識別
	if(right)    //如果開關項為1
		cout<<"OK!"<<endl<<endl;
	else
		cout<<"Error!"<<endl;
    return t;

}

//入棧函數
void pushs(char pchar)   
{
	temp=(struct Lchar *)malloc(sizeof(Lchar));
	temp->char_ch=pchar;
	temp->next=top;
	top=temp;
}

//出棧函數
void pop(void)  
{
	curtocmp=top->char_ch;
	if(top->char_ch!='#')
		top=top->next;
}

 //根據數組下標計算的值產生式入棧
void doforpush(int t)  
{
	switch(t)
	{
		case 0:pushs('A');pushs('T');break;
		case 5:pushs('A');pushs('T');break;
		case 11:pushs('A');pushs('T');pushs('+');break;
		case 12:pushs('A');pushs('T');pushs('-');break;
		case 20:pushs('B');pushs('F');break;
		case 25:pushs('B');pushs('F');break;
		case 33:pushs('B');pushs('F');pushs('*');break;
		case 34:pushs('B');pushs('F');pushs('/');break;
		case 40:pushs('i');break;
		case 45:pushs(')');pushs('E');pushs('(');
	}
}

//根據curchar,curtocmp轉為數字以判斷是否有產生式
void changchartoint()  
{
	switch(curtocmp)
	{
		case 'A':i=1;break;
		case 'B':i=3;break;
		case 'E':i=0;break;
		case 'T':i=2;break;
		case 'F':i=4;
	}
	switch(curchar)
	{
		case 'i':j=0;break;
		case '+':j=1;break;
		case '-':j=2;break;
		case '*':j=3;break;
		case '/':j=4;break;
		case '(':j=5;break;
		case ')':j=6;break;
		case '#':j=7;
	}
}

//算法函數
char dosome(void)  
{   
	int t,a=0;
	char bian1,bian2;
    OpKind opa;
	char c='$';
		next();
	for(;;)
	{
		pop();	
		if(cur.type!=$id && cur.type!=$num)
		curchar=cur.ch;
		else
		curchar='i';
		cout<<endl;
		cout<<curchar<<"    "<<curtocmp<<endl;		
		if(curtocmp=='#' && curchar=='#')
			break;
		if(curtocmp=='A' || curtocmp=='B' || curtocmp=='E'
		   || curtocmp=='T' || curtocmp=='F')   //當前字符為非終結符
                                                   
		{
			if(curtocmp!='#')//當前比較字符不為'#'
			{
				changchartoint();
				if(j==0)
				{   a++;
					flag++;
			    	if(flag==1)
					{   if(c=='$')
					    bian1=cur.ch;
					    else
						bian1=c;
						
			            
					}
		        	else if(flag==3)
					{
			        	bian2=cur.ch;
			        	flag=1;
                        c=newchar();
				        AD_RESULT(quad_len,opa,bian1,bian2,c);//產生四元式
						
					}
				}
				else 
				{
					switch(j)
					{
					    case 1:opa=add;flag++;break;
				    	case 2:opa=sub;flag++;break;
				    	case 3:opa=mul;flag++;break;
				    	case 4:opa=div;flag++;
					}
					
				}
				if(table[i][j])             //有產生式
				{
					t=10*i+j;               //計算產生式在數組中的位置
					doforpush(t);
					continue;
				}
				else                      //沒有產生式
				{
					right=0;                //出錯
					break;
				}
			}
			else                           //當前比較字符為'#'
				if(curtocmp!=curchar)
				{
					right=0;               //出錯
					break;
				}
				else
					break;               //正確
		}
		else                             //當前字符為終結符
			if(curtocmp!=curchar)
			{
				right=0;                //出錯
				break;
			}
			else
			{
				next();                  //讀取下一個字符
				continue;
			}
	}
	if(a>1)
        return c;
	else
		return bian1;
}

//產生數值語句的四元式
void AD_RESULT(int nlabel,OpKind nop,char npar1,char npar2, char nresult)
{quad[quad_len].label=nlabel;
 quad[quad_len].op=nop; 
 quad[quad_len].par1=npar1;
 quad[quad_len].par2=npar2; 
 quad[quad_len].result=nresult; 
 quad_len++; 
}

//產生跳轉地址的四元式
void AD_ADDRESS(int nlabel,OpKind nop,char npar1,char npar2,int naddress)
 {	quad[quad_len].label=nlabel; 
	quad[quad_len].op=nop;
	quad[quad_len].par1=npar1;
	quad[quad_len].par2=npar2; 
	quad[quad_len].address=naddress;
	quad_len++; 
}

//回填出口
void backpath(int nlabel,int addr)
{
	quad[nlabel].address=addr;
}

//錯誤處理
void ERROR(char str[20])
{   label++;
	cout<<endl;
	cout<<"error!  "<<str<<endl;
}

//輸出單詞表
void print()
{ 
	for(token_index=0;token_index<total_len;token_index++)
	{   if(token_index%100==0)
	        cout<<endl;
		if(tokentable[token_index].type==$IF)
			cout<<setw(2)<<"IF";
		if(tokentable[token_index].type==$ELSE)
			cout<<setw(2)<<" ELSE";
		if(tokentable[token_index].type==$THEN)
			cout<<setw(2)<<" THEN";
		if(tokentable[token_index].type==$id)
			cout<<setw(2)<<tokentable[token_index].ch;
		if(tokentable[token_index].type==$num)
			cout<<setw(2)<<tokentable[token_index].ch;
		if(tokentable[token_index].type==$equal)
			cout<<setw(2)<<'=';
		if(tokentable[token_index].type==$greater)
			cout<<setw(1)<<'>';
		if(tokentable[token_index].type==$less)
			cout<<setw(2)<<'<';
        if(tokentable[token_index].type==$add)
			cout<<setw(2)<<'+';
		if(tokentable[token_index].type==$sub)
			cout<<setw(2)<<'-';
		if(tokentable[token_index].type==$mul)
			cout<<setw(2)<<'*';
		if(tokentable[token_index].type==$div)
			cout<<setw(2)<<'/';
		if(tokentable[token_index].type==$fenhao)
			cout<<setw(2)<<';';
		if(tokentable[token_index].type==$left_paren)
			cout<<setw(2)<<'(';
		if(tokentable[token_index].type==$right_paren)
			cout<<setw(2)<<')';		
	}
	token_index=0;
}

//輸出四元式
void printQuad()
{
	for(int i=0;i<quad_len;i++)
	{
		if(quad[i].label>=0)
			cout<<"("<<quad[i].label<<")"<<": ";
		else cout<<endl;
		if(quad[i].op==JG)
		{
			cout<<"("<<"j>,"<<quad[i].par1<<","<<quad[i].par2<<","<<quad[i].address<<")"<<endl;
		}
		else if(quad[i].op==JL)
		{
			cout<<"("<<"j<,"<<quad[i].par1<<","<<quad[i].par2<<","<<quad[i].address<<")"<<endl;
		}
		else if(quad[i].op==JUMP)
		{
			cout<<"("<<"j ,"<<"-,-,"<<quad[i].address<<")"<<endl;
		}
		else if(quad[i].op==equal)
		{   
			if(quad[i-1].result==quad[i].par1)
				cout<<"("<<":= ,"<<"T"<<quad[i].par1<<",-,"<<quad[i].result<<")"<<endl;
			else
			    cout<<"("<<":= ,"<<quad[i].par1<<",-,"<<quad[i].result<<")"<<endl;
		}
		else if(quad[i].op==END)
		{
			cout<</*"("<<"-,-,-,-"<<")"<<*/endl;
		}
		else if(quad[i].op==add)
		{  if(quad[i].result>='0' && quad[i].result<='9')
            cout<<"("<<"+ ,"<<quad[i].par1<<","<<quad[i].par2<<","<<"T"<<quad[i].result<<")"<<endl;
		   else
			   cout<<"("<<"+ ,"<<quad[i].par1<<","<<quad[i].par2<<","<<quad[i].result<<")"<<endl;
		}
		else if(quad[i].op==sub)
		{  if(quad[i].result>='0' && quad[i].result<='9')
            cout<<"("<<"- ,"<<quad[i].par1<<","<<quad[i].par2<<","<<"T"<<quad[i].result<<")"<<endl;
		   else
            cout<<"("<<"- ,"<<quad[i].par1<<","<<quad[i].par2<<","<<quad[i].result<<")"<<endl;
		}
		else if(quad[i].op==div)
		{    
			if(quad[i].result>='0' && quad[i].result<='9')
            cout<<"("<<"/ ,"<<quad[i].par1<<","<<quad[i].par2<<","<<"T"<<quad[i].result<<")"<<endl;
			else
            cout<<"("<<"/ ,"<<quad[i].par1<<","<<quad[i].par2<<","<<quad[i].result<<")"<<endl;
		}
		else if(quad[i].op==mul)
		{   if(quad[i].result>='0' && quad[i].result<='9')
            cout<<"("<<"* ,"<<quad[i].par1<<","<<quad[i].par2<<","<<"T"<<quad[i].result<<")"<<endl;
		    else
            cout<<"("<<"* ,"<<quad[i].par1<<","<<quad[i].par2<<","<<quad[i].result<<")"<<endl;
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
视频一区二区三区中文字幕| 国产精品入口麻豆原神| 国产激情一区二区三区桃花岛亚洲| 综合色中文字幕| 一区二区在线观看视频| 久久久久久亚洲综合影院红桃| 欧洲一区二区av| 国产福利91精品| 奇米影视7777精品一区二区| 最新不卡av在线| 久久久久久久久久电影| 在线播放国产精品二区一二区四区| 国产v综合v亚洲欧| 麻豆专区一区二区三区四区五区| 亚洲免费色视频| 国产精品美女久久久久久2018| 日韩视频国产视频| 欧美美女视频在线观看| 色婷婷综合激情| 99九九99九九九视频精品| 国产在线不卡一区| 青青草国产精品亚洲专区无| 亚洲综合免费观看高清完整版| 国产精品无圣光一区二区| 久久亚洲私人国产精品va媚药| 欧美一区二区三区小说| 欧美视频你懂的| 欧美亚洲高清一区| 欧美主播一区二区三区美女| 91美女精品福利| 色综合久久88色综合天天免费| 成人黄色网址在线观看| 国产精品一区二区三区四区| 激情六月婷婷久久| 韩国成人精品a∨在线观看| 久久国产精品99久久人人澡| 免费在线观看视频一区| 久久电影网电视剧免费观看| 美女看a上一区| 久久精品国产77777蜜臀| 美国欧美日韩国产在线播放| 日韩精品一区第一页| 日精品一区二区| 蜜桃免费网站一区二区三区 | 亚洲福利一二三区| 亚洲精品国久久99热| 亚洲在线免费播放| 亚洲二区在线视频| 午夜亚洲国产au精品一区二区| 亚洲444eee在线观看| 视频一区二区国产| 久久99久久99| 国产精品99久久久久久久女警 | 午夜不卡av免费| 日日噜噜夜夜狠狠视频欧美人| 欧美aaaaaa午夜精品| 精油按摩中文字幕久久| 国产精品一卡二卡| 99久久精品久久久久久清纯| 色天使色偷偷av一区二区| 欧美日韩一本到| 日韩欧美国产综合一区 | 亚洲人成人一区二区在线观看| 亚洲男人的天堂在线aⅴ视频| 亚洲制服丝袜在线| 久久精品国产**网站演员| 国产不卡免费视频| 色国产精品一区在线观看| 欧美精品在线观看一区二区| 欧美成人激情免费网| 亚洲国产成人自拍| 亚洲国产日韩综合久久精品| 国内精品国产三级国产a久久| 豆国产96在线|亚洲| 欧美男生操女生| 久久久久久免费毛片精品| **欧美大码日韩| 免费观看一级欧美片| 岛国精品一区二区| 欧美日韩精品二区第二页| 久久综合九色综合久久久精品综合| 国产精品久久久99| 日韩极品在线观看| 成人av网站在线观看| 56国语精品自产拍在线观看| 国产日韩精品一区二区三区| 亚洲第一综合色| 丁香婷婷综合五月| 欧美一区二区在线观看| 中文字幕一区在线观看视频| 免费观看在线色综合| 97精品久久久久中文字幕 | 色菇凉天天综合网| 久久综合久久鬼色| 丝袜亚洲另类欧美| 99久久国产综合精品色伊 | 亚洲一区二区在线视频| 黑人精品欧美一区二区蜜桃| 色综合久久久久网| 久久久久久久性| 日韩一区欧美二区| 日本二三区不卡| 中文字幕欧美日韩一区| 日本不卡的三区四区五区| 91麻豆视频网站| 亚洲国产精品ⅴa在线观看| 精品一区二区三区在线观看 | 加勒比av一区二区| 欧美精品色综合| 亚洲男人的天堂在线观看| 福利视频网站一区二区三区| 欧美高清视频在线高清观看mv色露露十八 | 99热99精品| 国产欧美日韩不卡| 久久er99精品| 91精品国产综合久久久久久久久久| 亚洲免费三区一区二区| 成人丝袜18视频在线观看| 精品久久久久久久人人人人传媒 | 国产91精品一区二区| 欧美成人乱码一区二区三区| 日韩av高清在线观看| 欧美视频在线一区二区三区| 有码一区二区三区| 99re热视频这里只精品| 国产精品色呦呦| 国产99久久久国产精品潘金 | 亚洲成人激情社区| 91传媒视频在线播放| 亚洲视频一二三区| 99这里都是精品| 国产精品久久久久久福利一牛影视| 国产91富婆露脸刺激对白| 中文字幕av在线一区二区三区| 国产麻豆精品视频| 国产日韩精品视频一区| 国产成人av福利| 中国av一区二区三区| 成人av集中营| 国产精品私人自拍| 99精品久久99久久久久| 亚洲欧洲一区二区在线播放| 99久久精品免费观看| 亚洲精品高清在线| 欧美日韩在线播放三区| 天天影视网天天综合色在线播放| 欧美精品丝袜中出| 精品制服美女久久| 欧美激情一区不卡| 97久久精品人人做人人爽| 一区二区三区.www| 欧美日韩成人激情| 精品亚洲国产成人av制服丝袜 | 日精品一区二区| 精品久久久久久久一区二区蜜臀| 国产一区二区三区观看| 国产精品热久久久久夜色精品三区| 成人免费黄色大片| 亚洲精品免费电影| 日韩一区二区在线看| 国内成人自拍视频| 亚洲色图色小说| 欧美丰满嫩嫩电影| 韩国av一区二区三区四区| 国产精品国产三级国产aⅴ原创| 91黄色激情网站| 日本伊人午夜精品| 亚洲国产精品激情在线观看| 欧美在线小视频| 国内精品伊人久久久久av一坑| 国产精品嫩草影院av蜜臀| 91成人看片片| 裸体健美xxxx欧美裸体表演| 国产欧美日韩麻豆91| 日本国产一区二区| 精品一区二区三区蜜桃| 中文字幕一区二区三区在线播放| 欧美天天综合网| 国产一区二区福利视频| 亚洲人成人一区二区在线观看| 日韩女优av电影在线观看| 成人激情小说乱人伦| 午夜精品久久久久久不卡8050| 久久久91精品国产一区二区三区| 日本高清视频一区二区| 国产一区二区三区日韩| 亚洲第一电影网| 中文字幕不卡的av| 欧美一区二区视频在线观看2022| 高清不卡一区二区在线| 天天影视网天天综合色在线播放| 日本一区二区三区久久久久久久久不 | 精品少妇一区二区三区日产乱码 | 国产福利一区二区| 亚洲成人精品一区| 亚洲欧美中日韩| 久久女同性恋中文字幕| 欧美日韩国产综合一区二区| 成人av片在线观看| 韩国理伦片一区二区三区在线播放 |