亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
欧美日韩中文字幕精品| 欧美精品丝袜久久久中文字幕| 一卡二卡三卡日韩欧美| 日韩欧美在线影院| 色综合久久综合网欧美综合网| 免播放器亚洲一区| 亚洲乱码国产乱码精品精98午夜 | 日韩精品一区二区三区视频| 99久久99久久精品免费观看| 久久精品国产亚洲a| 亚洲综合色视频| 国产精品污www在线观看| 日韩午夜在线观看| 亚洲精品国产无天堂网2021| 日韩一级在线观看| 欧美精选在线播放| 成人爱爱电影网址| 久久国产精品一区二区| 香蕉乱码成人久久天堂爱免费| 国产人伦精品一区二区| 日韩精品资源二区在线| 欧美精品免费视频| 在线日韩一区二区| 91精品办公室少妇高潮对白| 成人听书哪个软件好| 精品一区二区三区免费观看| 香蕉影视欧美成人| 亚洲成av人在线观看| 亚洲欧美另类小说| 国产精品福利一区二区三区| 国产精品伦理一区二区| 国产欧美一区二区三区鸳鸯浴| 精品欧美久久久| 日韩精品专区在线影院观看| 欧美精品1区2区3区| 欧美日韩免费视频| 欧美日韩国产系列| 欧美精品一卡二卡| 7777精品伊人久久久大香线蕉| 欧美日韩中文一区| 51精品国自产在线| 日韩一级成人av| 欧美一区二区高清| 日韩亚洲欧美在线观看| 日韩一区二区三区三四区视频在线观看 | 亚洲国产cao| 亚洲综合色丁香婷婷六月图片| 亚洲欧美一区二区三区极速播放| 亚洲精品水蜜桃| 亚洲一区二区三区小说| 亚洲网友自拍偷拍| 视频一区二区三区在线| 免费看精品久久片| 国产米奇在线777精品观看| 国产jizzjizz一区二区| 91老司机福利 在线| 在线日韩av片| 日韩小视频在线观看专区| xvideos.蜜桃一区二区| 国产精品三级视频| 亚洲影院久久精品| 美国三级日本三级久久99| 国产精品一区二区久激情瑜伽| 岛国一区二区在线观看| 欧美在线你懂得| 欧美成人a在线| 国产精品美女一区二区三区| 亚洲最大色网站| 美女高潮久久久| 成人高清免费观看| 欧美精品久久99久久在免费线| 欧美电视剧在线看免费| 日本一区免费视频| 亚洲第一二三四区| 国产在线精品免费| 色噜噜久久综合| 精品美女被调教视频大全网站| 国产精品国产a级| 日本网站在线观看一区二区三区| 久久不见久久见免费视频1| 国产ts人妖一区二区| 欧洲精品一区二区| 国产色一区二区| 亚洲.国产.中文慕字在线| 国产精品99精品久久免费| 91浏览器入口在线观看| 欧美成人乱码一区二区三区| 亚洲欧美日韩国产手机在线| 久久国产视频网| 色婷婷久久久综合中文字幕 | 国产69精品一区二区亚洲孕妇| 在线一区二区视频| 国产亚洲欧洲997久久综合| 亚洲激情图片一区| 国产成人午夜精品5599| 欧美日韩国产成人在线91| 国产精品入口麻豆九色| 免费人成黄页网站在线一区二区| 99久久精品国产毛片| 欧美成人猛片aaaaaaa| 亚洲国产视频网站| av中文一区二区三区| 精品国产乱码久久| 婷婷一区二区三区| 色偷偷一区二区三区| 国产片一区二区| 久久精品久久99精品久久| 欧美性xxxxxx少妇| 国产精品毛片大码女人| 激情综合色播五月| 欧美精品丝袜中出| 亚洲chinese男男1069| 99国产精品久久久久| 国产日韩欧美激情| 国内精品久久久久影院一蜜桃| 欧美精品久久久久久久多人混战 | 精品一区二区三区视频在线观看| 欧美三片在线视频观看| 夜夜亚洲天天久久| av动漫一区二区| 中文字幕日韩一区| 99久久久精品| 中文字幕欧美一| 成人精品鲁一区一区二区| 久久久久久久精| 国产乱对白刺激视频不卡| 精品福利av导航| 久久爱www久久做| 2020国产精品自拍| 狠狠色丁香婷综合久久| 欧美v国产在线一区二区三区| 天堂久久久久va久久久久| 欧美精品乱码久久久久久按摩| 亚洲mv在线观看| 欧美男男青年gay1069videost | 亚洲综合色在线| 91久久精品一区二区二区| 一区二区三区四区在线免费观看| 99精品欧美一区二区蜜桃免费| 日韩毛片在线免费观看| 99久久国产综合精品女不卡| 亚洲精品高清在线| 欧美日韩亚洲综合一区 | 色婷婷国产精品综合在线观看| 亚洲欧洲三级电影| 日本乱人伦aⅴ精品| 亚洲综合一区在线| 欧美疯狂做受xxxx富婆| 久久精品久久综合| 国产日韩欧美激情| 91在线精品一区二区三区| 亚洲精品一二三区| 欧美日韩中文字幕精品| 乱中年女人伦av一区二区| www激情久久| 99久久精品免费精品国产| 亚洲国产欧美日韩另类综合| 欧美日韩久久久| 国产在线精品国自产拍免费| 国产日韩欧美精品综合| 色综合网站在线| 日韩avvvv在线播放| 精品久久国产老人久久综合| 粉嫩av亚洲一区二区图片| 亚洲激情综合网| 欧美不卡一区二区三区四区| 丰满岳乱妇一区二区三区| 伊人一区二区三区| 欧美一级二级在线观看| 高清国产一区二区三区| 一区二区三区免费观看| 欧美成人性战久久| 色婷婷精品大视频在线蜜桃视频| 日本不卡在线视频| 国产精品久久久久久久久晋中| 欧美性生活一区| 国产麻豆精品视频| 亚洲成人你懂的| 中文一区一区三区高中清不卡| 欧美专区日韩专区| 国产超碰在线一区| 亚洲妇女屁股眼交7| 国产亚洲精品久| 欧美久久一二区| 成人福利视频网站| 日韩电影在线观看一区| 国产精品视频一二三| 91精品欧美久久久久久动漫| 不卡欧美aaaaa| 美女被吸乳得到大胸91| 亚洲乱码国产乱码精品精98午夜 | 国产精品视频一区二区三区不卡| 在线影院国内精品| 懂色av一区二区三区免费观看 | 久久久影视传媒| 色香色香欲天天天影视综合网| 国内久久精品视频| 亚洲bdsm女犯bdsm网站| 国产精品久久久久久久久久免费看 | 亚洲国产一区二区三区青草影视|