⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sqltext.c

📁 編譯器的相關東西原始碼
💻 C
字号:
/* *	Text handling routines for simple embedded SQL */#include <stdio.h>#include <string.h>extern FILE *yyout;	/* lex output file */char save_buf[2000];	/* buffer for SQL command */char *savebp;		/* current buffer pointer */#define NPARAM	20	/* max params per function */char *varnames[NPARAM];	/* parameter names *//* start an embedded command after EXEC SQL */start_save(void){	savebp = save_buf;} /* start_save *//* save a SQL token */save_str(char *s){	strcpy(savebp, s);	savebp += strlen(s);} /* save_str *//* save a parameter reference */save_param(char *n){	int i;	char pbuf[10];	/* look up the variable name in the table */		for(i = 1; i < NPARAM; i++) {		if(!varnames[i]) {			/* not there, enter it */			varnames[i] = strdup(n);			break;		}		if(!strcmp(varnames[i],n))			break;	/* already present */	}	if(i >= NPARAM) {		yyerror("Too many parameter references");		exit(1);	}	/* save #n referece by variable number */	sprintf(pbuf, " #%d", i);	save_str(pbuf);} /* save_param *//* end of SQL command, now write it out */end_sql(void){	int i;	register char *cp;	savebp--;	/* back over the closing semicolon */	/* call exec_sql function */		fprintf(yyout, "exec_sql(\"");	/* write out saved buffer as a big C string	 * starting new lines as needed	 */		for(cp = save_buf, i = 20; cp < savebp; cp++, i++) {		if(i > 70) {	/* need new line */			fprintf(yyout, "\\\n");			i = 0;		}		putc(*cp, yyout);	}	putc('"', yyout);	/* pass address of every referenced variable */	for(i = 1; i < NPARAM; i++) {		if(!varnames[i])			break;		fprintf(yyout, ",\n\t&%s", varnames[i]);		free(varnames[i]);		varnames[i] = 0;	}	fprintf(yyout, ");\n");	/* return scanner to regular mode */	un_sql();} /* end_sql */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -