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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 新建 文本文檔.txt

?? 本文是關(guān)于編繹原理中語法分析的重要內(nèi)容,嚴(yán)格實驗所以要求.
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
/**********************SAMPLE語言的語法、語義分析器******************************/


#include<iostream.h>
#include<string.h>
#include <stdio.h>

char word[60][20];      //用來存放初使符號表
int n;                  //用來表示table1的元素個數(shù)
int q;                  //用來表示數(shù)組c的元素個數(shù)
char table1[100][20];   //表里存放標(biāo)識符,整數(shù),字符常數(shù)
int c[500];             //表里存放詞法分析結(jié)果
int tetrad_num=0;       //記錄四元式個數(shù)
int token_num=0;        //對token的內(nèi)容記數(shù)
int token=0;            
int table1_num=0;       //
int table1_num2=0;
char stack[100][20];
int stack_num=0;
int flag=0;

typedef struct          //四元組類說明
{
	char opr[20];
	char p1[20];
	char p2[20];
	char p3[20];
}sys;
sys tetrad[500];        //四元組
void tet(char a1[],char a2[],char a3[],char a4[]);              //四元組賦值
void init();
int IsDigit(char ch);    //數(shù)字?
int IsAlpha(char ch);    //字母?
void getsym(FILE *fin);  //詞法分析
int getnext();           
void putout();            //輸出四元組

//以下為各產(chǎn)生式對應(yīng)程序
//以下是程序
void program(); 
void id(int &token);
void var_explain(int &token);
void var_definition(int &token);
void mid_var(int &token);
void kind(int &token);
void id_table(int &token);
void mid_id(int &token);
//以下是表達(dá)式
void expression(int &token);
void a_expression(int &token);
void mid_a1(int &token);
void a_1(int &token);
void mid_a2(int &token);
void a_2(int &token);
void a_3(int &token);
void interger(int &token);
void b_expression(int &token);
void mid_b1(int &token);
void b_1(int &token);
void mid_b2(int &token);
void b_2(int &token);
void b_3(int &token);
void bool_digit(int &token);
void relation(int &token);
void mid(int &token);
//以下是語句
/*void sentence(int &token);
void complex(int &token);
void sentence_table(int &token);
void mid_sentence(int token);*/



void main()
{
	cout<<"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n"
		<<"*              姓名   薛江                                  *\n"
		<<"*              班級   05計算機聯(lián)合班                        *\n"
		<<"*              學(xué)號   200530612154                          *\n"
	    <<"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n";
	while(1)
	{
	cout<<"請輸入要測試的程序:";
	char filename[10];
	cin>>filename;
	FILE* fin = fopen(filename,"r");
	getsym(fin);
	cout<<endl;
	expression(token);
	cout<<table1[0]<<table1[1]<<table1[2]<<table1[3]<<table1[4]<<table1[5]<<table1[6]<<table1[7]<<endl;
	cout<<stack[0]<<stack[1]<<stack[2]<<stack[3]<<stack[4]<<stack[5]<<stack[6]<<stack[7]<<endl;
	putout();
	fclose(fin);
	}
}
//以下是程序
void program()
{
	token=getnext();
	if(token==23)
	{
		token=getnext();
		id(token);
		if(token==52)
		{
			tet("program",table1[table1_num++],"-","-");
			token=getnext();
			var_explain(token);
			//complex(token);
			if(token==46)
			{
				tet("sys","-","-","-");
			}
			else
			{
				cout<<"error1"<<endl;
			}
		}
		else
		{
			cout<<"error2"<<endl;
		}
	}
	else
	{
		cout<<"error3"<<endl;
	}
}

void id(int &token)
{
	if(token==36)
	{
		token=getnext();
	}
	else
	{
		cout<<"error4"<<endl;
	}
}

void var_explain(int &token)
{
	if(token==33)
	{
		token=getnext();
		var_definition(token);
	}
	else if(token!=3)
	{
		cout<<"error5"<<endl;
	}
}

void var_definition(int &token)
{
	id_table(token);
	if(token==50)
	{
		token=getnext();
		kind(token);
		if(token==52)
		{
			token=getnext();
		}
		else
		{
			cout<<"error6"<<endl;
		}
		mid_var(token);
	}
	else
	{
		cout<<"error7"<<endl;
	}
}

