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

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

?? testparse.c

?? 詞法分析
?? C
?? 第 1 頁 / 共 2 頁
字號:
5.	@BR↑label1:輸出 BR label1,
6.	@SETlabel↓label3:設置標號label3
7.	@BR↑label4:輸出 BR label4,
8.	@SETlabel↓label2:設置標號label2 
*/
int for_stat()
{
	int es=0,label1,label2,label3,label4;  
	fscanf(fp,"%s %s\n",&token,&token1);
	printf("%s %s\n",token,token1);
	if (strcmp(token,"("))  return(es=5);  //少左括號
	fscanf(fp,"%s %s\n",&token,&token1);
	printf("%s %s\n",token,token1);
	es=expression();
	if (es>0) return(es);
	if (strcmp(token,";")) 	return(es=4);  //少分號
	label1=labelp++;
	fprintf(fout,"LABEL%d:\n",label1);//設置label1標號
	fscanf(fp,"%s %s\n",&token,&token1);
	printf("%s %s\n",token,token1);
	es=expression();
	if (es>0) return(es);
	label2=labelp++;
	fprintf(fout,"        BRF LABEL%d\n",label2);//輸出假條件轉移指令
	label3=labelp++;
	fprintf(fout,"        BR LABEL%d\n",label3);//輸出無條件轉移指令
	if (strcmp(token,";"))  return(es=4);  //少分號
	label4=labelp++;
	fprintf(fout,"LABEL%d:\n",label4);//設置label4標號
	fscanf(fp,"%s %s\n",&token,&token1);
	printf("%s %s\n",token,token1);
	es=expression();
	if (es>0) return(es);
	fprintf(fout,"        BR LABEL%d\n",label1);//輸出無條件轉移指令
	if (strcmp(token,")"))  return(es=6); //少右括號
	fprintf(fout,"LABEL%d:\n",label3);//設置label3標號
	fscanf(fp,"%s %s\n",&token,&token1);
	printf("%s %s\n",token,token1);
	es=statement();
	if (es>0) return(es);
	fprintf(fout,"        BR LABEL%d\n",label4);//輸出無條件轉移指令
	fprintf(fout,"LABEL%d:\n",label2);//設置label2標號
	return(es);
	
}

//<write_stat>::=write <expression>;
//<write_stat>::=write <expression>@OUT;
//動作解釋:
//@ OUT:輸出 OUT

int write_stat()
{
	int es=0;
	fscanf(fp,"%s %s\n",&token,&token1);
	printf("%s %s\n",token,token1);
	es=expression();
	if (es>0)return(es);
	if (strcmp(token,";"))  return(es=4);  //少分號
	fprintf(fout,"        OUT\n");//輸出指令
	fscanf(fp,"%s %s\n",&token,&token1);
	printf("%s %s\n",token,token1);
	return(es);
}

//<read_stat>::=read ID;
//<read_stat>::=read ID↑n LOOK↓n↑d @IN@STI↓d;
//動作解釋:
//@LOOK↓n↑d:查符號表n,給出變量地址d; 沒有,變量沒定義
//@IN:輸出IN
//@STI↓d:輸出指令代碼STI  d


int read_stat()
{
	int es=0,address;
	fscanf(fp,"%s %s\n",&token,&token1);
	printf("%s %s\n",token,token1);
	if (strcmp(token,"ID"))  return(es=3);  //少標識符
	es=lookup(token1,&address);
	if (es>0) return(es);
	fprintf(fout,"        IN   \n");//輸入指令
	fprintf(fout,"        STI   %d\n",address);//指令
	fscanf(fp,"%s %s\n",&token,&token1);
	printf("%s %s\n",token,token1);
	if (strcmp(token,";"))  return(es=4);  //少分號
	fscanf(fp,"%s %s\n",&token,&token1);
	printf("%s %s\n",token,token1);
	return(es);
}

//<compound_stat>::={<statement_list>} 
int compound_stat(){   //復合語句函數
	int es=0;
	fscanf(fp,"%s %s\n",&token,&token1);
	printf("%s %s\n",token,token1);
	es=statement_list();
	return(es);
}

