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

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

?? subr.c

?? 編譯原理基礎
?? C
字號:
/* subr.c *//* * Supporting subroutines for the menu generation  * language (MGL) * * Tony Mason * November 1988 * Completed by John Levine, August 1992 *//* includes */#include <stdio.h>#include <stdlib.h>#include <string.h>#include "mglyac.h"#include "mgl-code"              /* contains definitions of 				  * skeleton file to be built */extern FILE *yyin, *yyout;/* imports */extern int screen_done;extern char *cmd_str, *act_str,*item_str;/* exports *//* local */static char current_screen[100]; /* reasonable? */static int done_start_init;static int done_end_init;static int current_line;struct item {	char           *desc;         /* item description */	char           *cmd;          /* command */	int            action;        /* action to take */	char           *act_str;      /* action operation */	int            attribute;     /* visible/invisible */	struct item    *next;         /* next member of list */} *item_list, *last_item;/* macros */#define SCREEN_SIZE 80void cfree(char *);	/* free if not null *//* code *//* * start_screen: * This routine begins preparation of the screen.  It  * writes the preamble and modifies the global state  * variable screen_done to show that a screen is in  * progress (thus, if a screen is in progress when EOF  * is seen, an appropriate error message can be given). */start_screen(char *name)  /* name of screen to create */{	long time(),tm = time((long *)0);	char *ctime();	if(!done_start_init)	{		fprintf(yyout, "/*\n * Generated by MGL: %s */\n\n",		    ctime(&tm));		dump_data(screen_init);		done_start_init = 1;	}	if(check_name(name) == 0)		warning("Reuse of name",name);	fprintf(yyout, "/* screen %s */\n", name);	fprintf(yyout, "menu_%s()\n{\n",name);	fprintf(yyout, "\textern struct item menu_%s_items[];\n\n",name);	fprintf(yyout, "\tif(!init) menu_init();\n\n");	fprintf(yyout, "\tclear();\n\trefresh();\n");	if(strlen(name) > sizeof current_screen)		warning("Screen name is larger than buffer",(char *)0);	strncpy(current_screen, name, sizeof(current_screen) - 1);	screen_done = 0;	current_line = 0;	return 0;}/* * add_title: * Add centered text to screen code. */add_title(line)char *line;{	int length = strlen(line);	int space = (SCREEN_SIZE - length) / 2;	fprintf(yyout, "\tmove(%d,%d);\n",current_line, space);	current_line++;	fprintf(yyout, "\taddstr(\"%s\");\n",line);	fprintf(yyout, "\trefresh();\n");}/* * add_line: * Add a line to the actions table.  It will be written  * out after all lines have been added.  Note that some  * of the information is in global variables. */add_line(action, attrib)int action, attrib;{	struct item *new;	new = (struct item *)malloc(sizeof(struct item));	if(!item_list)	{	/* first item */		item_list = last_item = new;	}	else	{	/* already items on the list */		last_item->next = new;		last_item = new;	}	new->next = NULL;  /* mark end of list */	new->desc = item_str;	new->cmd = cmd_str;	new->action = action;	switch(action)	{	case EXECUTE:		new->act_str = act_str;		break;	case MENU:		new->act_str = act_str;		break;	default:		new->act_str = 0;		break;	}	new->attribute = attrib;}/* * end_screen: * Finish screen, print out postamble. */end_screen(char *name){	fprintf(yyout, "\tmenu_runtime(menu_%s_items);\n",name);	if(strcmp(current_screen,name) != 0)	{		warning("name mismatch at end of screen", 		    current_screen);	}	fprintf(yyout, "}\n");	fprintf(yyout, "/* end %s */\n",current_screen);	process_items();	/* write initialization code out to file */	if(!done_end_init)	{		done_end_init = 1;		dump_data(menu_init);	}	current_screen[0] = '\0';	/* no current screen */	screen_done = 1;	return 0;}/* * process_items: * Walk the list of menu items and write them to an  * external initialized array.  Also defines the symbolic  * constant used for the run-time support module (which  * is below this table). */process_items(){	int cnt = 0;	struct item *ptr;	if(item_list == 0)		return; /* nothing to do */	fprintf(yyout, "struct item menu_%s_items[]={\n",current_screen);	ptr = item_list;	/* climb through the list */	while(ptr)	{		struct item *optr;		if(ptr->action == MENU)			fprintf(yyout, "{\"%s\",\"%s\",%d,\"\",%s,%d},\n",			    ptr->desc,ptr->cmd, ptr->action,			    ptr->act_str,ptr->attribute);		else			fprintf(yyout, "{\"%s\",\"%s\",%d,\"%s\",0,%d},\n",			    ptr->desc,ptr->cmd, ptr->action,			    ptr->act_str ? ptr->act_str : "",			    ptr->attribute);		cfree(ptr->desc);		cfree(ptr->cmd);		cfree(ptr->act_str);		optr = ptr;		ptr = ptr->next;		free(optr);		cnt++;	}	fprintf(yyout, "{(char *)0, (char *)0, 0, (char *)0, 0, 0},\n");	fprintf(yyout, "};\n\n");	item_list = 0;	/* next the run-time module that does all the "work" */;}/* * This routine takes a null-terminated list of strings  * and prints them on the standard out.  Its sole purpose  * in life is to dump the big static arrays making up the  * runtime code for the menus generated. */dump_data(array)char **array;{	while(*array)		fprintf(yyout, "%s\n",*array++);}/* * this routine writes out the run-time support */end_file(){	dump_data(menu_runtime);}/* * Check a name to see if it has already been used.  If  * not, return 1; otherwise, return 0.  This routine also  * squirrels away the name for future reference.  Note  * that this routine is purely dynamic.  It would be  * easier to just set up a static array, but less flexible. */check_name(name)char *name;{	static char **names = 0;	static name_count = 0;	char **ptr,*newstr;	if(!names)	{		names = (char **)malloc(sizeof(char *));		*names = 0;	}	ptr = names;	while(*ptr)	{		if(strcmp(name,*ptr++) == 0) return 0;	}	/* not in use */	name_count++;	names = (char **)realloc(names, (name_count+1) * sizeof(char *));	names[name_count] = 0;	newstr = strdup(name);	names[name_count-1] = newstr;	return 1;}voidcfree(char *p){	if(p)		free(p);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩三区在线观看| 在线免费观看日韩欧美| 成人av网站免费| 欧美日韩高清影院| 欧美激情资源网| 亚洲一区视频在线| 丝袜美腿亚洲色图| 精品影视av免费| 激情综合网av| 91同城在线观看| 欧美精品一区二区精品网| 国产视频一区在线播放| 亚洲精品视频在线观看网站| 天天av天天翘天天综合网 | 久久精品国产网站| 高清不卡一区二区| 91麻豆精品国产91久久久| 国产亚洲一二三区| 午夜亚洲国产au精品一区二区| 国产美女在线观看一区| 4438亚洲最大| 亚洲成人激情社区| av一二三不卡影片| 日韩欧美精品在线视频| 午夜精品久久久久久不卡8050| 91亚洲永久精品| 中文字幕一区二区日韩精品绯色| 精油按摩中文字幕久久| 欧美日韩一区二区三区四区| 中文字幕一区二区三区色视频| 奇米精品一区二区三区在线观看一| 欧洲日韩一区二区三区| 亚洲免费视频成人| 日本韩国欧美一区| 亚洲欧美国产三级| 色综合久久88色综合天天6| 亚洲图片激情小说| 99re66热这里只有精品3直播| 久久伊人中文字幕| 国产成人午夜99999| 国产欧美一区二区三区沐欲 | 在线观看91精品国产麻豆| 亚洲一二三四区不卡| 欧美熟乱第一页| 日韩影院精彩在线| 日韩欧美www| 国产精品白丝jk白祙喷水网站| 欧美一区二区三区日韩视频| 久草中文综合在线| 亚洲私人黄色宅男| 色欧美88888久久久久久影院| 欧美国产综合一区二区| 国产成人在线看| 精品国产乱码久久| 国产精品18久久久久| 2022国产精品视频| aa级大片欧美| 另类成人小视频在线| 亚洲人成网站色在线观看| 欧美在线免费观看亚洲| 亚洲国产精品久久久久秋霞影院| 精品卡一卡二卡三卡四在线| 国产一区二区成人久久免费影院 | 最近日韩中文字幕| 欧美无砖砖区免费| 成人在线综合网| 全国精品久久少妇| 午夜精品久久久久影视| 国产精品国产三级国产aⅴ中文| 欧美三级韩国三级日本三斤| av一区二区久久| 福利视频网站一区二区三区| 久久91精品久久久久久秒播| 天堂成人免费av电影一区| 亚洲曰韩产成在线| 国产亚洲欧美日韩日本| 欧美一区二区免费视频| 欧美在线|欧美| 色猫猫国产区一区二在线视频| 国产在线精品一区二区三区不卡 | 色素色在线综合| 国产精品亚洲专一区二区三区 | 在线观看亚洲精品视频| 国产伦精品一区二区三区免费迷 | 欧美一区二区在线不卡| 欧美性色aⅴ视频一区日韩精品| 蜜桃久久久久久久| 麻豆成人免费电影| 亚洲h动漫在线| 午夜免费欧美电影| 美国欧美日韩国产在线播放| 免费观看日韩电影| 国产成人午夜高潮毛片| 91蜜桃婷婷狠狠久久综合9色| 欧美第一区第二区| 国产肉丝袜一区二区| 成人免费在线视频观看| 亚洲成人先锋电影| 国产福利一区在线| 欧美三级中文字幕| 国产日产欧产精品推荐色| 亚洲日本中文字幕区| 亚洲国产成人av好男人在线观看| 秋霞影院一区二区| 在线免费观看一区| 国产精品―色哟哟| 麻豆精品国产91久久久久久| 欧美亚洲国产一区在线观看网站| 国产日韩高清在线| 全部av―极品视觉盛宴亚洲| 成人深夜在线观看| 欧美影院一区二区| 久久精品人人做人人综合| 香蕉成人伊视频在线观看| 国产综合久久久久久鬼色| 日本精品免费观看高清观看| 欧美白人最猛性xxxxx69交| 亚洲福利一二三区| 成人小视频在线| 日本一区二区三区dvd视频在线| 久久er99精品| 91精品在线免费观看| 石原莉奈在线亚洲三区| 欧美精品在线观看播放| 亚洲综合丁香婷婷六月香| 大美女一区二区三区| 国产欧美日韩精品一区| 玖玖九九国产精品| 日韩女优av电影| 日韩中文字幕91| 欧美一级理论片| 久久99久久99小草精品免视看| 精品福利二区三区| 国产乱人伦偷精品视频免下载| 欧美日韩成人综合| 日产欧产美韩系列久久99| 日韩欧美一区二区不卡| 成人av午夜影院| 亚洲第一av色| 久久久久国产精品厨房| 一本一道久久a久久精品| 欧美a级一区二区| 国产精品高潮呻吟| 日韩免费在线观看| 国产精品一区二区在线观看不卡| 中文字幕日韩欧美一区二区三区| 一本到不卡精品视频在线观看| 五月天婷婷综合| 中文字幕欧美三区| 7799精品视频| 岛国精品一区二区| 日韩av一区二区三区| 一区视频在线播放| 欧美日韩精品三区| 成人激情黄色小说| 国产精品99久久久久久有的能看| 中文字幕第一区综合| 日韩精品一区二区三区视频播放 | 欧美一级片在线| 91视频免费播放| av不卡免费在线观看| 精品一区二区三区免费毛片爱| 亚洲视频小说图片| 亚洲国产高清不卡| 欧美一卡二卡在线| 欧美日韩国产首页| 欧美男同性恋视频网站| 亚洲欧美日韩综合aⅴ视频| 日韩欧美一级精品久久| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲国产成人高清精品| 色噜噜久久综合| 中文字幕中文字幕中文字幕亚洲无线| 奇米影视在线99精品| 欧美一区二区久久久| 日韩国产欧美在线播放| 91高清视频免费看| 亚洲高清免费观看高清完整版在线观看| 不卡区在线中文字幕| ...av二区三区久久精品| 色综合中文字幕国产| 亚洲高清三级视频| 日韩欧美专区在线| 极品尤物av久久免费看| 亚洲国产成人在线| 色综合久久久久网| 日韩在线a电影| 日韩欧美在线影院| 国产成人综合亚洲91猫咪| 国产精品美女一区二区| 欧美丝袜自拍制服另类| 日本91福利区| 国产精品视频免费看| 欧美亚洲动漫精品| 美女视频黄频大全不卡视频在线播放| 久久久久久久久蜜桃| 色综合天天综合给合国产| 日韩精品一二三区| 国产欧美一区二区三区鸳鸯浴| 色噜噜夜夜夜综合网|