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

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

?? whiledlg.cpp

?? 編譯原理程序設計 寫的很好哦 很有參考價值
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
	fstream fout;
	content[0]='\0';
	m_Input.GetWindowText(STR);
    count=STR.GetLength();
	for(int i=0;i<count;i++)
		content[i]=STR.GetAt(i);
	content[count]='\0';
	def_filepath="save.txt";
	fout.open(def_filepath,ios::out);
	fout<<content;
	fout.close();
	f_c.open("save.txt");
	f_c.get(c_c);
	if(c_c==EOF) isSaved=FALSE;
	else isSaved=TRUE;
	f_c.close();
	Translate();
}

int CWhileDlg::Translate()
{
	if(isSaved==FALSE)
	{
		MessageBox("Please input a while sentence!");
		return 0;
	}
	else
	{
		Init();
		Main();
		Dsp();
		return 0;
	}
}

int CWhileDlg::Main()
{
	input.open("save.txt");
	output.open("output.txt");
	Print();
	int check,over=0;
	int m,k;
	char chr;
	if(input.fail())
	{
        output<<"Can not open the input file!\r"<<endl;
		input.close();
		return 0;
	}
	if(output.fail())
	{
        output<<"Can not open the output file!\r"<<endl;
		output.close();
		return 0;
	}

	for(m=0;m<MAXBUF;m++)
		for(k=0;k<buf;k++)
			token[m].name[k]='\0';
    initlab();
	input.get(sym);
	while(sym!=EOF)
	{
		chr=Getsymbol();
		if(chr==' ') continue;
		else 
		{
			S[num]=chr;
			num++;
		}
	}
	input.close();
	input.open("save.txt");
	S[num++]='#';
	output<<"The while sentence is:\r"<<endl;
	/*for(m=0;m<t;m++)
	{
		k=0;
		while(token[m].name[k]!='\0')
		{
			output<<token[m].name[k];
			k++;
		}
		output<<" ";
	}*/
	input.get(sym);
	while(sym!=EOF)
	{
		output<<sym;
		input.get(sym);
	}
	output<<"\r"<<endl;
    for(check=0;check<num;check++)
	{
		if(S[check]=='i'&&S[check+1]=='i') 
		{
			over=-1;                   //出錯標志
			break;
		}
	}
	/*for(m=0;m<num;m++)
	{
		cout<<S[m];
	}*/
	output<<"\r"<<endl;
	ana();
	if(over==-1||Check!=1) 
	{
		output<<"Your input does not tally with the grammar!\r"<<endl;
		input.close();
		output.close();
		return -1;
	}
	if(Check==1) 
	{
		output<<"Parsing completed!";
	}
	output<<"\r"<<endl;
	input.close();
	output.close();
	return 0;
}

void CWhileDlg::ana()
{
	i=0;
	int k=0;
	status.push(0);
	symbol.push('#');
	while(S[i]!='#'&&symbol.top()!='S')
	{
		if(k==0) 
		{
			k=Mt::meet(status.top(),S[i]);
			continue;
		}
		if(k==1) 
		{
			k=Mt::meet(status.top(),symbol.top());
			continue;
		}
		if(k==-1)
		{
			Check=-1;
			break;
		}
		if(k==2)
		{
			Check=1;
			break;
		}
	}
	k=0;
	while(S[i]=='#')
	{
		if(symbol.top()=='S')
		{
			if(Mt::meet(status.top(),S[i])==2)
			{
				ONE();
				Check=1;
				break;
			}
		}
		if(symbol.top()!='S'&&(Mt::meet(status.top(),symbol.top())==1||Mt::meet(status.top(),symbol.top()))==0)
			continue;
		else 
			if(Mt::meet(status.top(),symbol.top())==-1)
			{
				Check=-1;
				break;
			}
	}
}