//<expression_stat>::=<expression>;|;
int expression_stat()
{
	int es=0;
	if (strcmp(token,";")==0) 
	{
		fscanf(fp,"%s %s\n",&token,&token1);
		printf("%s %s\n",token,token1);
		return(es);
	}
	es=expression();
	if (es>0) return(es);
	if (strcmp(token,";")==0) 
	{
		fscanf(fp,"%s %s\n",&token,&token1);
		printf("%s %s\n",token,token1);
		return(es);
	} else
	{
		es=4;
		return(es);//少分號
	}
}

//<expression>::=ID↑n@LOOK↓n↑d@ASSIGN=<bool_expr>@STO↓d |<bool_expr>

int expression()
{
	int es=0,fileadd;
	char token2[20],token3[40];
	if (strcmp(token,"ID")==0)
	{   
		fileadd=ftell(fp);   //@ASSIGN記住當前文件位置
		fscanf(fp,"%s %s\n", &token2,&token3);
		printf("%s %s\n",token2,token3);
		if (strcmp(token2,"=")==0)  //'='
		{
			int address;
			es=lookup(token1,&address);
			if (es>0) return(es);
			fscanf(fp,"%s %s\n",&token,&token1);
			printf("%s %s\n",token,token1);
			es=bool_expr();
			if (es>0) return(es);
			fprintf(fout,"        STO %d\n",address);

		} else 
		{
			fseek(fp,fileadd,0); //若非'='則文件指針回到'='前的標識符
			printf("%s %s\n",token,token1);
			es=bool_expr();
			if (es>0) return(es);
		}
	}
	
	return(es);
}


//<bool_expr>::=<additive_expr>
//           |< additive_expr >(>|<|>=|<=|==|!=)< additive_expr >
/*
<bool_expr>::=<additive_expr>
|< additive_expr >><additive_expr>@GT
|< additive_expr ><<additive_expr>@LES
|< additive_expr >>=<additive_expr >@GE
|< additive_expr ><=< additive_expr >@LE
|< additive_expr >==< additive_expr >@EQ
|< additive_expr >!=< additive_expr >@NOTEQ
*/
int bool_expr()
{
	int es=0;
	es=additive_expr();
	if(es>0) return(es);
	if ( strcmp(token,">")==0 || strcmp(token,">=")==0
	   ||strcmp(token,"<")==0 || strcmp(token,"<=")==0
	   ||strcmp(token,"==")==0|| strcmp(token,"!=")==0)
	{
		char token2[20];
		strcpy(token2,token);//保存運算符
		fscanf(fp,"%s %s\n",&token,&token1);
		printf("%s %s\n",token,token1);
		es=additive_expr();
		if(es>0) return(es);
		if ( strcmp(token2,">")==0 ) fprintf(fout,"        GT\n");
		if ( strcmp(token2,">=")==0 ) fprintf(fout,"        GE\n");
		if ( strcmp(token2,"<")==0 ) fprintf(fout,"        LES\n");
		if ( strcmp(token2,"<=")==0 ) fprintf(fout,"        LE\n");
		if ( strcmp(token2,"==")==0 ) fprintf(fout,"        EQ\n");
		if ( strcmp(token2,"!=")==0 ) fprintf(fout,"        NOTEQ\n");
	}
	return(es);
}

//<additive_expr>::=<term>{(+|-)< term >} 
//< additive_expr>::=<term>{(+< term >@ADD |-<項>@SUB)}

int additive_expr()
{
	int es=0;
	es=term();
	if(es>0) return(es);
	while (strcmp(token,"+")==0 || strcmp(token,"-")==0)
	{
		char token2[20];
		strcpy(token2,token);
		fscanf(fp,"%s %s\n",&token,&token1);
		printf("%s %s\n",token,token1);
		es=term();
		if(es>0) return(es);
		if ( strcmp(token2,"+")==0 ) fprintf(fout,"        ADD\n");
		if ( strcmp(token2,"-")==0 ) fprintf(fout,"        SUB\n");
	}
	return(es);
}

//< term >::=<factor>{(*| /)< factor >} 
//< term >::=<factor>{(*< factor >@MULT | /< factor >@DIV)} 

