{ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 },
76{ 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1 },
77{ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1 },
78{ 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 },
79{ 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 },
80{ 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1 },
81{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0 },
82{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 },
83{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 },
84{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
85{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
86{ 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 },
87{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 },
88{ 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0 },
89{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0 },
90{ 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0 },
91{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }
94 #ifdef SUPPORT_UNICODE 127{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
128{ 0, 3, 0, 0, 0, 0, 3, 1, 1, 0, 0, 0, 0, 0 },
129{ 0, 0, 2, 4, 0, 0, 9, 10, 10, 11, 0, 0, 0, 0 },
130{ 0, 0, 5, 2, 0, 0, 15, 16, 16, 17, 0, 0, 0, 0 },
131{ 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0 },
132{ 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0 },
133{ 0, 3, 6, 12, 0, 0, 3, 1, 1, 0, 0, 0, 0, 0 },
134{ 0, 1, 7, 13, 0, 0, 1, 3, 3, 1, 0, 0, 0, 0 },
135{ 0, 1, 7, 13, 0, 0, 1, 3, 3, 1, 0, 0, 0, 0 },
136{ 0, 0, 8, 14, 0, 0, 0, 1, 1, 3, 0, 0, 0, 0 },
137{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
138{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0 },
139{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
140{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
150 static const uint8_tcatposstab[7][30] = {
152{ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
153{ 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
154{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
155{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
156{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1 },
157{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1 },
158{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 }
172 static const uint8_tposspropstab[3][4] = {
181 #ifdef SUPPORT_UNICODE 199check_char_prop(
uint32_tc,
unsigned intptype,
unsigned intpdata,
214 return(pdata ==
PRIV(ucp_gentype)[prop->
chartype]) == negated;
217 return(pdata == prop->
chartype) == negated;
220 return(pdata == prop->
script) == negated;
225 return ok== negated;
259 if(c < *p)
return!negated;
260 if(c == *p++)
returnnegated;
333 #ifdef SUPPORT_UNICODE 417 #ifdef SUPPORT_UNICODE 418 if(chr < 128 || (chr < 256 && !
utf&& !ucp))
422 #elif defined SUPPORT_WIDE_CHARS 423list[3] = (chr < 256) ? fcc[chr] : chr;
436 #ifdef SUPPORT_UNICODE 448clist_src =
PRIV(ucd_caseless_sets) +
code[1];
449clist_dest = list + 2;
453 if(clist_dest >= list + 8)
461*clist_dest++ = *clist_src;
474 #ifdef SUPPORT_WIDE_CHARS 503list[1] = (
GET2(end, 1) == 0);
545 #ifdef SUPPORT_WIDE_CHARS 549 const uint8_t*set1, *set2, *set_end;
551 BOOLaccepted, invert_bits;
554 if(--(*rec_limit) <= 0)
return FALSE;
601 returnbase_list[1] != 0;
615 if(base_list[1] == 0)
return FALSE;
649 return!entered_a_group;
679 while(*next_code ==
OP_ALT)
684next_code += GET(next_code, 1);
687entered_a_group =
TRUE;
693next_code =
code+ 1;
697 donext_code += GET(next_code, 1);
while(*next_code ==
OP_ALT);
727chr_ptr = base_list + 2;
733list_ptr = base_list;
745 #if PCRE2_CODE_UNIT_WIDTH == 8 751set1 = (
uint8_t*)(base_end - base_list[2]);
757list_ptr = base_list;
760invert_bits =
FALSE;
766((list_ptr == list ?
code: base_end) - list_ptr[2]);
769 #ifdef SUPPORT_WIDE_CHARS 771xclass_flags = (list_ptr == list ?
code: base_end) - list_ptr[2] +
LINK_SIZE;
773 if((*xclass_flags &
XCL_MAP) == 0)
776 if(list[1] == 0)
return(*xclass_flags &
XCL_NOT) == 0;
780set2 = (
uint8_t*)(xclass_flags + 1);
817 if((*set1++ & ~(*set2++)) != 0)
return FALSE;
819 while(set1 < set_end);
825 if((*set1++ & *set2++) != 0)
return FALSE;
827 while(set1 < set_end);
830 if(list[1] == 0)
return TRUE;
842leftop = base_list[0];
845 #ifdef SUPPORT_UNICODE 855 BOOLsame = leftop == rightop;
858 BOOLbothprop = lisprop && risprop;
869 n= propposstab[base_list[2]][list[2]];
873 case1: accepted = bothprop;
break;
874 case2: accepted = (base_list[3] == list[3]) != same;
break;
875 case3: accepted = !same;
break;
878accepted = risprop && catposstab[base_list[3]][list[3]] == same;
882accepted = lisprop && catposstab[list[3]][base_list[3]] == same;
907p = posspropstab[
n-6];
908accepted = risprop && lisprop ==
911(list[3] != p[2] || !lisprop));
917p = posspropstab[
n-9];
918accepted = lisprop && risprop ==
919(base_list[3] != p[0] &&
920base_list[3] != p[1] &&
921(base_list[3] != p[2] || !risprop));
927p = posspropstab[
n-12];
928accepted = risprop && lisprop ==
929(catposstab[p[0]][list[3]] &&
930catposstab[p[1]][list[3]] &&
931(list[3] != p[3] || !lisprop));
937p = posspropstab[
n-15];
938accepted = lisprop && risprop ==
939(catposstab[p[0]][base_list[3]] &&
940catposstab[p[1]][base_list[3]] &&
941(base_list[3] != p[3] || !risprop));
954 if(!accepted)
return FALSE;
956 if(list[1] == 0)
return TRUE;
971ochr_ptr = list_ptr + 2;
974 if(chr == *ochr_ptr)
return FALSE;
981ochr_ptr = list_ptr + 2;
984 if(chr == *ochr_ptr)
1031 default:
return FALSE;
1048 default:
return FALSE;
1072 #ifdef SUPPORT_UNICODE 1075 if(!check_char_prop(chr, list_ptr[2], list_ptr[3],
1082 if(chr > 255)
return FALSE;
1086 if(chr > 255)
break;
1088((list_ptr == list ?
code: base_end) - list_ptr[2]);
1089 if((class_bitset[chr >> 3] & (1u << (chr & 7))) != 0)
return FALSE;
1092 #ifdef SUPPORT_WIDE_CHARS 1094 if(
PRIV(xclass)(chr, (list_ptr == list ?
code: base_end) -
1109 if(list[1] == 0)
return TRUE;
1144 intrec_limit = 1000;
1203 #ifdef SUPPORT_WIDE_CHARS 1205repeat_opcode =
code+ GET(
code, 1);
1219list[1] = (c & 1) == 0;
1280 #ifdef SUPPORT_WIDE_CHARS 1303 #ifdef MAYBE_UTF_MULTI 1304 if(
utf)
switch(c)
1362 if(HAS_EXTRALEN(
code[-1]))
code+= GET_EXTRALEN(
code[-1]);
#define TRUE
bool replacment for C indicating true.
#define FALSE
bool replacment for C indicating false.
static BOOL compare_opcodes(PCRE2_SPTR code, BOOL utf, BOOL ucp, const compile_block *cb, const uint32_t *base_list, PCRE2_SPTR base_end, int *rec_limit)
static const uint8_t autoposstab[(OP_EXTUNI - OP_NOT_DIGIT+1)][(OP_DOLLM - OP_NOT_DIGIT+1)]
static PCRE2_SPTR get_chr_property_list(PCRE2_SPTR code, BOOL utf, BOOL ucp, const uint8_t *fcc, uint32_t *list)
static PCRE2_UCHAR get_repeat_base(PCRE2_UCHAR c)
#define PCRE2_CODE_UNIT_WIDTH
#define LAST_AUTOTAB_LEFT_OP
#define LAST_AUTOTAB_RIGHT_OP
#define UCD_OTHERCASE(ch)
#define UCD_SCRIPTX_PROP(prop)
#define GETCHARINCTEST(c, eptr)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4