void CWhileDlg::Print()
{
	output<<"The Grammar of a while sentence:\r"<<endl;
	output<<"******************************************\r"<<endl;
	output<<"*      (1)      S --> while(A) B         *\r"<<endl;
	output<<"*      (2)      A --> N rop N            *\r"<<endl;
	output<<"*      (3)      B --> N = N op N         *\r"<<endl;                                                          
    output<<"*      (4)      N --> id                 *\r"<<endl;
	output<<"******************************************\r"<<endl;
}

void CWhileDlg::initlab()
{
	int m,k;
	for(m=0;m<n_lab;m++)
		for(k=0;k<Act;k++)
		{
			lable[m].Action[k]=-1;
			lable[m].lab=0;                       //lab=0若為1表示規(guī)約
		}
		
		for(m=0;m<n_lab;m++)
			for(k=0;k<Goto;k++)
			{
				lable[m].Action[k]=-1;
				lable[m].lab=0;
				lable[m].num=0;
				lable[m].status=0;
			}
			for(m=0;m<n_lab;m++)
			{
				lable[m].chr[0]='w';
				lable[m].chr[1]='(';
				lable[m].chr[2]=')';
				lable[m].chr[3]='r';
				lable[m].chr[4]='=';
				lable[m].chr[5]='o';
				lable[m].chr[6]='i';
				lable[m].chr[7]='#';
				lable[m].chr[8]='S';
				lable[m].chr[9]='A';
				lable[m].chr[10]='B';
				lable[m].chr[11]='N';
			}
		lable[0].Action[0]=2;
		lable[0].Goto[0]=1;

		lable[1].Action[7]=-2;   //acc

		lable[2].Action[1]=3;

		lable[3].Action[6]=6;
		lable[3].Goto[1]=4;
		lable[3].Goto[3]=5;

		lable[4].Action[2]=7;

		lable[5].Action[3]=8;

		lable[6].lab=1;
		lable[6].num=4;

		lable[7].Action[6]=6;
		lable[7].Goto[2]=9;
		lable[7].Goto[3]=10;

		lable[8].Action[6]=6;
		lable[8].Goto[3]=11;

		lable[9].lab=1;
		lable[9].num=1;

		lable[10].Action[4]=12;

		lable[11].lab=1;
		lable[11].num=2;

		lable[12].Action[6]=6;
		lable[12].Goto[3]=13;

		lable[13].Action[5]=14;

		lable[14].Action[6]=6;
		lable[14].Goto[3]=15;

		lable[15].lab=1;
		lable[15].num=3;

}

char CWhileDlg::Getsymbol()
{
	i=0;
	while(sym!=EOF)
	{
		if(sym=='_'||(sym>='a'&&sym<='z')||(sym>='A'&&sym<='Z'))
		{
			int h1=0,h2=0,h3=0;
		    while(sym=='_'||(sym>='a'&&sym<='z')||(sym>='A'&&sym<='Z')||(sym>='0'&&sym<='9'))
			{
				token[t].name[i++]=sym;
				input.get(sym);
			}
			token[t].num=i;
			h1=strcmp(token[t].name,wh);
			h2=strcmp(token[t].name,rop);
			h3=strcmp(token[t].name,op);
			t++;
			i=0;
			if(!h1) 
				return 'w';              //識別了while
			else 
				if(!h2) return 'r';      //識別了rop
				else
					if(!h3) return 'o';  //識別了op
					else
						return 'i';
		}                              //已經(jīng)取了下一個字符
		else
			if(sym>='0'&&sym<='9')
			{
				while(sym>='0'&&sym<='9')
				{
					token[t].name[i++]=sym;
					input.get(sym);
				}
				token[t].num=i;
				t++;
				return 'i';			//數(shù)字
			}
			else 
				if(sym=='(')
				{
                    token[t].name[0]=sym;
					token[t].num=0;
					t++;
					input.get(sym);
					return '(';
				}					
				else
					if(sym==')')
					{
						token[t].name[0]=sym;
						token[t].num=0;
					    t++;
						input.get(sym);
						return ')';
					}						
					else 
						if(sym=='=')
						{
							token[t].name[0]=sym;
							token[t].num=0;
					        t++;
							input.get(sym);
							return '=';
						}
							else
								if(sym==' ')
								{
									input.get(sym);
									return ' ';
								}
								else
								{
									input.get(sym);
									return 'X';
								}
	}
	return 0;
}



