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

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

?? 算符優先文法dlg.cpp

?? 非常不錯的算符優先文法..課程設計時做的
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
			Pos1=Vt.Find(Pt[i].pright[j+1]);
			if(Pos0!=-1 && Pos1!=-1)
				if(G[Pos0][Pos1]==' ')
					G[Pos0][Pos1]='=';
			if(j<Pt[i].pright.GetLength()-2)
			{
				Pos2=Vt.Find(Pt[i].pright[j+2]);
				if(Pos0!=-1 && Pos1==-1 && Pos2!=-1)
					if(G[Pos0][Pos2]==' ')
						G[Pos0][Pos2]='=';
			}
			if(Pos0!=-1 && Pos1==-1)
				for(k=0;k<Vt.GetLength();k++)
				{
					Vnnum=Vn.Find(Pt[i].pright[j+1]);
					if(F[Vnnum][k])
						if(G[Pos0][k]==' ')
							G[Pos0][k]='<';
				}
			if(Pos0==-1 && Pos1!=-1)
				for(k=0;k<Vt.GetLength();k++)
				{
					Vnnum=Vn.Find(Pt[i].pright[j]);
					if(L[Vnnum][k])
						if(G[k][Pos1]==' ')
							G[k][Pos1]='>';
				}
		}
	

}


int CMyDlg::Analyze(int Ptnum)                      // 規約主函數
{
	CString char_input;
	CString char_input0;
	CString buffer;
	char a;
	CString Q;
	bool flag=false;
	int i;
	int j;
	int k;
	int x;
	int y;
	int output_i=0;
	int output_j=0;
	int amax;
	
	for(i=0;i<20;i++)
		charstack[i]=0;
	char_input=m_sentence+"#";
	char_input0=char_input;
	amax=m_sentence.GetLength();
	k=0;
	charstack[k]='#';
	a=char_input[0];
	output[output_i][1]=charstack;
	output[output_i][2]=char_input0;
	output[output_i][3]="進棧";
	output_i++;
	i=0;
	while(1)
	{
//		if(a=='#'&&i>=1)
//			flag=true;
		if(i<=amax)
			a=char_input[i];
		else 
			break;
		if(Vt.Find(charstack[k])!=-1)
			j=k;
		else
			j=k-1;

		x=Vt.Find(charstack[j]);
		y=Vt.Find(a);
		if(G[x][y]==NULL)
		{
			FlagOk=Error(charstack[j],a,output_i);
			output[output_i][1]=charstack;
			output[output_i][2]=char_input0;
			output[output_i][3]="出錯中止";
			return(output_i+1);
		}
		while(G[x][y]=='>')
		{
			do{
				Q=charstack[j];
				if(Vt.Find(charstack[j-1])!=-1)
					j=j-1;
				else 
					j=j-2;
				x=Vt.Find(charstack[j]);
				y=Vt.Find(Q);
				if(G[x][y]==' ')
				{
					FlagOk=Error(charstack[j],a,output_i);
					output[output_i-1][3]="出錯中止";
					return(output_i);
				}
			}while(G[x][y]!='<');
			bool success=false;

			output[output_i][4].Empty();

			success=Guiyue(j,k,Ptnum,output_i);            //調用規約子程序

			output[output_i][1]=charstack;
			output[output_i][2]=char_input0;
			output[output_i][3]="規約";
			buffer=output[output_i][4];
			output[output_i][4].Empty();
			output[output_i][4]+=charstack[j];
			output[output_i][4]+=" ";
			output[output_i][4]+=G[x][y];
			output[output_i][4]+=" ";
			output[output_i][4]+=a;
			output[output_i][4]+=buffer;
			output_i++;
			if(success)
				k=j+1;
			else 
			{
				AfxMessageBox("規約失敗~!");
				FlagOk=false;
				output[output_i][1]=charstack;
				output[output_i][2]=char_input0;
				output[output_i][3]="出錯中止";
				return(output_i+1);

			}
		}
		x=Vt.Find(charstack[j]);
		y=Vt.Find(a);
		if(G[x][y]==' ')
		{
			FlagOk=Error(charstack[j],a,output_i);
			output[output_i][1]=charstack;
			output[output_i][2]=char_input0;
			output[output_i][3]="出錯中止";
			return(output_i+1);
		}
		if(G[x][y]=='<' || G[x][y]=='=')
		{
			k++;
			charstack[k]=a;
			char_input0.Delete(0,1);
			output[output_i][1]=charstack;
			output[output_i][2]=char_input0;
			output[output_i][3]="進棧";
			output[output_i][4].Empty();
			output[output_i][4]+=charstack[j];
			output[output_i][4]+=" ";
			output[output_i][4]+=G[x][y];
			output[output_i][4]+=" ";
			output[output_i][4]+=a;
			output_i++;
			i++;
		}

		if(charstack[2]=='#') break;

	}

	return(output_i);
}

