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

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

?? scan.l

?? PostgreSQL 8.1.4的源碼 適用于Linux下的開源數據庫系統
?? L
?? 第 1 頁 / 共 2 頁
字號:
				}<xq>{xqinside}  {					addlit(yytext, yyleng);				}<xq>{xqescape}  {					if (yytext[1] == '\'')					{						if (backslash_quote == BACKSLASH_QUOTE_OFF ||							(backslash_quote == BACKSLASH_QUOTE_SAFE_ENCODING &&							 PG_ENCODING_IS_CLIENT_ONLY(pg_get_client_encoding())))							ereport(ERROR,									(errcode(ERRCODE_NONSTANDARD_USE_OF_ESCAPE_CHARACTER),									 errmsg("unsafe use of \\' in a string literal"),									 errhint("Use '' to write quotes in strings. \\' is insecure in client-only encodings."),									 errposition(pg_err_position())));						if (warn_on_first_escape && escape_string_warning)							ereport(WARNING,									(errcode(ERRCODE_NONSTANDARD_USE_OF_ESCAPE_CHARACTER),									 errmsg("nonstandard use of \\' in a string literal"),									 errhint("Use '' to write quotes in strings, or use the escape string syntax (E'...')."),									 errposition(pg_err_position())));						warn_on_first_escape = false;	/* warn only once per string */					}					else if (yytext[1] == '\\')					{						if (warn_on_first_escape && escape_string_warning)							ereport(WARNING,									(errcode(ERRCODE_NONSTANDARD_USE_OF_ESCAPE_CHARACTER),									 errmsg("nonstandard use of \\\\ in a string literal"),									 errhint("Use the escape string syntax for backslashes, e.g., E'\\\\'."),									 errposition(pg_err_position())));						warn_on_first_escape = false;	/* warn only once per string */					}					else						check_escape_warning();					addlitchar(unescape_single_char(yytext[1]));				}<xq>{xqoctesc}  {					unsigned char c = strtoul(yytext+1, NULL, 8);					check_escape_warning();					addlitchar(c);				}<xq>{xqhexesc}  {					unsigned char c = strtoul(yytext+2, NULL, 16);					check_escape_warning();					addlitchar(c);				}<xq>{quotecontinue} {					/* ignore */				}<xq>.			{					/* This is only needed for \ just before EOF */					addlitchar(yytext[0]);				}<xq><<EOF>>		{ yyerror("unterminated quoted string"); }{dolqdelim}		{					token_start = yytext;					dolqstart = pstrdup(yytext);					BEGIN(xdolq);					startlit();				}{dolqfailed}	{					/* throw back all but the initial "$" */					yyless(1);					/* and treat it as {other} */					return yytext[0];				}<xdolq>{dolqdelim} {					if (strcmp(yytext, dolqstart) == 0)					{						pfree(dolqstart);						BEGIN(INITIAL);						yylval.str = litbufdup();						return SCONST;					}					else					{						/*						 * When we fail to match $...$ to dolqstart, transfer						 * the $... part to the output, but put back the final						 * $ for rescanning.  Consider $delim$...$junk$delim$						 */						addlit(yytext, yyleng-1);						yyless(yyleng-1);					}				}<xdolq>{dolqinside} {					addlit(yytext, yyleng);				}<xdolq>{dolqfailed} {					addlit(yytext, yyleng);				}<xdolq>.		{					/* This is only needed for $ inside the quoted text */					addlitchar(yytext[0]);				}<xdolq><<EOF>>	{ yyerror("unterminated dollar-quoted string"); }{xdstart}		{					token_start = yytext;					BEGIN(xd);					startlit();				}<xd>{xdstop}	{					char		   *ident;					BEGIN(INITIAL);					if (literallen == 0)						yyerror("zero-length delimited identifier");					ident = litbufdup();					if (literallen >= NAMEDATALEN)						truncate_identifier(ident, literallen, true);					yylval.str = ident;					return IDENT;				}<xd>{xddouble}	{					addlitchar('"');				}<xd>{xdinside}	{					addlit(yytext, yyleng);				}<xd><<EOF>>		{ yyerror("unterminated quoted identifier"); }{typecast}		{					return TYPECAST;				}{self}			{					return yytext[0];				}{operator}		{					/*					 * Check for embedded slash-star or dash-dash; those					 * are comment starts, so operator must stop there.					 * Note that slash-star or dash-dash at the first					 * character will match a prior rule, not this one.					 */					int		nchars = yyleng;					char   *slashstar = strstr(yytext, "/*");					char   *dashdash = strstr(yytext, "--");					if (slashstar && dashdash)					{						/* if both appear, take the first one */						if (slashstar > dashdash)							slashstar = dashdash;					}					else if (!slashstar)						slashstar = dashdash;					if (slashstar)						nchars = slashstar - yytext;					/*					 * For SQL compatibility, '+' and '-' cannot be the					 * last char of a multi-char operator unless the operator					 * contains chars that are not in SQL operators.					 * The idea is to lex '=-' as two operators, but not					 * to forbid operator names like '?-' that could not be					 * sequences of SQL operators.					 */					while (nchars > 1 &&						   (yytext[nchars-1] == '+' ||							yytext[nchars-1] == '-'))					{						int		ic;						for (ic = nchars-2; ic >= 0; ic--)						{							if (strchr("~!@#^&|`?%", yytext[ic]))								break;						}						if (ic >= 0)							break; /* found a char that makes it OK */						nchars--; /* else remove the +/-, and check again */					}					if (nchars < yyleng)					{						/* Strip the unwanted chars from the token */						yyless(nchars);						/*						 * If what we have left is only one char, and it's						 * one of the characters matching "self", then						 * return it as a character token the same way						 * that the "self" rule would have.						 */						if (nchars == 1 &&							strchr(",()[].;:+-*/%^<>=", yytext[0]))							return yytext[0];					}					/*					 * Complain if operator is too long.  Unlike the case					 * for identifiers, we make this an error not a notice-					 * and-truncate, because the odds are we are looking at					 * a syntactic mistake anyway.					 */					if (nchars >= NAMEDATALEN)						yyerror("operator too long");					/* Convert "!=" operator to "<>" for compatibility */					if (strcmp(yytext, "!=") == 0)						yylval.str = pstrdup("<>");					else						yylval.str = pstrdup(yytext);					return Op;				}{param}			{					yylval.ival = atol(yytext + 1);					return PARAM;				}{integer}		{					long val;					char* endptr;					errno = 0;					val = strtol(yytext, &endptr, 10);					if (*endptr != '\0' || errno == ERANGE#ifdef HAVE_LONG_INT_64						/* if long > 32 bits, check for overflow of int4 */						|| val != (long) ((int32) val)#endif						)					{						/* integer too large, treat it as a float */						yylval.str = pstrdup(yytext);						return FCONST;					}					yylval.ival = val;					return ICONST;				}{decimal}		{					yylval.str = pstrdup(yytext);					return FCONST;				}{real}			{					yylval.str = pstrdup(yytext);					return FCONST;				}{realfail1}		{					/*					 * throw back the [Ee], and treat as {decimal}.  Note					 * that it is possible the input is actually {integer},					 * but since this case will almost certainly lead to a					 * syntax error anyway, we don't bother to distinguish.					 */					yyless(yyleng-1);					yylval.str = pstrdup(yytext);					return FCONST;				}{realfail2}		{					/* throw back the [Ee][+-], and proceed as above */					yyless(yyleng-2);					yylval.str = pstrdup(yytext);					return FCONST;				}{identifier}	{					const ScanKeyword *keyword;					char		   *ident;					/* Is it a keyword? */					keyword = ScanKeywordLookup(yytext);					if (keyword != NULL)					{						yylval.keyword = keyword->name;						return keyword->value;					}					/*					 * No.  Convert the identifier to lower case, and truncate					 * if necessary.					 */					ident = downcase_truncate_identifier(yytext, yyleng, true);					yylval.str = ident;					return IDENT;				}{other}			{					return yytext[0];				}%%static intpg_err_position(void){	const char *loc = token_start ? token_start : yytext;	/* in multibyte encodings, return index in characters not bytes */	return pg_mbstrlen_with_len(scanbuf, loc - scanbuf) + 1;}voidyyerror(const char *message){	const char *loc = token_start ? token_start : yytext;	int			cursorpos = pg_err_position();	if (*loc == YY_END_OF_BUFFER_CHAR)	{		ereport(ERROR,				(errcode(ERRCODE_SYNTAX_ERROR),				 /* translator: %s is typically "syntax error" */				 errmsg("%s at end of input", _(message)),				 errposition(cursorpos)));	}	else	{		ereport(ERROR,				(errcode(ERRCODE_SYNTAX_ERROR),				 /* translator: first %s is typically "syntax error" */				 errmsg("%s at or near \"%s\"", _(message), loc),				 errposition(cursorpos)));	}}/* * Called before any actual parsing is done */voidscanner_init(const char *str){	Size	slen = strlen(str);	/*	 * Might be left over after ereport()	 */	if (YY_CURRENT_BUFFER)		yy_delete_buffer(YY_CURRENT_BUFFER);	/*	 * Make a scan buffer with special termination needed by flex.	 */	scanbuf = palloc(slen + 2);	memcpy(scanbuf, str, slen);	scanbuf[slen] = scanbuf[slen + 1] = YY_END_OF_BUFFER_CHAR;	scanbufhandle = yy_scan_buffer(scanbuf, slen + 2);	/* initialize literal buffer to a reasonable but expansible size */	literalalloc = 128;	literalbuf = (char *) palloc(literalalloc);	startlit();	BEGIN(INITIAL);}/* * Called after parsing is done to clean up after scanner_init() */voidscanner_finish(void){	yy_delete_buffer(scanbufhandle);	pfree(scanbuf);}static voidaddlit(char *ytext, int yleng){	/* enlarge buffer if needed */	if ((literallen+yleng) >= literalalloc)	{		do {			literalalloc *= 2;		} while ((literallen+yleng) >= literalalloc);		literalbuf = (char *) repalloc(literalbuf, literalalloc);	}	/* append new data, add trailing null */	memcpy(literalbuf+literallen, ytext, yleng);	literallen += yleng;	literalbuf[literallen] = '\0';}static voidaddlitchar(unsigned char ychar){	/* enlarge buffer if needed */	if ((literallen+1) >= literalalloc)	{		literalalloc *= 2;		literalbuf = (char *) repalloc(literalbuf, literalalloc);	}	/* append new data, add trailing null */	literalbuf[literallen] = ychar;	literallen += 1;	literalbuf[literallen] = '\0';}/* * One might be tempted to write pstrdup(literalbuf) instead of this, * but for long literals this is much faster because the length is * already known. */static char *litbufdup(void){	char *new;	new = palloc(literallen + 1);	memcpy(new, literalbuf, literallen+1);	return new;}unsigned charunescape_single_char(unsigned char c){	switch (c)	{		case 'b':			return '\b';		case 'f':			return '\f';		case 'n':			return '\n';		case 'r':			return '\r';		case 't':			return '\t';		default:			return c;	}}static voidcheck_escape_warning(void){	if (warn_on_first_escape && escape_string_warning)		ereport(WARNING,				(errcode(ERRCODE_NONSTANDARD_USE_OF_ESCAPE_CHARACTER),				 errmsg("nonstandard use of escape in a string literal"),				 errhint("Use the escape string syntax for escapes, e.g., E'\\r\\n'."),				 errposition(pg_err_position())));	warn_on_first_escape = false;	/* warn only once per string */}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
青青草精品视频| 国产欧美精品区一区二区三区 | 色综合久久久久综合体| 成人免费在线播放视频| 91视频在线看| 亚洲一区免费观看| 8x8x8国产精品| 久久国产欧美日韩精品| 久久久久国产精品麻豆 | 99国产精品国产精品久久| 亚洲图片你懂的| 欧美日韩国产高清一区二区三区| 青青青爽久久午夜综合久久午夜| 精品1区2区在线观看| 成a人片亚洲日本久久| 亚洲一区二区av在线| 日韩欧美成人午夜| 成人国产精品免费网站| 亚洲bt欧美bt精品777| 日韩欧美国产综合在线一区二区三区 | 亚洲黄色片在线观看| 91精品视频网| 波多野结衣亚洲| 青娱乐精品视频在线| 久久久不卡影院| 色悠悠久久综合| 久久爱www久久做| 中文字幕在线一区免费| 91精品国产综合久久婷婷香蕉| 国产精品自拍网站| 国产成都精品91一区二区三| 亚洲日本va午夜在线影院| 欧美精品色一区二区三区| 国产盗摄女厕一区二区三区| 亚洲成人在线网站| 国产欧美一区二区精品性| 欧美手机在线视频| 成人三级在线视频| 久久综合综合久久综合| 亚洲视频在线一区二区| 精品国产污污免费网站入口 | 一区二区三区四区在线播放| 精品国产一区二区在线观看| 欧美色国产精品| 国产 日韩 欧美大片| 蜜臀av性久久久久蜜臀aⅴ四虎| 中文字幕在线免费不卡| 欧美mv日韩mv国产网站| 欧美性感一区二区三区| 成人av在线播放网站| 久久99精品国产.久久久久久| 亚洲精品高清在线观看| 中文字幕av一区 二区| 日韩一二在线观看| 91成人国产精品| www.亚洲在线| 懂色av中文字幕一区二区三区| 美腿丝袜一区二区三区| 亚洲激情自拍视频| 中文字幕一区二区不卡| xfplay精品久久| 日韩你懂的电影在线观看| 7777精品伊人久久久大香线蕉的| 色综合久久久久| 99久久精品国产一区二区三区| 国产精品99久久久久久久vr| 寂寞少妇一区二区三区| 全部av―极品视觉盛宴亚洲| 亚洲成a人在线观看| 亚洲成人av电影在线| 亚洲一区在线免费观看| 亚洲最新视频在线观看| 亚洲激情综合网| 一级做a爱片久久| 亚洲免费在线视频| 亚洲人成人一区二区在线观看| 久久国产精品99久久久久久老狼| 亚洲一区二区在线播放相泽| 亚洲一级在线观看| 亚洲香肠在线观看| 亚洲午夜精品网| 午夜影院在线观看欧美| 亚洲第一搞黄网站| 日韩高清不卡一区二区三区| 免费美女久久99| 亚洲国产欧美另类丝袜| 在线成人av网站| 欧美一级在线视频| 日韩欧美中文字幕公布| 精品福利一区二区三区免费视频| 日韩精品一区二区三区四区 | 精品成人免费观看| 日韩欧美美女一区二区三区| 精品毛片乱码1区2区3区| 久久久精品国产99久久精品芒果| 日本一区二区三区dvd视频在线| 亚洲欧洲日韩av| 亚洲一区二区三区四区五区黄| 午夜精品免费在线| 久久99热这里只有精品| 国产一区二区导航在线播放| 国产a视频精品免费观看| 白白色 亚洲乱淫| 欧美日韩中文字幕一区| 精品美女被调教视频大全网站| 日本一区二区免费在线| 亚洲一区二区三区四区中文字幕| 男男视频亚洲欧美| 成人午夜视频福利| 欧美日韩精品欧美日韩精品一 | 国产日产亚洲精品系列| 国产精品美女久久久久久久| 一区二区三区日韩欧美精品| 日一区二区三区| 国产另类ts人妖一区二区| 色域天天综合网| 精品久久久久久综合日本欧美| 国产精品网曝门| 亚洲福利视频三区| 国产伦精品一区二区三区在线观看| 91视频观看视频| 日韩午夜av一区| 亚洲欧美一区二区三区久本道91 | 成人丝袜视频网| 在线视频中文字幕一区二区| 久久综合九色综合97婷婷| 亚洲激情男女视频| 国产一区二区不卡| 欧日韩精品视频| 久久老女人爱爱| 婷婷亚洲久悠悠色悠在线播放| 成人h精品动漫一区二区三区| 欧美伦理电影网| 中文字幕在线不卡| 另类小说综合欧美亚洲| 色综合久久99| 国产精品污www在线观看| 免费av成人在线| 欧美亚洲高清一区二区三区不卡| 日韩成人精品在线观看| 不卡视频在线看| 久久亚洲综合色| 青青草国产精品97视觉盛宴| 在线亚洲免费视频| 欧美激情一区不卡| 狠狠色综合日日| 欧美一区永久视频免费观看| 亚洲国产cao| 97久久超碰国产精品电影| 久久久久久99精品| 久久99精品视频| 91黄色在线观看| 最新久久zyz资源站| 国产精品亚洲一区二区三区妖精| 日韩欧美在线1卡| 天天综合日日夜夜精品| 色偷偷久久一区二区三区| 国产精品国产精品国产专区不片 | 亚洲特黄一级片| 97超碰欧美中文字幕| 欧美国产日韩一二三区| 国产美女视频一区| 精品成人a区在线观看| 久久电影国产免费久久电影| 91精品国产欧美日韩| 日韩精品福利网| 91精品国产综合久久精品app| 亚洲一区二区影院| 欧美色图片你懂的| 亚洲影院理伦片| 欧美日韩一级大片网址| 香蕉影视欧美成人| 欧美放荡的少妇| 美女性感视频久久| 欧美成人激情免费网| 经典一区二区三区| 久久久欧美精品sm网站| 国产精品一区二区你懂的| 国产欧美一区二区精品久导航| 国产乱码精品一区二区三区av | 国产精品热久久久久夜色精品三区 | 欧美亚洲日本一区| 亚洲成人久久影院| 欧美一区二区三区婷婷月色| 免费欧美在线视频| 国产日韩影视精品| 一本色道久久加勒比精品| 亚洲另类中文字| 欧美日韩高清一区| 日本不卡的三区四区五区| 久久久久久99精品| 97se亚洲国产综合自在线观| 亚洲午夜电影在线观看| 91精品国产一区二区| 久草这里只有精品视频| 国产精品国产三级国产a | 欧美大片国产精品| 国产成a人亚洲| 亚洲va欧美va人人爽午夜| 日韩一级片网址|