void CWhileDlg::ONE()
{
    output<<"The output is:\r"<<endl;
	output<<"100   A := ";
	NN::N(1);
	output<<" rop ";
	NN::N(2);
	output<<"\r"<<endl;
	TWO();
}

void CWhileDlg::TWO()
{
	output<<"101   if(A) goto 103\r"<<endl;
	output<<"102   goto 105\r"<<endl;
	THREE();
	output<<"105   exit\r"<<endl;
}

void CWhileDlg::THREE()
{
	cout<<"103   ";
	output<<"103   ";
	NN::N(3);
	cout<<" := ";
	output<<" := ";
	NN::N(4);
	cout<<" op ";
	output<<" op ";
	NN::N(5);
	output<<"\r"<<endl;
	output<<"104   goto 100\r"<<endl;
}

void CWhileDlg::OnTr() 
{
	// TODO: Add your control notification handler code here
	SaveTr();                
	char *chrr;
    chrr=new char[3];
    chrr[0]='\r';  chrr[1]='\n'; chrr[2]='\0';
	m_Output.SetSel(0,-1);
	m_Output.Clear();
	ifstream put("output.txt");
	put.get(sym);
	while(sym==' ') 
	{
		put.get(sym);
	}
	while(sym!=EOF) 
	{
		if(sym=='\r') m_Output.ReplaceSel(chrr);
		else m_Output.ReplaceSel(&sym);
		put.get(sym);
	}
}

void CWhileDlg::Init()
{
	num=0;
	i=0;
	t=0;
	while(!status.empty()) status.pop();
	while(!symbol.empty()) symbol.pop();
}

void CWhileDlg::OnExit() 
{
	// TODO: Add your control notification handler code here
	OnOK();
}

void CWhileDlg::OnClear() 
{
	// TODO: Add your control notification handler code here
	m_Input.SetSel(0,-1);
	m_Input.Clear();
}