bool CMyDlg::Guiyue(int j,int k,int Ptnum,int output_i)          //規約子程序
{
	int i;
	int cleari;
	int iPt;
	CString CompareNew;
	CString CompareFormer;
	CString LeftestPhrase;
	CompareNew.Empty();
	CompareFormer.Empty();
	LeftestPhrase.Empty();
	for(i=j+1;i<=k;i++)
	{
		
		if(Vt.Find(charstack[i])!=-1)
		{
			CompareNew+=charstack[i];
			LeftestPhrase+=charstack[i];
		}		 
		else
		{
			CompareNew+=" ";
			LeftestPhrase+=charstack[i];
		}
	}
	for(i=0;i<Ptnum;i++)
	{
		CompareFormer.Empty();
		for(iPt=0;iPt<Pt[i].pright.GetLength();iPt++)
		{
			if(Vt.Find(Pt[i].pright[iPt])!=-1)
				CompareFormer+=Pt[i].pright[iPt];
			else 
				CompareFormer+=" ";
		}
		if(CompareNew==CompareFormer)
		{
			for(cleari=j+1;cleari<=k;cleari++)
				charstack[cleari]=NULL;
			charstack[j+1]=Pt[i].pleft;
			output[output_i][4]+=",使用";
			output[output_i][4]+=Pt[i].pleft;
			output[output_i][4]+="->";
			output[output_i][4]+=Pt[i].pright;
			output[output_i][5]=LeftestPhrase;
			return(true);
		}
		if(CompareNew!=CompareFormer && i==Ptnum-1)
			LeftestPhrase=" ";
		
	}
	output[output_i][5]=LeftestPhrase;
	return(false);
}

void CMyDlg::Show_list1()                    //輸出算符優先表
{
	int i,j;
	int Vtnum=Vt.GetLength();
	CString str;

	for(i=0;i<=Vtnum;i++)
	{
		m_list.InsertColumn(i,"i");
		m_list.SetColumnWidth(i,25);
	}

	m_list.InsertItem(0,"★");
	for(i=0;i<Vtnum;i++)
	{
		str=Vt[i];
		m_list.SetItemText(0,i+1,str);
	}
	for(i=0;i<Vtnum;i++)
	{
		str=Vt[i];
		m_list.InsertItem(i+1,"i");
		m_list.SetItemText(i+1,0,str);
	}
	for(i=0;i<Vtnum;i++)
		for(j=0;j<Vtnum;j++)
		{
			str=G[i][j];
			m_list.SetItemText(i+1,j+1,str);
		}

}

void CMyDlg::Show_list2(int col)                     //顯示規約結果
{
	int i;
	int j;
	m_list2.DeleteAllItems();
	CString stri;
	output[0][3]="準備";
	if(FlagOk)
		output[col-1][3]="接受";
	else 
		output[col-1][3]="失敗";
	if(output[col-1][4].Find("不存在關系")==-1)
		output[col-1][4]=" ";
	for(i=0;i<col;i++)
	{
		stri.Format("%d",i+1);
		m_list2.InsertItem(i,"0");
		m_list2.SetItemText(i,0,stri);
		for(j=0;j<6;j++)
		{
			m_list2.SetItemText(i,j+1,output[i][j+1]);
		}
	}

}