void mid_var(int &token)
{
	var_definition(token);
	if(token!=3)
	{
		cout<<"error8"<<endl;
	}
}
void kind(int &token)
{
	if(token==17||token==4||token==25)
	{
		token=getnext();
	}
	else
	{
		cout<<"error9"<<endl;
	}
}
void id_table(int &token)
{
	id(token);
	mid_id(token);
}
void mid_id(int &token)
{
	if(token==44)
	{
		token=getnext();
		id_table(token);
	}
	else if(token!=3)
	{
		cout<<"error10"<<endl;
	}
}
//以下是語句
/*void complex(int &token)
{
	if(token==3)
	{
		token=getnext();
		sentence_table(token);
		if(token==12)
		{
			token=getnext();
		}
		else 
		{
			cout<<"error"<<endl;
		}
	}
	else 
	{
		cout<<"error"<<endl;
	}
}
void sentence_table(int &token)
{
	sentence(token);
	mid_sentence(token);
}
void mid_sentence(int token)
{
	int schain=statstack[--top1],p,q;
	//backpatch(sentence.chain,nextstat)
	p=q=schain;
	while(p!=0)
	{
		q=sen[p].next;
		sen[p].next=nextstat;
		p=q;
	}
	if(token==52)
	{
		token=getnext();
		sentence(token);
	}
	else if(token!=12)
	{
		cout<<"error"<<endl;
	}
}

void Sentence()
{
	if(!strcmp(token,"while"))
	{
		//while 語句
		//w.codebegin入棧
		statstack[top1++]=nextstat;
		gettoken();
		SBoolExp();//statstack棧頂為E.false,E.true,E.codebegin
		if(!strcmp(token,"do"))
		{
			int f,t,cb,wcb,p,q;
			f=statstack[--top1];//E.false
			t=statstack[--top1];//E.true
			cb=statstack[--top1];//E.codebegin
			wcb=statstack[--top1];//get w.codebegin
			//backpatch(E.true,nextstat)
			p=q=t;
			while(p!=0)
			{
				q=sen[p].next;
				sen[p].next=nextstat;      
				p=q;
			}
			//w.codebegin入棧
			statstack[top1++]=wcb;
			//w1.codebegin=w.codebegin(w1為whlie E do)
			statstack[top1++]=wcb;
			//w1.chain=E.false
			statstack[top1++]=f;
			gettoken();
			Sentence();
			//backpatch(s.chain,w1.codebegin)
			int schain=statstack[--top1];//得到do后面的sentence的chain
			int wchain=statstack[--top1];//得到w1.chain
			wcb=statstack[--top1];//得到w1.codebegin
			cb=statstack[--top1];//得到w.codebegin
			p=q=schain;
			while(p!=0)
			{
				q=sen[p].next;
				sen[p].next=wcb;
				p=q;
			}
			//emit(j,-,-,w.codebegin)
			strcpy(sen[nextstat].op,"j");
			strcpy(sen[nextstat].oprand1,"-");
			strcpy(sen[nextstat].oprand2,"-");
			sen[nextstat++].next=cb;
			//s.chain=w1.chain
			statstack[top1++]=wchain;
		}
		else
			cout<<"ERROR3: MISSING DO AFTER WHILE\n";
	}
	else if(!strcmp(token,"repeat"))
	{
		//repeat語句
		//repeat.codebegin=nextstat
		statstack[top1++]=nextstat;
		gettoken();
		Sentence();
		if(!strcmp(token,"until"))
		{
			//backpatch(S1.chain,nextstat)
			int s1chain,p,q;
			s1chain=statstack[--top1]; //得到S1.chain
			p=q=s1chain;
			while(p!=0)
			{
				q=sen[p].next;
				sen[p].next=nextstat;
				p=q;
			}
			gettoken();
			SBoolExp();
			//backpatch(E.false,repeat.codebegin)
			int f,t,cb;
			f=statstack[--top1];t=statstack[--top1];
			--top1;cb=statstack[--top1];//get repeat.codebegin
			p=q=f;
			while(p!=0)
			{
				q=sen[p].next;
				sen[p].next=cb;
				p=q;
			}
			statstack[top1++]=t;
		}
		else
			cout<<"ERROR4: MISSING UNTIL AFTER REPEAT\n";
	}
	else if(!strcmp(token,"if"))
	{
		//if then 語句
		gettoken();
		SBoolExp();
		if(!strcmp(token,"then"))
		{
			//backpatch(E.true,nextstat)
			int f,t,cb,p,q;
			f=statstack[--top1];//E.false
			t=statstack[--top1];//E.true
			cb=statstack[--top1];//E.codebegin
			p=q=t;
			while(p!=0)
			{
				q=sen[p].next;
				sen[p].next=nextstat;
				p=q;
			}
			
			gettoken();
			Sentence();
//-〉modify			//C.chain=E.false(C.chain=if E then)
			statstack[top1++]=f;
			//if then else 語句
			SenElse();
		}
		else
			cout<<"ERROR5: MISSIG THEN AFTER IF\n";
	}
	else if(!strcmp(token,"begin"))
	{
		SComSen();
	}
	else if(token[0]>='a'&&token[0]<='z'||token[0]>='A'&&token[0]<='Z')//改為36,標(biāo)示符
	{
		SIdent();
		if(!strcmp(token,":="))
		{
			//賦值語句
			gettoken();
			SArithExp();
			strcpy(sen[nextstat].op,":=");
			strcpy(sen[nextstat].oprand1,idstack[--idtop]);
			strcpy(sen[nextstat].oprand2,"-");
			strcpy(sen[nextstat].result, idstack[--idtop]);
			sen[nextstat++].next=-1;
			//s.chain=0
			statstack[top1++]=0;
		}
		else
			cout<<"ERROR6: MISSING := AFTER IDENTIFIER\n";
	}
	else cout<<"ERROR7\n";
}

void SenElse()
{
	int s1chain,cchain;
	cchain=statstack[--top1]; //get C.chain
	s1chain=statstack[--top1];//get Sen1.chain
	if(!strcmp(token,"else"))
	{
		//q:=nextstat
		int q=nextstat;
		//emit(j,-,-,0)
		strcpy(sen[nextstat].op,"j");
		strcpy(sen[nextstat].oprand1,"-");
		strcpy(sen[nextstat].oprand2,"-");
		sen[nextstat++].next=0;
		//backpatch(c.chain,nextstat)
		int r,s;
		r=s=cchain;
		while(r!=0)
		{
			s=sen[r].next;
			sen[r].next=nextstat;
			r=s;
		}
		//seneles.chain=merge(sen1.chain,q)
		if(q==0)
			statstack[top1++]=s1chain;
		else
		{
			sen[1].next=s1chain;
			statstack[top1++]=q;
		}
		gettoken();
		Sentence();
		//Sen.chain=merge(SenElse.chain,Sen_2.chain)
		int s2chain,selsechain;
		s2chain=statstack[--top1];
		selsechain=statstack[--top1];
		if(s2chain==0)
			statstack[top1++]=s2chain;
		else
		{
			sen[s2chain].next=selsechain;
			statstack[top1++]=s2chain;
		}
	}
	else if(strcmp(token,"end")&&strcmp(token,";"))
		cout<<"ERROR8\n";
	else
	{
		//空產(chǎn)生式
		//merge(C.chain,S1.chain)
		if(s1chain==0)
			statstack[top1++]=cchain;
		else
		{
			sen[s1chain].next=cchain;
			statstack[top1++]=s1chain;
		}
	}
}

*/