int term()
{
	int es=0;
	es=factor();
	if(es>0) return(es);
	while (strcmp(token,"*")==0 || strcmp(token,"/")==0)
	{
		char token2[20];
		strcpy(token2,token);
		fscanf(fp,"%s %s\n",&token,&token1);
		printf("%s %s\n",token,token1);
		es=factor();
		if(es>0) return(es);
		if ( strcmp(token2,"*")==0 ) fprintf(fout,"        MULT\n");
		if ( strcmp(token2,"/")==0 ) fprintf(fout,"        DIV\n");
	}
	return(es);
}

//< factor >::=(<additive_expr>)| ID|NUM
//< factor >::=(< expression >)| ID↑n@LOOK↓n↑d@LOAD↓d |NUM↑i@LOADI↓i

int factor()
{
	int es=0;
	
	if (strcmp(token,"(")==0)  
	{
		fscanf(fp,"%s %s\n",&token,&token1);
		printf("%s %s\n",token,token1);
		es=expression();
		if (es>0) return(es);
		if (strcmp(token,")"))  return(es=6); //少右括號
		fscanf(fp,"%s %s\n",&token,&token1);
		printf("%s %s\n",token,token1);
	} else
	{
		
		if (strcmp(token,"ID")==0)
		{
			int address;
			es=lookup(token1,&address);//查符號表,獲取變量地址
			if (es>0) return(es);//變量沒聲明
			fprintf(fout,"        LOAD %d\n",address);
			fscanf(fp,"%s %s\n",&token,&token1);
			printf("%s %s\n",token,token1);
			return(es);
		} 
		if (strcmp(token,"NUM")==0)
		{
			fprintf(fout,"        LOADI %s\n",token1);
			fscanf(fp,"%s %s\n",&token,&token1);
			printf("%s %s\n",token,token1);
			return(es);
		}else
		{
			es=7;//缺少操作數
			return(es);
		}
	}
	return(es);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲在线视频一区| 亚洲国产日韩精品| 欧美日韩午夜在线视频| 久久99九九99精品| 亚洲免费三区一区二区| 日韩欧美一区中文| 色综合久久九月婷婷色综合| 久久超级碰视频| 一区二区三区精密机械公司| 久久久国产精品午夜一区ai换脸| 在线亚洲高清视频| 成人av资源网站| 久久精品国产精品亚洲精品| 一区二区欧美国产| 国产精品国产三级国产aⅴ无密码| 欧美一区二区三区在线电影 | 日本不卡一区二区三区| 亚洲欧洲另类国产综合| 久久综合九色欧美综合狠狠| 欧美精品vⅰdeose4hd| 91麻豆产精品久久久久久 | 色综合久久综合网97色综合| 国产一区二区在线观看免费| 欧美a级一区二区| 亚洲动漫第一页| 亚洲少妇中出一区| 国产精品麻豆视频| 国产欧美日韩激情| 2021久久国产精品不只是精品| 欧美精品在线视频| 欧美色大人视频| 欧美亚洲图片小说| 色一情一乱一乱一91av| 99综合电影在线视频| 福利视频网站一区二区三区| 国产乱码精品一区二区三区忘忧草 | 欧美艳星brazzers| 色婷婷亚洲精品| 色综合中文综合网| 国产精品一区二区免费不卡| 看片的网站亚洲| 久久机这里只有精品| 麻豆国产精品一区二区三区| 热久久免费视频| 日韩国产一二三区| 蜜桃av一区二区在线观看| 日本怡春院一区二区| 日本午夜精品一区二区三区电影 | 久久av老司机精品网站导航| 另类欧美日韩国产在线| 精品一区二区在线视频| 精品一区二区三区久久| 国产麻豆精品95视频| 国产高清精品在线| 成人毛片老司机大片| 97精品久久久久中文字幕| 91色综合久久久久婷婷| 欧美亚洲丝袜传媒另类| 91精品婷婷国产综合久久性色 | 成熟亚洲日本毛茸茸凸凹| 成人av资源站| 欧美伊人久久久久久久久影院| 69堂国产成人免费视频| 日韩女优毛片在线| 国产日韩视频一区二区三区| 国产精品天美传媒| 亚洲综合图片区| 日韩电影免费在线| 国产一区二区精品在线观看| 成人av片在线观看| 欧亚一区二区三区| 精品少妇一区二区三区视频免付费| 精品1区2区在线观看| 国产精品国产三级国产三级人妇| 亚洲一区在线观看视频| 久99久精品视频免费观看| 成人精品免费视频| 欧美日韩在线播放三区四区| 精品国内片67194| 亚洲欧美在线aaa| 亚洲图片欧美一区| 国产一区二区三区精品视频 | 日韩精品一区二区三区swag | 中文字幕巨乱亚洲| 天堂蜜桃91精品| 国产精品夜夜爽| 欧美日韩五月天| 久久久久成人黄色影片| 亚洲美女区一区| 精品在线免费视频| 欧美性色综合网| 久久青草欧美一区二区三区| 亚洲一区视频在线| 国产精品一区在线| 欧美日韩一级黄| 国产精品免费丝袜| 日本在线不卡视频| 色婷婷激情综合| 国产亚洲一区二区在线观看| 亚洲电影你懂得| 播五月开心婷婷综合| 欧美成人精品福利| 亚洲一区二区三区四区五区黄| 国产一区二区不卡在线| 欧美日韩一区二区三区在线| 国产精品欧美一级免费| 麻豆国产一区二区| 欧美日本一区二区| 亚洲精品亚洲人成人网在线播放| 国产精品一级黄| 精品久久人人做人人爽| 午夜精品一区二区三区免费视频| eeuss国产一区二区三区| 欧美电影免费提供在线观看| 亚洲国产sm捆绑调教视频 | 天天亚洲美女在线视频| 99re在线精品| 欧美国产激情一区二区三区蜜月| 日本系列欧美系列| 欧美久久免费观看| 一区二区三区中文字幕在线观看| 成人亚洲一区二区一| 久久精品无码一区二区三区| 开心九九激情九九欧美日韩精美视频电影 | 亚洲天堂网中文字| 国产99久久久国产精品| 26uuu精品一区二区三区四区在线| 天堂午夜影视日韩欧美一区二区| 色嗨嗨av一区二区三区| 亚洲丝袜自拍清纯另类| 成人h动漫精品一区二区 | 亚洲va韩国va欧美va| 91精品福利视频| 亚洲欧美电影一区二区| 91视频免费播放| 亚洲色图20p| 色婷婷狠狠综合| 亚洲精品免费播放| 色婷婷综合久久久| 亚洲综合色网站| 欧美亚洲禁片免费| 亚洲v中文字幕| 88在线观看91蜜桃国自产| 天天av天天翘天天综合网| 欧美日韩国产小视频在线观看| 亚洲高清三级视频| 欧美一区午夜精品| 精品一区中文字幕| 国产婷婷色一区二区三区| 国产69精品久久久久毛片| 国产精品素人视频| 色呦呦网站一区| 日日夜夜精品视频免费| 欧美一区二区三区免费| 黄一区二区三区| 国产精品网站在线播放| 色综合天天性综合| 午夜精品福利一区二区三区av | 国产精品久久久99| 91免费看`日韩一区二区| 一区二区三区中文字幕精品精品| 欧美日韩高清在线播放| 免费视频最近日韩| 久久久精品免费网站| 白白色亚洲国产精品| 亚洲狠狠爱一区二区三区| 在线综合视频播放| 国产一区二区三区免费| 亚洲欧美国产77777| 日韩午夜三级在线| 国产a视频精品免费观看| 亚洲免费资源在线播放| 日韩午夜中文字幕| 99精品视频在线免费观看| 香蕉乱码成人久久天堂爱免费| 日韩精品一区二区三区视频| 99国产欧美另类久久久精品| 五月婷婷激情综合| 国产天堂亚洲国产碰碰| 欧美视频一区在线观看| 国产米奇在线777精品观看| 亚洲人成人一区二区在线观看 | 亚洲三级免费观看| 91精品国产综合久久香蕉的特点| 国产在线不卡一卡二卡三卡四卡| 亚洲欧洲成人自拍| 日韩欧美国产电影| 99re视频精品| 精品一区二区成人精品| 洋洋av久久久久久久一区| 欧美成人女星排行榜| 91麻豆精品秘密| 国产精品综合二区| 香蕉影视欧美成人| 国产精品久久久久久久久久久免费看 | av一区二区久久| 久久激五月天综合精品| 夜夜爽夜夜爽精品视频| 国产亚洲精品7777| 日韩一区二区影院|