void CMyDlg::Show_list3()                     //輸出FirstVt集
{
	int i,j;
	int Vtnum;
	int Vnnum;
	CString str;
	Vtnum=Vt.GetLength();
	Vnnum=Vn.GetLength();


	for(i=0;i<Vtnum;i++)
	{
		m_list3.InsertColumn(i,"0");
		m_list3.SetColumnWidth(i,25);
	}
	m_list3.InsertItem(0,"★");
	for(i=0;i<Vnnum-1;i++)
	{
		str=Vn[i+1];
		m_list3.InsertItem(i+1,str);
	}
	for(i=0;i<Vtnum;i++)
	{
		str=Vt[i];
		m_list3.SetItemText(0,i+1,str);
	}
	for(i=0;i<Vnnum-1;i++)
		for(j=0;j<Vtnum;j++)
		{
			str.Empty();
			if(F[i+1][j])
				str="√";
			m_list3.SetItemText(i+1,j+1,str);
		}
}

void CMyDlg::Show_list4()                //輸出LastVt集
{
		int i,j;
	int Vtnum;
	int Vnnum;
	CString str;
	Vtnum=Vt.GetLength();
	Vnnum=Vn.GetLength();


	for(i=0;i<Vtnum;i++)
	{
		m_list4.InsertColumn(i,"0");
		m_list4.SetColumnWidth(i,25);
	}
	m_list4.InsertItem(0,"★");
	for(i=0;i<Vnnum-1;i++)
	{
		str=Vn[i+1];
		m_list4.InsertItem(i+1,str);
	}
	for(i=0;i<Vtnum;i++)
	{
		str=Vt[i];
		m_list4.SetItemText(0,i+1,str);
	}
	for(i=0;i<Vnnum-1;i++)
		for(j=0;j<Vtnum;j++)
		{
			str.Empty();
			if(L[i+1][j])
				str="√";
			m_list4.SetItemText(i+1,j+1,str);
		}
}

bool CMyDlg::Error(char left,char right,int output_i)        //出錯處理程序
{
	CString Errstr;
	Errstr.Empty();
	Errstr+=left;
	Errstr+=" 與 ";
	Errstr+=right;
	Errstr+="不存在關系";
	MessageBox(Errstr,"出錯啦~!",MB_ICONWARNING);
	output[output_i][4]=Errstr;
	return(false);
	
}

void CMyDlg::InitListControl()
{

	int i,j;

	m_list.DeleteAllItems();     //List1清空
	for(i=0;i<6;i++)
		for(j=0;j<=20;j++)
			m_list.DeleteColumn(j);

	m_list2.DeleteAllItems();    //List2清空

	m_list3.DeleteAllItems();    //List3清空
	for(i=0;i<6;i++)
		for(j=0;j<20;j++)
			m_list3.DeleteColumn(j);

	m_list4.DeleteAllItems();    //List4清空
	for(i=0;i<6;i++)
		for(j=0;j<20;j++)
			m_list4.DeleteColumn(j);
}

void CMyDlg::OnBianyi()                   //Main
{
	FlagOk=true;

	m_grammar.Empty();
	m_con_grammar.GetWindowText(m_grammar);
	m_sentence.Empty();
	m_con_sentence.GetWindowText(m_sentence);

	int i;
	int j;
	for(i=0;i<50;i++)
		for(j=0;j<6;j++)
			output[i][j]=" ";      //初始化output
    InitListControl();             //清空各項List列表

   	int Ptnum=InitPt();
	if(Ptnum!=-1)
	{
		SetFirstVt(Ptnum);
		Show_list3();
		SetLastVt(Ptnum);
		Show_list4();
		Create_G_table(Ptnum);
		Show_list1();
		i=Analyze(Ptnum);
		Show_list2(i);
	}	
	
}