void CWhileDlg::Dsp()
{	
	char *enter;
    enter=new char[3];
    enter[0]='\r';  enter[1]='\n'; enter[2]='\0';
	m_Edit.SetSel(0,-1);
	m_Edit.Clear();
	m_Edit.ReplaceSel("    |______________Action_______________|______Goto_____|");
    m_Edit.ReplaceSel(enter);
    m_Edit.ReplaceSel("狀態(tài)|while| ( | ) |rop| = | op | id | # | S | A | B | N |");
	m_Edit.ReplaceSel(enter);
	m_Edit.ReplaceSel(" 0  |  S2 |   |   |   |   |    |    |   | 1 |   |   |   |");
	m_Edit.ReplaceSel(enter);
	m_Edit.ReplaceSel(" 1  |     |   |   |   |   |    |    |acc|   |   |   |   |");
	m_Edit.ReplaceSel(enter);
	m_Edit.ReplaceSel(" 2  |     | S3|   |   |   |    |    |   |   |   |   |   |");
	m_Edit.ReplaceSel(enter);
	m_Edit.ReplaceSel(" 3  |     |   |   |   |   |    | S6 |   |   | 4 |   | 5 |");
	m_Edit.ReplaceSel(enter);
	m_Edit.ReplaceSel(" 4  |     |   | S7|   |   |    |    |   |   |   |   |   |");
	m_Edit.ReplaceSel(enter);
	m_Edit.ReplaceSel(" 5  |     |   |   | S8|   |    |    |   |   |   |   |   |");
	m_Edit.ReplaceSel(enter);
	m_Edit.ReplaceSel(" 6  |  r4 | r4| r4| r4| r4| r4 | r4 | r4|   |   |   |   |");
	m_Edit.ReplaceSel(enter);
	m_Edit.ReplaceSel(" 7  |     |   |   |   |   |    | S6 |   |   |   | 9 | 10|");
	m_Edit.ReplaceSel(enter);
	m_Edit.ReplaceSel(" 8  |     |   |   |   |   |    | S6 |   |   |   |   | 11|");
	m_Edit.ReplaceSel(enter);
	m_Edit.ReplaceSel(" 9  |  r1 | r1| r1| r1| r1| r1 | r1 | r1|   |   |   |   |");
	m_Edit.ReplaceSel(enter);
	m_Edit.ReplaceSel(" 10 |     |   |   |   |S12|    |    |   |   |   |   |   |");
	m_Edit.ReplaceSel(enter);
	m_Edit.ReplaceSel(" 11 |  r2 | r2| r2| r2| r2| r2 | r2 | r2|   |   |   |   |");
	m_Edit.ReplaceSel(enter);
	m_Edit.ReplaceSel(" 12 |     |   |   |   |   |    | S6 |   |   |   |   | 13|");
	m_Edit.ReplaceSel(enter);
	m_Edit.ReplaceSel(" 13 |     |   |   |   |   | S14|    |   |   |   |   |   |");
	m_Edit.ReplaceSel(enter);
	m_Edit.ReplaceSel(" 14 |     |   |   |   |   |    | S6 |   |   |   |   | 15|");
	m_Edit.ReplaceSel(enter);
	m_Edit.ReplaceSel(" 15 |  r3 | r3| r3| r3| r3| r3 | r3 | r3|   |   |   |   |");
	m_Edit.ReplaceSel(enter);
	m_Edit.ReplaceSel("  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄");
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美怡红院| 国产拍欧美日韩视频二区| 亚洲欧美视频一区| fc2成人免费人成在线观看播放| 国产欧美一区二区三区沐欲| 成人免费毛片aaaaa**| 综合av第一页| 91福利视频久久久久| 日本在线观看不卡视频| 久久久久久亚洲综合影院红桃| 99久久精品一区二区| 亚洲成人av一区二区| 精品日韩一区二区| 国产91丝袜在线播放| 亚洲欧美另类图片小说| 欧美一区二区黄| 懂色av一区二区三区蜜臀 | 337p粉嫩大胆色噜噜噜噜亚洲| 在线成人免费视频| 视频一区国产视频| 国产午夜久久久久| 日本丶国产丶欧美色综合| 日本亚洲最大的色成网站www| 久久精品免视看| 欧美日韩在线不卡| 国产精品一区二区在线观看网站| 亚洲日本va午夜在线电影| 欧美电影一区二区| 成人一区二区三区| 日韩av电影天堂| 国产精品久久久久久户外露出| 欧美日韩免费电影| 成人动漫一区二区在线| 奇米影视一区二区三区| 国产精品国产自产拍高清av王其| 欧美精品 日韩| 波多野洁衣一区| 日韩主播视频在线| 亚洲乱码国产乱码精品精小说| 欧美r级在线观看| 在线精品视频小说1| 欧美福利电影网| 风间由美一区二区av101| 视频一区二区三区中文字幕| 亚洲日本在线看| 国产亚洲欧美在线| 日韩亚洲欧美中文三级| 91在线精品一区二区| 国产原创一区二区| 天天综合日日夜夜精品| 亚洲美女视频在线观看| 国产精品欧美经典| 2024国产精品| 欧美一区二区三区在线观看| 一本大道久久精品懂色aⅴ| 国产91精品久久久久久久网曝门| 日本美女视频一区二区| 亚洲一区二区三区精品在线| 欧美日韩一区 二区 三区 久久精品| 成人免费高清在线| 国产精品中文有码| 国产精品91xxx| 激情图区综合网| 久久国产剧场电影| 美女视频黄 久久| 久久国产尿小便嘘嘘尿| 日本不卡高清视频| 日韩电影一区二区三区四区| 亚洲小说春色综合另类电影| 亚洲激情自拍视频| 亚洲激情网站免费观看| 中文字幕中文字幕中文字幕亚洲无线| 久久久精品tv| 日本一二三不卡| 国产嫩草影院久久久久| 国产精品美女久久久久久| 国产日韩欧美制服另类| 国产欧美日韩麻豆91| 国产女同互慰高潮91漫画| 国产欧美日韩精品a在线观看| 久久久久久97三级| 欧美经典一区二区三区| 国产精品色一区二区三区| 一色桃子久久精品亚洲| 中文字幕一区二区视频| 亚洲视频在线观看三级| 一区二区三区四区在线播放| 亚洲午夜在线电影| 视频一区二区三区入口| 精品在线免费观看| 国产成人精品亚洲777人妖| av在线不卡免费看| 欧美特级限制片免费在线观看| 欧美日韩高清一区| 精品国产亚洲一区二区三区在线观看| 精品国产一区二区国模嫣然| 国产精品毛片a∨一区二区三区| 玉米视频成人免费看| 人人爽香蕉精品| 国产东北露脸精品视频| 91在线观看视频| 制服丝袜激情欧洲亚洲| 国产午夜久久久久| 亚洲黄色录像片| 麻豆国产一区二区| 成人av一区二区三区| 精品视频色一区| 国产亚洲成av人在线观看导航| 亚洲视频每日更新| 蜜臀久久99精品久久久久宅男| 成人免费三级在线| 91麻豆精品国产自产在线观看一区| www久久久久| 亚洲一区二区影院| 国内成+人亚洲+欧美+综合在线| 99精品热视频| 精品电影一区二区| 亚洲欧美激情一区二区| 免费高清在线一区| 91在线视频免费观看| 日韩一区二区三区视频| 亚洲精品中文在线观看| 国产高清视频一区| 欧美疯狂做受xxxx富婆| 国产精品水嫩水嫩| 蜜桃av一区二区三区电影| 99久久免费国产| 2021中文字幕一区亚洲| 天堂蜜桃一区二区三区| a4yy欧美一区二区三区| 久久亚洲二区三区| 人妖欧美一区二区| 在线视频国内一区二区| 久久久99久久| 裸体歌舞表演一区二区| 色狠狠色噜噜噜综合网| 国产人妖乱国产精品人妖| 日本欧美一区二区三区| 色综合一个色综合亚洲| 亚洲国产激情av| 精品亚洲成a人在线观看| 欧美日韩视频在线一区二区| 国产精品久久国产精麻豆99网站 | 亚洲视频免费在线| 国产一区二区三区视频在线播放| 欧美三级日本三级少妇99| 亚洲欧美另类小说视频| 不卡的看片网站| 日本一区二区免费在线| 国产一区在线观看麻豆| 日韩欧美国产系列| 视频一区二区欧美| 欧美高清视频不卡网| 亚洲国产一区二区三区 | 日韩精品电影在线| 91黄视频在线观看| 国产精品你懂的在线| 国产成人午夜电影网| 国产亚洲欧美日韩在线一区| 久久国内精品自在自线400部| 日韩一区二区精品葵司在线| 午夜精品免费在线| 在线播放一区二区三区| 图片区日韩欧美亚洲| 欧美日韩国产一级| 日韩综合一区二区| 日韩三级视频在线看| 秋霞午夜av一区二区三区| 欧美一级欧美一级在线播放| 日韩av在线播放中文字幕| 制服丝袜亚洲播放| 美国十次综合导航| 欧美不卡一区二区三区四区| 麻豆专区一区二区三区四区五区| 欧美一区二区三区在线视频| 久草精品在线观看| 欧美激情一区二区三区不卡 | 8x8x8国产精品| 热久久国产精品| xf在线a精品一区二区视频网站| 国内一区二区在线| 欧美国产一区二区| 96av麻豆蜜桃一区二区| 亚洲欧美日韩小说| 欧美卡1卡2卡| 久久成人久久爱| 欧美激情在线免费观看| 欧美在线999| 毛片不卡一区二区| 国产精品久久午夜| 欧美在线小视频| 精品一区二区在线播放| 国产精品嫩草影院com| 欧美在线999| 国产一区 二区 三区一级| 亚洲色欲色欲www| 91精品国产综合久久精品图片 | 日韩欧美高清一区| 国产成人免费av在线| 亚洲一区在线观看免费|