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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? pcre_exec.c

?? SDL文件。SDL_ERROwenjian.....
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
/**************************************************      Perl-Compatible Regular Expressions       **************************************************//* PCRE is a library of functions to support regular expressions whose syntaxand semantics are as close as possible to those of the Perl 5 language.                       Written by Philip Hazel           Copyright (c) 1997-2007 University of Cambridge-----------------------------------------------------------------------------Redistribution and use in source and binary forms, with or withoutmodification, are permitted provided that the following conditions are met:    * Redistributions of source code must retain the above copyright notice,      this list of conditions and the following disclaimer.    * Redistributions in binary form must reproduce the above copyright      notice, this list of conditions and the following disclaimer in the      documentation and/or other materials provided with the distribution.    * Neither the name of the University of Cambridge nor the names of its      contributors may be used to endorse or promote products derived from      this software without specific prior written permission.THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THEIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSEARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BELIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, ORCONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OFSUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESSINTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER INCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THEPOSSIBILITY OF SUCH DAMAGE.-----------------------------------------------------------------------------*//* This module contains pcre_exec(), the externally visible function that doespattern matching using an NFA algorithm, trying to mimic Perl as closely aspossible. There are also some static supporting functions. */#ifdef HAVE_CONFIG_H#include "config.h"#endif#define NLBLOCK md             /* Block containing newline information */#define PSSTART start_subject  /* Field containing processed string start */#define PSEND   end_subject    /* Field containing processed string end */#include "pcre_internal.h"/* Undefine some potentially clashing cpp symbols */#undef min#undef max/* Flag bits for the match() function */#define match_condassert     0x01  /* Called to check a condition assertion */#define match_cbegroup       0x02  /* Could-be-empty unlimited repeat group *//* Non-error returns from the match() function. Error returns are externallydefined PCRE_ERROR_xxx codes, which are all negative. */#define MATCH_MATCH        1#define MATCH_NOMATCH      0/* Special internal returns from the match() function. Make them sufficientlynegative to avoid the external error codes. */#define MATCH_COMMIT       (-999)#define MATCH_PRUNE        (-998)#define MATCH_SKIP         (-997)#define MATCH_THEN         (-996)/* Maximum number of ints of offset to save on the stack for recursive calls.If the offset vector is bigger, malloc is used. This should be a multiple of 3,because the offset vector is always a multiple of 3 long. */#define REC_STACK_SAVE_MAX 30/* Min and max values for the common repeats; for the maxima, 0 => infinity */static const char rep_min[] = { 0, 0, 1, 1, 0, 0 };static const char rep_max[] = { 0, 0, 0, 0, 1, 1 };#ifdef DEBUG/**************************************************        Debugging function to print chars       **************************************************//* Print a sequence of chars in printable format, stopping at the end of thesubject if the requested.Arguments:  p           points to characters  length      number to print  is_subject  TRUE if printing from within md->start_subject  md          pointer to matching data block, if is_subject is TRUEReturns:     nothing*/static voidpchars(const uschar *p, int length, BOOL is_subject, match_data *md){unsigned int c;if (is_subject && length > md->end_subject - p) length = md->end_subject - p;while (length-- > 0)  if (isprint(c = *(p++))) printf("%c", c); else printf("\\x%02x", c);}#endif/**************************************************          Match a back-reference                **************************************************//* If a back reference hasn't been set, the length that is passed is greaterthan the number of characters left in the string, so the match fails.Arguments:  offset      index into the offset vector  eptr        points into the subject  length      length to be matched  md          points to match data block  ims         the ims flagsReturns:      TRUE if matched*/static BOOLmatch_ref(int offset, register USPTR eptr, int length, match_data *md,  unsigned long int ims){USPTR p = md->start_subject + md->offset_vector[offset];#ifdef DEBUGif (eptr >= md->end_subject)  printf("matching subject <null>");else  {  printf("matching subject ");  pchars(eptr, length, TRUE, md);  }printf(" against backref ");pchars(p, length, FALSE, md);printf("\n");#endif/* Always fail if not enough characters left */if (length > md->end_subject - eptr) return FALSE;/* Separate the caselesss case for speed */if ((ims & PCRE_CASELESS) != 0)  {  while (length-- > 0)    if (md->lcc[*p++] != md->lcc[*eptr++]) return FALSE;  }else  { while (length-- > 0) if (*p++ != *eptr++) return FALSE; }return TRUE;}/*******************************************************************************************************************************************************                   RECURSION IN THE match() FUNCTIONThe match() function is highly recursive, though not every recursive callincreases the recursive depth. Nevertheless, some regular expressions can causeit to recurse to a great depth. I was writing for Unix, so I just let it callitself recursively. This uses the stack for saving everything that has to besaved for a recursive call. On Unix, the stack can be large, and this worksfine.It turns out that on some non-Unix-like systems there are problems withprograms that use a lot of stack. (This despite the fact that every last chiphas oodles of memory these days, and techniques for extending the stack havebeen known for decades.) So....There is a fudge, triggered by defining NO_RECURSE, which avoids recursivecalls by keeping local variables that need to be preserved in blocks of memoryobtained from malloc() instead instead of on the stack. Macros are used toachieve this so that the actual code doesn't look very different to what italways used to.The original heap-recursive code used longjmp(). However, it seems that thiscan be very slow on some operating systems. Following a suggestion from StanSwitzer, the use of longjmp() has been abolished, at the cost of having toprovide a unique number for each call to RMATCH. There is no way of generatinga sequence of numbers at compile time in C. I have given them names, to makethem stand out more clearly.Crude tests on x86 Linux show a small speedup of around 5-8%. However, onFreeBSD, avoiding longjmp() more than halves the time taken to run the standardtests. Furthermore, not using longjmp() means that local dynamic variablesdon't have indeterminate values; this has meant that the frame size can bereduced because the result can be "passed back" by straight setting of thevariable instead of being passed in the frame.*******************************************************************************************************************************************************//* Numbers for RMATCH calls. When this list is changed, the code at HEAP_RETURNbelow must be updated in sync.  */enum { RM1=1, RM2,  RM3,  RM4,  RM5,  RM6,  RM7,  RM8,  RM9,  RM10,       RM11,  RM12, RM13, RM14, RM15, RM16, RM17, RM18, RM19, RM20,       RM21,  RM22, RM23, RM24, RM25, RM26, RM27, RM28, RM29, RM30,       RM31,  RM32, RM33, RM34, RM35, RM36, RM37, RM38, RM39, RM40,       RM41,  RM42, RM43, RM44, RM45, RM46, RM47, RM48, RM49, RM50,       RM51,  RM52, RM53, RM54 };/* These versions of the macros use the stack, as normal. There are debuggingversions and production versions. Note that the "rw" argument of RMATCH isn'tactuall used in this definition. */#ifndef NO_RECURSE#define REGISTER register#ifdef DEBUG#define RMATCH(ra,rb,rc,rd,re,rf,rg,rw) \  { \  printf("match() called in line %d\n", __LINE__); \  rrc = match(ra,rb,mstart,rc,rd,re,rf,rg,rdepth+1); \  printf("to line %d\n", __LINE__); \  }#define RRETURN(ra) \  { \  printf("match() returned %d from line %d ", ra, __LINE__); \  return ra; \  }#else#define RMATCH(ra,rb,rc,rd,re,rf,rg,rw) \  rrc = match(ra,rb,mstart,rc,rd,re,rf,rg,rdepth+1)#define RRETURN(ra) return ra#endif#else/* These versions of the macros manage a private stack on the heap. Note thatthe "rd" argument of RMATCH isn't actually used in this definition. It's the mdargument of match(), which never changes. */#define REGISTER#define RMATCH(ra,rb,rc,rd,re,rf,rg,rw)\  {\  heapframe *newframe = (pcre_stack_malloc)(sizeof(heapframe));\  frame->Xwhere = rw; \  newframe->Xeptr = ra;\  newframe->Xecode = rb;\  newframe->Xmstart = mstart;\  newframe->Xoffset_top = rc;\  newframe->Xims = re;\  newframe->Xeptrb = rf;\  newframe->Xflags = rg;\  newframe->Xrdepth = frame->Xrdepth + 1;\  newframe->Xprevframe = frame;\  frame = newframe;\  DPRINTF(("restarting from line %d\n", __LINE__));\  goto HEAP_RECURSE;\  L_##rw:\  DPRINTF(("jumped back to line %d\n", __LINE__));\  }#define RRETURN(ra)\  {\  heapframe *newframe = frame;\  frame = newframe->Xprevframe;\  (pcre_stack_free)(newframe);\  if (frame != NULL)\    {\    rrc = ra;\    goto HEAP_RETURN;\    }\  return ra;\  }/* Structure for remembering the local variables in a private frame */typedef struct heapframe {  struct heapframe *Xprevframe;  /* Function arguments that may change */  const uschar *Xeptr;  const uschar *Xecode;  const uschar *Xmstart;  int Xoffset_top;  long int Xims;  eptrblock *Xeptrb;  int Xflags;  unsigned int Xrdepth;  /* Function local variables */  const uschar *Xcallpat;  const uschar *Xcharptr;  const uschar *Xdata;  const uschar *Xnext;  const uschar *Xpp;  const uschar *Xprev;  const uschar *Xsaved_eptr;  recursion_info Xnew_recursive;  BOOL Xcur_is_word;  BOOL Xcondition;  BOOL Xprev_is_word;  unsigned long int Xoriginal_ims;#ifdef SUPPORT_UCP  int Xprop_type;  int Xprop_value;  int Xprop_fail_result;  int Xprop_category;  int Xprop_chartype;  int Xprop_script;  int Xoclength;  uschar Xocchars[8];#endif  int Xctype;  unsigned int Xfc;  int Xfi;  int Xlength;  int Xmax;  int Xmin;  int Xnumber;  int Xoffset;  int Xop;  int Xsave_capture_last;  int Xsave_offset1, Xsave_offset2, Xsave_offset3;  int Xstacksave[REC_STACK_SAVE_MAX];  eptrblock Xnewptrb;  /* Where to jump back to */  int Xwhere;} heapframe;#endif/******************************************************************************************************************************************************//**************************************************         Match from current position            **************************************************//* This function is called recursively in many circumstances. Whenever itreturns a negative (error) response, the outer incarnation must also return thesame response.Performance note: It might be tempting to extract commonly used fields from themd structure (e.g. utf8, end_subject) into individual variables to improveperformance. Tests using gcc on a SPARC disproved this; in the first case, itmade performance worse.Arguments:   eptr        pointer to current character in subject   ecode       pointer to current position in compiled code   mstart      pointer to the current match start position (can be modified                 by encountering \K)   offset_top  current top pointer   md          pointer to "static" info for the match   ims         current /i, /m, and /s options   eptrb       pointer to chain of blocks containing eptr at start of                 brackets - for testing for empty matches   flags       can contain                 match_condassert - this is an assertion condition                 match_cbegroup - this is the start of an unlimited repeat                   group that can match an empty string   rdepth      the recursion depthReturns:       MATCH_MATCH if matched            )  these values are >= 0               MATCH_NOMATCH if failed to match  )               a negative PCRE_ERROR_xxx value if aborted by an error condition                 (e.g. stopped by repeated call or recursion limit)*/static intmatch(REGISTER USPTR eptr, REGISTER const uschar *ecode, const uschar *mstart,  int offset_top, match_data *md, unsigned long int ims, eptrblock *eptrb,  int flags, unsigned int rdepth){/* These variables do not need to be preserved over recursion in this function,so they can be ordinary variables in all cases. Mark some of them with"register" because they are used a lot in loops. */register int  rrc;         /* Returns from recursive calls */register int  i;           /* Used for loops not involving calls to RMATCH() */

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产综合久久精品app| 天堂一区二区在线免费观看| 香港成人在线视频| 欧美午夜免费电影| 麻豆精品新av中文字幕| 国产精品国产精品国产专区不蜜 | 欧美二区三区的天堂| 欧洲国内综合视频| 一区二区三区四区精品在线视频| 精品裸体舞一区二区三区| 欧美一区二区在线播放| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美亚洲国产一区二区三区va| 从欧美一区二区三区| 欧美一区二区视频在线观看 | 美女精品自拍一二三四| 色婷婷亚洲精品| 亚洲啪啪综合av一区二区三区| 久久国产剧场电影| 日韩亚洲欧美在线观看| 国产一区在线精品| 欧美xxxxxxxxx| 成年人午夜久久久| 一片黄亚洲嫩模| 91国产成人在线| 国产精品视频你懂的| 色综合色狠狠天天综合色| 一区二区三区中文字幕| 制服丝袜亚洲精品中文字幕| 国产一区二区三区在线看麻豆| 99精品久久只有精品| 男男成人高潮片免费网站| 国产精品视频一二三区| 欧美久久久影院| 日韩欧美一区二区视频| 国产精品免费视频网站| 亚洲人被黑人高潮完整版| 奇米色一区二区| 国产女人18毛片水真多成人如厕 | 中文字幕在线播放不卡一区| 卡一卡二国产精品| 精品国产一区二区三区久久久蜜月 | 91高清在线观看| 激情深爱一区二区| 午夜精品久久久久久久蜜桃app| 中文字幕乱码亚洲精品一区 | 日本欧美在线观看| 亚洲午夜免费福利视频| 乱中年女人伦av一区二区| 五月激情综合网| 日本va欧美va精品发布| 蜜臀va亚洲va欧美va天堂 | 精品欧美一区二区久久| 日韩欧美一区二区在线视频| 日韩欧美视频在线 | 国产成人午夜电影网| 成人一级视频在线观看| 欧美性猛交xxxx黑人交| 69堂亚洲精品首页| 久久久久久久精| 亚洲欧美一区二区三区国产精品| 亚洲电影在线播放| 黄色日韩网站视频| 国产一区二区在线看| 欧美日本精品一区二区三区| 国产亚洲成av人在线观看导航| 欧美激情一区三区| 国产乱码字幕精品高清av| 久久综合色婷婷| 99久久精品国产一区| 性做久久久久久| 国产在线麻豆精品观看| 一区二区三区中文在线观看| 99久久夜色精品国产网站| 青青草原综合久久大伊人精品优势| 亚洲黄色av一区| 中文字幕不卡一区| 欧美三级在线看| 国产91高潮流白浆在线麻豆| 亚洲国产日日夜夜| 国产精品美女久久久久久久网站| 欧美日韩中文精品| 99久久精品免费看国产| 乱中年女人伦av一区二区| 亚洲综合一二三区| 久久蜜桃香蕉精品一区二区三区| 亚洲免费观看视频| 国产精品18久久久久久vr| 日韩欧美视频在线| 免费欧美高清视频| 91精品国产色综合久久不卡电影| 亚洲综合视频在线| 欧美在线不卡视频| 亚洲精品视频一区| 色一情一伦一子一伦一区| 亚洲一区二区三区不卡国产欧美 | 亚洲综合无码一区二区| jvid福利写真一区二区三区| 国产精品污网站| 国产成人aaa| 亚洲自拍偷拍九九九| 91精品久久久久久久91蜜桃| 五月婷婷综合激情| 精品乱人伦小说| 99精品视频在线观看| 亚洲国产精品久久人人爱蜜臀| 欧美主播一区二区三区美女| 亚洲风情在线资源站| 欧美电影一区二区三区| 精品中文字幕一区二区小辣椒| 久久你懂得1024| 欧美v亚洲v综合ⅴ国产v| 波多野结衣在线一区| 一区二区三区四区在线播放| 亚洲精品写真福利| 夜夜嗨av一区二区三区中文字幕| 亚洲欧美视频在线观看视频| 欧美一区二区在线免费播放| 性做久久久久久| 欧美一区二区三区的| 日韩欧美中文字幕精品| 日韩二区在线观看| 欧美最猛性xxxxx直播| 亚洲小少妇裸体bbw| 亚洲综合男人的天堂| 亚洲一区二区欧美日韩| 五月天久久比比资源色| 日韩—二三区免费观看av| 美腿丝袜亚洲综合| 国产呦萝稀缺另类资源| 国产成人高清在线| 91在线国内视频| 欧美亚洲综合久久| 亚洲同性同志一二三专区| 久久久不卡网国产精品二区| 欧美精品一区视频| www久久久久| 国产拍揄自揄精品视频麻豆| 2022国产精品视频| 中文字幕日本不卡| 日韩欧美一级精品久久| 欧美乱妇20p| 欧美一区二区三区男人的天堂| 欧美日韩一区二区电影| 久久这里都是精品| 久久精品99国产精品日本| 久久免费精品国产久精品久久久久| 国产欧美视频在线观看| 最新国产精品久久精品| 91看片淫黄大片一级在线观看| 亚洲欧美激情一区二区| 欧美美女喷水视频| 精品一区二区三区免费毛片爱| 久久这里只有精品6| 91精彩视频在线观看| 日本不卡视频在线| 综合精品久久久| 精品国产伦一区二区三区观看体验| 一级女性全黄久久生活片免费| 天天色天天操综合| 成人av在线电影| 精品国产91乱码一区二区三区| 久久日韩粉嫩一区二区三区| 国产精品免费av| 成人国产精品视频| 91精品国产高清一区二区三区| 91精彩视频在线观看| 欧美另类久久久品| 国产女主播在线一区二区| 五月婷婷激情综合网| av一区二区三区四区| 精品国产网站在线观看| 亚洲bt欧美bt精品| 一本一本久久a久久精品综合麻豆| 日韩免费观看2025年上映的电影| 中文字幕日韩一区| 国产精品99精品久久免费| 欧美精品一卡二卡| 亚洲精品水蜜桃| 风间由美性色一区二区三区| 日韩视频在线永久播放| 亚洲高清免费在线| 色综合久久久久久久久久久| 国产精品色噜噜| 国产激情一区二区三区| 精品精品国产高清一毛片一天堂| 亚洲国产日韩av| 99国产精品国产精品久久| 亚洲精品一区在线观看| 日本欧洲一区二区| 在线播放中文一区| 亚洲一区二区三区在线| 91片在线免费观看| 中文字幕高清不卡| 国产福利91精品一区| 久久青草国产手机看片福利盒子| 美女视频一区二区| 91精品久久久久久久久99蜜臂| 三级不卡在线观看| 欧美剧情电影在线观看完整版免费励志电影 |