void CMyDlg::OnInputDefault() 
{
	// TODO: Add your control notification handler code here
	m_grammar.Empty();
	CString str;
	str = "E->E+T|T\r\nT->T*F|F\r\nF->P^F|P\r\nP->(E)|i\r\n";
	m_con_grammar.SetWindowText(str);
	m_sentence.Empty();
	str.Empty();
	str = "i+i*(i+i)^i";
	m_con_sentence.SetWindowText(str);
//	GetDlgItem(IDC_LIST1)->ShowWindow(SW_HIDE);
//	GetDlgItem(IDC_LIST1)->ShowWindow(SW_SHOW);
}


BOOL CMyDlg::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
	CAboutDlg e;
	if(pMsg->message == WM_KEYDOWN) 
	{ 
		CString strwParam; 
		strwParam.Format("%d ",pMsg->wParam); 
		if(pMsg->wParam=='G' && GetKeyState(VK_CONTROL)<0)
			if(e.DoModal()==IDOK)
     			exit(1);
			
				
			 
	} 
	return CDialog::PreTranslateMessage(pMsg);
}





?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
波多野结衣亚洲一区| 久久日一线二线三线suv| 欧美精品久久久久久久多人混战| 欧美va在线播放| 亚洲国产精品一区二区久久 | 久草中文综合在线| 成人午夜电影小说| 日韩一区二区三区av| 综合电影一区二区三区| 免费不卡在线视频| 在线免费观看一区| 欧美韩国日本不卡| 久久精品国产免费| 欧美高清视频不卡网| 亚洲精品第1页| 成人动漫在线一区| 久久久久久影视| 精品一区二区日韩| 日韩欧美国产麻豆| 蜜臀91精品一区二区三区 | 亚洲柠檬福利资源导航| 国产福利91精品| 精品成人免费观看| 日韩电影网1区2区| 91精品欧美一区二区三区综合在| 亚洲精品国产第一综合99久久| voyeur盗摄精品| 久久久国产精品麻豆| 九九精品视频在线看| 日韩欧美一级二级三级久久久| 亚洲国产综合视频在线观看| 在线观看亚洲成人| 一区二区三区免费看视频| 91在线观看下载| 一区二区中文视频| 91久久精品一区二区三区| 亚洲另类春色校园小说| 91福利国产精品| 亚洲国产成人高清精品| 欧美日韩国产首页| 日韩av不卡在线观看| 欧美刺激午夜性久久久久久久| 蜜臀av一区二区在线观看| 精品国产欧美一区二区| 精品在线视频一区| 亚洲国产精品ⅴa在线观看| av在线一区二区三区| 一区二区三区日韩欧美| 欧美日韩中字一区| 麻豆精品视频在线观看免费| 久久亚洲综合av| 成人激情开心网| 一区二区三区欧美在线观看| 欧美乱妇23p| 国产一区二区不卡| 成人欧美一区二区三区黑人麻豆| 欧美三级电影网站| 狠狠色狠狠色综合| 中文字幕一区二区不卡| 欧美日韩免费视频| 国产在线精品国自产拍免费| 亚洲国产精华液网站w| 欧美性大战久久久久久久| 蓝色福利精品导航| 18成人在线观看| 制服丝袜亚洲精品中文字幕| 国产乱人伦精品一区二区在线观看| 国产精品乱码人人做人人爱| 在线观看精品一区| 国产一区二区免费视频| 亚洲三级在线播放| 精品国产污污免费网站入口 | 国产aⅴ精品一区二区三区色成熟| 国产精品国产自产拍高清av| 欧美丰满少妇xxxxx高潮对白| 国产美女一区二区| 亚洲一区二区三区美女| 国产亚洲1区2区3区| 日本久久精品电影| 国产不卡在线播放| 日本一不卡视频| 中文字幕日韩欧美一区二区三区| 日韩亚洲欧美综合| 91社区在线播放| 国产自产2019最新不卡| 亚洲一区在线免费观看| 欧美国产日产图区| 日韩午夜中文字幕| 欧美性一二三区| heyzo一本久久综合| 久久国产精品无码网站| 一区二区三区欧美在线观看| 国产人久久人人人人爽| 日韩一区和二区| 在线观看日韩毛片| 成人app网站| 国产毛片精品一区| 麻豆91精品视频| 午夜精品福利在线| 一区二区在线免费| 自拍偷在线精品自拍偷无码专区 | 欧美一区二区三区四区高清| 91啦中文在线观看| 99精品在线免费| 成人激情文学综合网| 老司机一区二区| 日本一区中文字幕| 视频精品一区二区| 亚洲成人7777| 日本一区中文字幕| 热久久免费视频| 日韩中文字幕av电影| 亚洲线精品一区二区三区| 亚洲久草在线视频| 亚洲欧美电影一区二区| 亚洲欧美在线aaa| 自拍偷拍欧美精品| 中文字幕一区在线| 亚洲卡通动漫在线| 亚洲高清在线视频| 日韩电影一区二区三区四区| 蜜桃视频第一区免费观看| 午夜精品久久久久久久| 午夜天堂影视香蕉久久| 日韩精品久久理论片| 日韩激情中文字幕| 免费人成黄页网站在线一区二区| 视频一区欧美精品| 久久国产精品色| 高清shemale亚洲人妖| 9i在线看片成人免费| 色94色欧美sute亚洲线路一ni| 在线观看91精品国产入口| 在线精品视频一区二区| 欧美一区二区三级| 久久久久久久网| 中文字幕一区二区三| 亚洲一区中文日韩| 久久 天天综合| av欧美精品.com| 欧美电影影音先锋| 国产偷国产偷精品高清尤物| 亚洲免费av网站| 男女视频一区二区| 成人黄色小视频在线观看| 91成人免费电影| 欧美α欧美αv大片| 国产精品久久毛片a| 午夜精品视频在线观看| 国产剧情在线观看一区二区| 色综合久久中文字幕综合网| 日韩亚洲欧美一区二区三区| 国产亚洲一区二区在线观看| 一区二区三区在线视频观看58| 老鸭窝一区二区久久精品| 99精品欧美一区二区三区小说 | 亚洲国产毛片aaaaa无费看| 美女mm1313爽爽久久久蜜臀| www.99精品| 欧美一区二区视频在线观看2020| 国产亚洲精品中文字幕| 婷婷中文字幕一区三区| 成人在线综合网站| 制服丝袜亚洲精品中文字幕| 自拍av一区二区三区| 国产原创一区二区三区| 在线观看欧美日本| 欧美国产亚洲另类动漫| 日本在线播放一区二区三区| 色哟哟国产精品免费观看| 久久久久久久久久久黄色| 性做久久久久久久免费看| 国产成人aaa| 欧美一二三四区在线| 亚洲自拍偷拍九九九| 丁香五精品蜜臀久久久久99网站 | 久久免费美女视频| 亚洲国产精品人人做人人爽| 成人免费观看av| 26uuu欧美| 亚洲成a人片在线不卡一二三区| gogogo免费视频观看亚洲一| 久久色中文字幕| 另类小说欧美激情| 91精品福利在线一区二区三区| 一区二区三区av电影 | 中文字幕欧美一区| 国产福利一区在线观看| 精品久久久久久久人人人人传媒 | 一区二区三区四区不卡视频| 99久久777色| 中文字幕一区日韩精品欧美| 国产成人午夜精品5599| 日韩片之四级片| 日本强好片久久久久久aaa| 欧美日韩午夜精品| 天天综合色天天| 在线观看日韩国产| 亚洲一区二区三区在线播放| 91免费观看视频在线|