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

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

?? main.c

?? 參照清華大學《編譯原理》寫的cmm語言詞法分析程序
?? C
字號:
/*編譯和運行環境 * gcc4.3.2 * Archlinux-2.6.26 * 使用方法 * 命令行輸入 gcc main.c && ./a.out Test.cmm*/#include "cmm.h"int main (int argc, char * argv[]) {	fname = argv[1];	fin = fopen(fname,"r");		/* 只讀打開文件 */	if (fin) {		init();		while (getsym() != -1) {			printsym(6);		}	}	else{		printf("Can't open file! \n");	}	return 0;}void init() {	int i;	/* 初始化單字符的Token值 */	for (i = 0; i <= 255; i++) {		ssym[i] = nul;	}	ssym['+'] = plus;	ssym['-'] = minus;	ssym['*'] = times;	ssym['/'] = slash;	ssym['('] = lparen;	ssym[')'] = rparen;	ssym['['] = lbracket;	ssym[']'] = rbracket;	ssym['{'] = lbrace;	ssym['}'] = rbrace;	ssym['='] = assign;	ssym[','] = comma;	ssym['.'] = period;	ssym[';'] = semicolon;		/* 設置保留字的名字,按照字母順序,便于折半查找 */	strcpy(&(word[0][0]), "const");	strcpy(&(word[1][0]), "else");	strcpy(&(word[2][0]), "if");	strcpy(&(word[3][0]), "int");	strcpy(&(word[4][0]), "read");	strcpy(&(word[5][0]), "real");	strcpy(&(word[6][0]), "while");	strcpy(&(word[7][0]), "write");		/* 設置保留字對應的symbol */	wsym[0] = constsym;	wsym[1] = elsesym;	wsym[2] = ifsym;	wsym[3] = intsym;	wsym[4] = readsym;	wsym[5] =  realsym;	wsym[6] =  whilesym;	wsym[7] =  writesym;}/* * 漏掉空格,讀取一個字符 * 每次讀一行,存入line緩沖區,line被getsym取空后再讀一行 * 被函數getsym調用 */int getch() {	if ( cc == ll ) {		/* cc == ll說明當前行已經分析完成,或者開始分析第一行 */		if ( feof(fin) ) {	/* 文件結束 */			printf("program incomplete");			return -1;		}		ll = 0;		cc = 0;		ch = ' ';		/* 清空上一行余留的字符 */				memset(line,0,sizeof(line));		while (ch != 10) {	/* 碰到換行符停止循環 */			if (EOF == fscanf(fin,"%c",&ch)) {		/* 文件結束 *///				printf("文件結束了!此時ch=%d,ll=%d,cc=%d,linenum=%d\n",ch,ll,cc,linenum);				return -1;			}			line[ll] = ch;			ll++;		}		linenum++;		printline();//		printf("while循環結束后ch=%d,ll=%d,cc=%d,linenum=%d,line=%s\n",ch,ll,cc,linenum,line);	}	ch = line[cc];	cc++;//	printf("最后ch=%d,ll=%d,cc=%d,linenum=%d\n",ch,ll,cc,linenum);	return 0;}/* 詞法分析,獲取下一個Token */int getsym() {	int i, j, k;	while ( ch == ' ' || ch == 10 || ch == 9) {		/* 忽略空格,換行符和TAB */		getchdo;		/* 忽略后獲取下個字符 */	}	if (ch >= 'a' && ch <= 'z') {			/* 檢測標識符和關鍵字 */		k = 0;		do {			if (k < al) {				a[k] = ch;				k++;			}			getchdo;		}while (ch >= 'a' && ch <= 'z' || ch >= '0' && ch <= '9');		a[k] = 0;		strcpy(id,a);		strcpy(value,a);		i = 0;		j = norw - 1;		while (i <= j) {			k = (i+j)/2;			if (strcmp(id,word[k]) < 0) {		/* word[k] 表示 word[k][0]的地址 */				j = k-1;			}			else if (strcmp(id,word[k]) > 0) {				i = k+1;			}			else {				break;			}		}		if (i > j) {			sym = ident;		/* 設置當前符號為ident */		}		else {			sym = wsym[k];		/* 設置當前符號為某保留字的symbol */		}	}	else {		if (ch >= '0' && ch <= '9') {		/* 檢測數字 */			k = 0;					/* 當前number的位數 */			num = 0;			sym = number;			do {					/* 繼續檢查后面的數字 */				if (ch == '.') {	/* 處理小數部分 */					sym = real;					realvalue = num;					e = 0.1;					k++;					getchdo;					while (ch >= '0' && ch <= '9') {						int ich = ch-'0';						realvalue += e*ich;						e*=0.1;						getchdo;					}				}				else {			/* 處理整數部分 */					num=10*num+ch-'0';					k++;					getchdo;				}			} while(ch >= '0' && ch <= '9' || ch == '.');			k--;			if( k > nmax){				printf("number too long!\n");				exit(0);			}		}		else {			if (ch == '=') {		/* 檢測賦值符號和等于號 */				getchdo;				if (ch == '=') {					sym = eql;					getchdo;				}				else {					sym = assign;				}			}			else {				if (ch == '<') {	/* 檢測小于號和小于等于號*/					getchdo;					if (ch == '=') {						sym = leq;						getchdo;					}					else {						sym = lss;					}				}				else {					if (ch == '>') {	/* 檢測大于號和大于等于號*/						getchdo;						if (ch == '=') {							sym = geq;							getchdo;						}						else {							sym = gtr;						}					}					else {						if (ch == '!') {		/* 檢測不等號 */							getchdo;							if (ch == '=') {								sym = neq;								getchdo;							}							else {								sym = ssym['!'];							}						}						else {		/* 當前符號不滿足上述條件時,全部按照單字符號處理 */							sym = ssym[ch];							getchdo;						}					}				}			}		}	}	return 0;	}/* 打印當前Token的值 */void printsym (int offset) {	int i;	if (sym != 0) {		for (i = 0; i< offset; i++) {			printf(" ");		}		switch (sym) {			case ident : 				printf("identifier : %s\n",value);break;			case number : 				printf("number : %d\n",num);break;			case real : 				printf("real : %f\n",realvalue);break;			case plus : 				printf("plus : +\n");break;			case minus : 				printf("minus : -\n");break;			case times : 				printf("times : *\n");break;			case slash : 				printf("slash : /\n");break;			case eql : 				printf("equal : ==\n");break;			case neq : 				printf("not equal : !=\n");break;			case lss : 				printf("less than : <\n");break;			case leq : 				printf("less equal : <=\n");break;			case gtr : 				printf("greater than : >=\n");break;			case geq : 				printf("greater equal : >=\n");break;			case lparen : 				printf("lparen : (\n");break;			case assign : 				printf("assign : =\n");break;			case rparen : 				printf("rparen : )\n");break;			case lbracket : 				printf("lbracket : [\n");break;			case rbracket : 				printf("rbracket : ]\n");break;			case lbrace : 				printf("lbrace : {\n");break;			case rbrace : 				printf("rbrace : }\n");break;			case comma : 				printf("comma : ,\n");break;			case semicolon : 				printf("semicolon : ;\n");break;			case period : 				printf("period : .\n");break;			case constsym : 				printf("keyword : const\n");break;			case elsesym : 				printf("keyword : else\n");break;			case ifsym : 				printf("keyword : if\n");break;			case intsym : 				printf("keyword : int\n");break;			case readsym : 				printf("keyword : read\n");break;			case realsym : 				printf("keyword : real\n");break;			case whilesym : 				printf("keyword : while\n");break;			case writesym : 				printf("keyword : write\n");break;			}	}}/* 打印當前行 */void printline () {	int i;	printf(" %d: ",linenum);	for (i = 0; i < sizeof(line); i++) {		if (line[i] != 32 && line[i] != 10 && line[i] != 9) {			break;		}	}	for (i;i < sizeof(line) && line[i] != '\n'; i++) {		printf("%c",line[i]);	}	printf("\n");}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜桃一区二区三区四区| 国产精品久久久久婷婷| 日韩精品乱码免费| 欧美理论电影在线| 日韩精品成人一区二区三区| 欧美一区二区久久久| 国产综合一区二区| 中文字幕中文字幕一区二区| 91香蕉视频在线| 香蕉久久一区二区不卡无毒影院 | 欧美变态tickle挠乳网站| 老司机免费视频一区二区| 精品国产凹凸成av人导航| 丁香婷婷综合色啪| 亚洲精品亚洲人成人网 | 欧美日韩国产高清一区二区三区 | 国产精品国产馆在线真实露脸| 成人美女视频在线看| 亚洲精品一二三| 91精品欧美久久久久久动漫| 极品少妇一区二区| ...xxx性欧美| 欧美久久久久久久久| 国产在线视频精品一区| 中文字幕五月欧美| 777a∨成人精品桃花网| 国产超碰在线一区| 午夜精品久久久久影视| 久久久精品免费观看| 91福利国产精品| 激情亚洲综合在线| 亚洲一级二级在线| 国产亚洲短视频| 欧美日韩高清一区| 粉嫩蜜臀av国产精品网站| 亚洲午夜视频在线观看| 精品国产乱码久久久久久闺蜜| www.视频一区| 看片的网站亚洲| 一二三区精品视频| 日本一不卡视频| 国产精品久久久久久久蜜臀| 欧美一区二区私人影院日本| av中文一区二区三区| 蜜桃久久久久久久| 一区二区三区四区激情| 国产亚洲一区二区三区| 在线播放亚洲一区| 日本高清不卡一区| 国产传媒欧美日韩成人| 日韩激情视频网站| 亚洲天堂免费在线观看视频| 久久久综合网站| 91精品国产综合久久福利| 97精品国产露脸对白| 国产精品综合二区| 美脚の诱脚舐め脚责91 | 欧美三级电影一区| 99天天综合性| 国产成人午夜片在线观看高清观看| 午夜视黄欧洲亚洲| 亚洲电影一级黄| 亚洲最新在线观看| 《视频一区视频二区| 日本一区二区三级电影在线观看 | 91精品国产综合久久精品app | 成人aaaa免费全部观看| 经典三级视频一区| 麻豆精品久久久| 图片区日韩欧美亚洲| 亚洲一区二区av在线| 亚洲国产综合人成综合网站| 1024亚洲合集| 亚洲精品国产a久久久久久| 国产精品久久久久久久裸模 | 粗大黑人巨茎大战欧美成人| 国产一区激情在线| 精品一二线国产| 极品少妇xxxx偷拍精品少妇| 看电影不卡的网站| 国内精品国产成人| 国产不卡视频一区二区三区| 粉嫩嫩av羞羞动漫久久久| 国产高清精品网站| 9色porny自拍视频一区二区| 91小视频在线| 欧美日韩一区中文字幕| 欧美精品在线观看播放| 宅男噜噜噜66一区二区66| 666欧美在线视频| 欧美一级理论性理论a| 亚洲精品一区二区三区四区高清| 欧美成人精精品一区二区频| 久久久一区二区三区| 中文字幕不卡一区| 亚洲一区二区三区四区五区黄| 亚洲国产一二三| 麻豆91在线看| 成人在线综合网站| 色诱视频网站一区| 91精品国产91综合久久蜜臀| 欧美va天堂va视频va在线| 国产三级精品三级在线专区| 成人欧美一区二区三区白人 | 欧美高清视频不卡网| 日韩女优电影在线观看| 国产亚洲视频系列| 一区二区三区不卡视频 | 一色屋精品亚洲香蕉网站| 亚洲午夜一区二区三区| 精品在线一区二区| voyeur盗摄精品| 9191精品国产综合久久久久久| 欧美mv日韩mv亚洲| 亚洲欧洲99久久| 日韩制服丝袜av| 高清不卡在线观看av| 欧美色精品天天在线观看视频| 日韩欧美123| 国产成人精品三级麻豆| 欧美中文字幕一区| 精品国产制服丝袜高跟| 一区二区三区四区在线免费观看| 麻豆国产一区二区| 91视频在线观看| 日韩欧美成人激情| 亚洲精品老司机| 国产福利一区二区三区在线视频| 91福利视频网站| 欧美国产精品一区二区三区| 午夜视频久久久久久| 成人a级免费电影| 日韩一区二区三区电影在线观看| 国产精品福利影院| 精品综合久久久久久8888| 色视频一区二区| 国产亚洲婷婷免费| 蜜桃视频在线一区| 91搞黄在线观看| 国产精品久久久久久福利一牛影视| 男女激情视频一区| 91福利国产精品| 亚洲欧洲成人精品av97| 国产乱国产乱300精品| 7777女厕盗摄久久久| 亚洲综合视频网| 成人av资源在线观看| 2017欧美狠狠色| 麻豆国产精品一区二区三区| 欧美午夜片在线观看| 亚洲青青青在线视频| 国产+成+人+亚洲欧洲自线| 精品日韩在线观看| 日韩国产高清在线| 欧美精品视频www在线观看| 亚洲码国产岛国毛片在线| 成人福利在线看| 国产精品久久久久久久久久免费看 | 成人亚洲一区二区一| 久久影音资源网| 国产资源在线一区| 欧美zozo另类异族| 精品一区二区三区视频在线观看| 欧美日韩国产综合一区二区三区| 亚洲欧美激情视频在线观看一区二区三区| 国产精品一区二区免费不卡| 欧美精品一区二区在线观看| 久久成人18免费观看| 欧美一级夜夜爽| 日本免费新一区视频| 欧美一级日韩不卡播放免费| 日韩成人一级片| 日韩三级免费观看| 看国产成人h片视频| 久久久久久久免费视频了| 国产精品自在在线| 亚洲国产精品二十页| caoporn国产一区二区| 亚洲欧美视频在线观看| 91久久人澡人人添人人爽欧美| 一区二区三区在线不卡| 欧美日韩国产高清一区二区三区 | 日韩毛片高清在线播放| 99久久99久久精品免费看蜜桃| 亚洲天堂a在线| 欧美怡红院视频| 日韩高清不卡在线| 精品av久久707| 成人一区二区视频| 亚洲精品久久久久久国产精华液| 在线免费观看视频一区| 日韩黄色小视频| 久久久三级国产网站| 99精品桃花视频在线观看| 亚洲一区二区在线视频| 欧美一区二区三区在线视频| 久久99国产精品久久99果冻传媒| 国产亚洲成aⅴ人片在线观看 | 国产一区二区在线观看视频| 国产片一区二区|