//以下是表達(dá)式
void expression(int &token)
{
	token=getnext();
	a_expression(token);
	b_expression(token);
	//c_expression(token);
}

void a_expression(int &token)
{
	a_1(token);
	mid_a1(token);
}
void mid_a1(int &token)
{
	if(token==43)
	{
		token=getnext();
		a_1(token);
		mid_a1(token);
		tet("+",stack[stack_num-2],stack[stack_num-1],"T");
	}
	else if(token==45)
	{
		token=getnext();
		a_1(token);
		mid_a1(token);
		tet("-",stack[stack_num-2],stack[stack_num-1],"T");
	}
	else if(token!=40||token!=20||token!=1||
		    token!=56||token!=53||token!=55||
			token!=54||token!=58||token!=57||
			token!=52||token!=11||token!=32||
			token!=12||token!=10||token!=29)
	{
	    cout<<"error11"<<endl;
	}
}
void a_1(int &token)
{
	a_2(token);
	mid_a2(token);
}
void mid_a2(int &token)
{
	if(token==41)
	{
		token=getnext();
		a_2(token);
		mid_a2(token);
		tet("*",stack[stack_num-2],stack[stack_num-1],"T");
	}
	else if(token==48)
	{
		token=getnext();
		a_2(token);
		mid_a2(token);
		tet("/",stack[stack_num-2],stack[stack_num-1],"T");
	}
	else if(token!=43||token!=45||token!=40||
		    token!=56||token!=1||token!=20||
			token!=53||token!=54||token!=55||
			token!=57||token!=58||token!=52||
			token!=11||token!=32||token!=12||
			token!=10||token!=29)
	{
		cout<<"error12"<<endl;
	}
}
void a_2(int &token)         
{
	if(token==45)
	{
		token=getnext();
		a_2(token);
	}
	else if(token==36||token==37||token==39)
	{
		a_3(token);
	}
	else
	{
		cout<<"error"<<endl;
	}
}
void a_3(int &token)
{
	if(token==39)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲三级在线观看| 亚洲福中文字幕伊人影院| 亚洲男帅同性gay1069| 亚洲二区在线观看| 51午夜精品国产| 久久久久国产一区二区三区四区| 亚洲免费伊人电影| 国产麻豆精品95视频| 欧美日韩一本到| 国产精品白丝在线| 国产在线精品免费| 这里只有精品视频在线观看| 亚洲色欲色欲www| 国产成人免费视频一区| 日韩一二在线观看| 亚洲综合免费观看高清完整版在线| 激情综合色综合久久| 欧美日韩大陆一区二区| 亚洲欧美国产毛片在线| 成人手机在线视频| 国产香蕉久久精品综合网| 日韩不卡一区二区三区 | 亚洲欧美一区二区三区孕妇| 国模套图日韩精品一区二区| 欧美一区二区三区四区在线观看| 亚洲综合网站在线观看| 成人av在线网| 国产精品成人午夜| jlzzjlzz欧美大全| 日韩理论电影院| 99精品桃花视频在线观看| 国产女同性恋一区二区| 成人黄色软件下载| 国产日韩亚洲欧美综合| 国产91精品在线观看| 国产清纯美女被跳蛋高潮一区二区久久w| 三级久久三级久久久| 欧洲国产伦久久久久久久| 亚洲黄色免费电影| 在线免费视频一区二区| 亚洲午夜av在线| 国产蜜臀av在线一区二区三区| 国产在线观看免费一区| 国产日韩欧美综合在线| 粉嫩久久99精品久久久久久夜| 欧美激情一区二区三区四区| 风间由美中文字幕在线看视频国产欧美 | 欧美日韩高清在线播放| 午夜精品在线看| 日韩欧美视频在线| 国产在线观看免费一区| 国产精品国产精品国产专区不蜜 | 久久天天做天天爱综合色| 国产一二三精品| 国产精品免费看片| 欧美日韩综合不卡| 久久97超碰色| 欧美国产一区二区| 欧美日韩在线不卡| 久久99精品久久久久久动态图| 国产日韩欧美一区二区三区综合| 成人激情图片网| 亚洲成a人v欧美综合天堂下载| 欧美一区二区观看视频| 国产不卡高清在线观看视频| 亚洲精品免费在线观看| 欧美一级欧美一级在线播放| 国产麻豆成人传媒免费观看| 亚洲精品一二三四区| 欧美二区三区91| 国产91综合一区在线观看| 亚洲丶国产丶欧美一区二区三区| 久久综合给合久久狠狠狠97色69| 精品成人一区二区三区| 99精品一区二区三区| 久久国产日韩欧美精品| 亚洲色图欧美在线| 久久影院视频免费| 欧美日韩一区视频| 成人免费视频一区二区| 日本成人在线不卡视频| 亚洲六月丁香色婷婷综合久久| 欧美一区二区三区成人| 91免费观看在线| 国产一区二区在线影院| 丝袜亚洲另类欧美| 亚洲色图一区二区三区| 国产欧美精品在线观看| 欧美福利视频一区| 91行情网站电视在线观看高清版| 久草精品在线观看| 天天色 色综合| 亚洲日本中文字幕区| 精品av综合导航| 欧美一区二区观看视频| 欧美做爰猛烈大尺度电影无法无天| 国产成人自拍网| 老司机精品视频线观看86| 午夜视频久久久久久| 最近中文字幕一区二区三区| 2023国产精品| 91精品在线麻豆| 欧美日韩一区二区三区在线看 | 久久综合狠狠综合久久综合88 | 日韩欧美色综合网站| 欧美色偷偷大香| 色综合中文综合网| 在线免费观看不卡av| 99久久精品久久久久久清纯| 国产一区二区三区香蕉| 久久av资源网| 日韩av一区二区三区四区| 婷婷夜色潮精品综合在线| 亚洲成人在线观看视频| 亚洲午夜国产一区99re久久| 亚洲乱码中文字幕| 一区二区三区四区亚洲| 亚洲精品第一国产综合野| 亚洲视频一区二区在线观看| 亚洲欧美怡红院| 樱花草国产18久久久久| 亚洲影院在线观看| 午夜一区二区三区在线观看| 亚洲成人综合视频| 秋霞影院一区二区| 久久国产精品一区二区| 国产一区不卡在线| 成人av电影在线网| 91麻豆文化传媒在线观看| 久久奇米777| 国产精品天干天干在观线| 亚洲人成人一区二区在线观看 | 欧美一区二区三级| 欧美一卡二卡在线观看| 久久午夜老司机| 国产日韩精品一区| 亚洲乱码国产乱码精品精小说| 亚洲一区二区三区四区五区黄| 亚洲va国产天堂va久久en| 日本亚洲视频在线| 国产福利91精品一区二区三区| 成人免费视频免费观看| 色av一区二区| 精品国产一区二区三区四区四 | 欧美一区二区日韩| 国产精品色呦呦| 亚洲精品免费播放| 琪琪久久久久日韩精品| 国产成人亚洲综合色影视| 91麻豆国产福利在线观看| 欧美肥胖老妇做爰| 欧美经典一区二区| 亚州成人在线电影| 国产91丝袜在线18| 欧美精品黑人性xxxx| 国产清纯白嫩初高生在线观看91| 亚洲一级电影视频| 国产一区二区视频在线播放| 成人激情免费电影网址| 正在播放亚洲一区| 亚洲视频一区在线| 韩国视频一区二区| 欧美午夜片在线观看| 国产日韩精品一区二区三区在线| 亚洲国产精品久久人人爱| 国产乱理伦片在线观看夜一区| 在线视频亚洲一区| 国产日韩欧美精品电影三级在线| 亚洲第一电影网| 不卡一区二区三区四区| 精品国产污网站| 午夜视频一区在线观看| 91免费版在线看| 国产色综合久久| 久久精品国产99久久6| 一本高清dvd不卡在线观看| 久久久久国产一区二区三区四区| 午夜一区二区三区在线观看| 91麻豆免费视频| 中文字幕精品在线不卡| 国产在线精品一区二区三区不卡| 欧美卡1卡2卡| 亚洲国产精品久久人人爱蜜臀| av中文字幕在线不卡| 久久精品视频一区二区三区| 麻豆视频观看网址久久| 欧美日韩黄色一区二区| 亚洲女人小视频在线观看| 不卡电影一区二区三区| 欧美国产成人精品| 国产精品一区二区免费不卡| 欧美一区二区视频免费观看| 亚洲福利一二三区| 欧美日韩在线三级| 亚洲高清中文字幕| 欧美日韩精品高清| 日韩中文字幕1| 日韩一级完整毛片| 久久99久久99| 2023国产一二三区日本精品2022|