Definition at line 1625 of file RegexCompiler.cs.
1626 {
1627 if ((
node.Options & RegexOptions.RightToLeft) != 0)
1628 {
1629 return false;
1630 }
1633 {
1634 return false;
1635 }
1644 {
1646 }
1661 {
1666 }
1674 {
1689 }
1690 else
1691 {
1693 }
1695 return true;
1697 {
1699 {
1700 default:
1701 return;
1702 case 18:
1703 case 19:
1705 {
1707 }
1708 else
1709 {
1713 }
1714 return;
1715 case 14:
1717 {
1724 }
1725 else
1726 {
1739 }
1740 return;
1741 case 21:
1746 return;
1747 case 20:
1754 break;
1755 case 15:
1756 break;
1757 case 16:
1758 case 17:
1759 return;
1760 }
1773 }
1775 {
1782 {
1788 }
1792 for (
int j = 0;
j <
num3 - 1;
j++)
1793 {
1804 {
1807 }
1808 }
1810 {
1820 }
1821 else
1822 {
1826 }
1829 }
1831 {
1833 {
1835 return;
1836 }
1871 {
1875 }
1876 else
1877 {
1879 }
1883 {
1887 }
1888 }
1890 {
1901 {
1902 case 43:
1904 {
1906 }
1909 break;
1910 case 44:
1912 {
1914 }
1917 break;
1918 case 45:
1921 break;
1922 }
1932 }
1934 {
1938 {
1941 }
1945 {
1946 case 16:
1949 break;
1950 case 17:
1953 break;
1954 case 41:
1957 break;
1958 default:
1961 break;
1962 }
1963 }
1965 {
1969 {
1971 }
1982 }
1984 {
1986 if (!flag &&
node.Str.Length > 64)
1987 {
1996 }
1997 else
1998 {
2002 {
2004 {
2005 while (
span.Length >= 4)
2006 {
2014 }
2015 }
2016 while (
span.Length >= 2)
2017 {
2025 }
2026 }
2027 for (
int i = 0;
i <
span.Length;
i++)
2028 {
2033 {
2035 }
2038 }
2039 }
2040 }
2042 {
2057 }
2059 {
2061 {
2062 case 9:
2063 case 10:
2064 case 11:
2066 break;
2067 case 16:
2068 case 17:
2069 case 41:
2070 case 42:
2072 break;
2073 case 14:
2074 case 15:
2075 case 18:
2076 case 19:
2077 case 20:
2078 case 21:
2080 break;
2081 case 12:
2083 break;
2084 case 43:
2085 case 44:
2086 case 45:
2088 break;
2089 case 26:
2091 break;
2092 case 27:
2094 {
2096 }
2097 break;
2098 case 32:
2100 break;
2101 case 24:
2103 break;
2104 case 3:
2105 case 4:
2106 case 5:
2107 case 6:
2108 case 7:
2109 case 8:
2111 break;
2112 case 25:
2113 {
2116 {
2118 }
2119 break;
2120 }
2121 case 28:
2123 break;
2124 case 30:
2126 break;
2127 case 31:
2129 break;
2130 case 22:
2132 break;
2133 case 46:
2135 break;
2136 case 13:
2137 case 23:
2138 case 29:
2139 case 33:
2140 case 34:
2141 case 35:
2142 case 36:
2143 case 37:
2144 case 38:
2145 case 39:
2146 case 40:
2147 break;
2148 }
2149 }
2151 {
2154 {
2156 return;
2157 }
2177 }
2179 {
2189 }
2191 {
2193 {
2195 }
2201 {
2202 case 5:
2203 case 8:
2204 case 11:
2205 case 45:
2208 break;
2209 case 3:
2210 case 6:
2211 case 9:
2212 case 43:
2214 {
2216 }
2219 break;
2220 default:
2222 {
2224 }
2227 break;
2228 }
2230 }
2232 {
2234 {
2236 }
2237 else
2238 {
2240 {
2247 int num = 0;
2249 {
2251 {
2255 }
2256 else
2257 {
2259 }
2269 {
2272 }
2274 }
2276 {
2278 {
2282 }
2283 else
2284 {
2286 }
2289 if (num == 2)
2290 {
2292 }
2293 else
2294 {
2297 }
2305 {
2308 }
2310 }
2311 else if (
node.Type == 45 &&
n ==
int.MaxValue &&
node.Str ==
"\0\u0001\0\0")
2312 {
2318 }
2319 else
2320 {
2338 {
2339 case 43:
2341 {
2343 }
2346 break;
2347 case 44:
2349 {
2351 }
2354 break;
2355 case 45:
2358 break;
2359 }
2366 {
2370 }
2371 else
2372 {
2374 }
2375 }
2379 {
2383 }
2392 return;
2393 }
2395 }
2396 }
2398 {
2401 {
2404 {
2436 return;
2437 }
2438 for (
int k = 0;
k <
m4;
k++)
2439 {
2441 }
2442 }
2443 }
2445 {
2450 }
2452 {
2454 {
2456 }
2458 {
2460 }
2461 else
2462 {
2466 }
2467 }
2469 {
2473 {
2476 }
2477 }
2479 {
2491 }
2493 {
2498 }
2500 {
2501 return (
node.Options & RegexOptions.IgnoreCase) != 0;
2502 }
2504 {
2512 }
2514 {
2516 if ((
node.Options & RegexOptions.RightToLeft) == 0 &&
maxDepth > 0)
2517 {
2520 {
2521 case 9:
2522 case 10:
2523 case 11:
2524 case 12:
2525 case 14:
2526 case 15:
2527 case 16:
2528 case 17:
2529 case 18:
2530 case 19:
2531 case 20:
2532 case 21:
2533 case 22:
2534 case 23:
2535 case 41:
2536 case 42:
2537 case 43:
2538 case 44:
2539 case 45:
2540 case 46:
2542 break;
2543 case 3:
2544 case 4:
2545 case 5:
2546 case 6:
2547 case 7:
2548 case 8:
2549 flag2 = node.M == node.N || (node.Next !=
null && node.Next.Type == 32);
2550 break;
2551 case 26:
2552 case 27:
2554 break;
2555 case 30:
2556 case 31:
2557 case 32:
2559 break;
2560 case 24:
2561 if (
node.Next ==
null || (!
node.IsAtomicByParent() && (
node.Next.Type != 28 ||
node.Next.Next !=
null)))
2562 {
2563 break;
2564 }
2565 goto case 25;
2566 case 25:
2567 {
2570 {
2572 {
2574 break;
2575 }
2576 }
2577 break;
2578 }
2579 case 28:
2580 flag2 = node.N == -1;
2582 {
2585 {
2587 {
2588 case 24:
2589 case 25:
2590 case 28:
2591 case 30:
2592 case 32:
2594 break;
2595 default:
2598 break;
2599 }
2600 }
2602 {
2605 {
2608 {
2611 }
2612 }
2613 }
2614 }
2615 break;
2616 }
2617 }
2619 }
2621 {
2623 {
2633 }
2634 }
2635 }
static readonly MethodInfo s_memoryMarshalGetReference
LocalBuilder DeclareString()
static readonly MethodInfo s_stringAsSpanMethod
static readonly FieldInfo s_runtextstartField
void EmitMatchCharacterClass(string charClass, bool caseInsensitive)
RentedLocalBuilder RentReadOnlySpanCharLocal()
static readonly MethodInfo s_isECMABoundaryMethod
RentedLocalBuilder RentInt32Local()
static readonly MethodInfo s_stringAsSpanIntIntMethod
static readonly MethodInfo s_spanIndexOfAnyCharChar
readonly bool _persistsAssembly
static readonly MethodInfo s_spanIndexOf
void InitializeCultureForGoIfNecessary()
static readonly FieldInfo s_runtextendField
static readonly MethodInfo s_spanSliceIntMethod
static readonly FieldInfo s_runtextField
static readonly MethodInfo s_stringGetCharsMethod
LocalBuilder DeclareInt32()
LocalBuilder DeclareReadOnlySpanChar()
void Ldthisfld(FieldInfo ft)
LocalBuilder _loopTimeoutCounterLocal
static readonly MethodInfo s_spanGetItemMethod
static readonly MethodInfo s_uncaptureMethod
static readonly MethodInfo s_crawlposMethod
static readonly MethodInfo s_spanSliceIntIntMethod
static bool ParticipatesInCaseConversion(int comparison)
static readonly MethodInfo s_spanStartsWith
static readonly MethodInfo s_spanIndexOfAnyCharCharChar
static readonly MethodInfo s_captureMethod
void Unaligned(byte alignment)
static readonly FieldInfo s_runtextbegField
static readonly MethodInfo s_isBoundaryMethod
static readonly MethodInfo s_spanGetLengthMethod
static readonly FieldInfo s_runtextposField
void Mvfldloc(FieldInfo ft, LocalBuilder lt)
References System.Text.RegularExpressions.RegexCompiler._code, System.Text.RegularExpressions.RegexCompiler._hasTimeout, System.Text.RegularExpressions.RegexCompiler._loopTimeoutCounterLocal, System.Text.RegularExpressions.RegexCompiler._persistsAssembly, System.Text.RegularExpressions.RegexCompiler.Add(), System.Text.RegularExpressions.RegexCompiler.BeqFar(), System.Text.RegularExpressions.RegexCompiler.BgeUn(), System.Text.RegularExpressions.RegexCompiler.BgeUnFar(), System.Reflection.Emit.Ble, System.Text.RegularExpressions.RegexCompiler.BltFar(), System.Text.RegularExpressions.RegexCompiler.BltUnFar(), System.Text.RegularExpressions.RegexCompiler.Bne(), System.Text.RegularExpressions.RegexCompiler.BneFar(), System.Reflection.Emit.Br, System.Text.RegularExpressions.RegexCompiler.BrfalseFar(), System.Text.RegularExpressions.RegexCompiler.BrFar(), System.Reflection.Emit.Brtrue, System.Text.RegularExpressions.RegexCompiler.BrtrueFar(), System.Reflection.Emit.Call, System.Text.RegularExpressions.RegexCompiler.CallToLower(), System.Text.RegularExpressions.RegexCode.Caps, System.chars, System.Text.RegularExpressions.RegexCompiler.DeclareInt32(), System.Text.RegularExpressions.RegexCompiler.DeclareReadOnlySpanChar(), System.Text.RegularExpressions.RegexCompiler.DeclareString(), System.Text.RegularExpressions.RegexCompiler.DefineLabel(), System.Text.RegularExpressions.RegexCompiler.EmitMatchCharacterClass(), System.Text.RegularExpressions.RegexCompiler.EmitTimeoutCheck(), System.Text.RegularExpressions.RegexCharClass.GetSetChars(), System.Text.RegularExpressions.i, System.Text.RegularExpressions.RegexCompiler.InitializeCultureForGoIfNecessary(), System.Text.RegularExpressions.RegexCompiler.IsCaseInsensitive(), System.Text.RegularExpressions.RegexCharClass.IsNegated(), System.Text.RegularExpressions.RegexCompiler.Ldc(), System.Text.RegularExpressions.RegexCompiler.LdcI8(), System.Text.RegularExpressions.RegexCompiler.LdindI4(), System.Text.RegularExpressions.RegexCompiler.LdindI8(), System.Text.RegularExpressions.RegexCompiler.LdindU2(), System.Reflection.Emit.Ldloc, System.Reflection.Emit.Ldloca, System.Reflection.Emit.Ldstr, System.Text.RegularExpressions.RegexCompiler.Ldthis(), System.Text.RegularExpressions.RegexCompiler.Ldthisfld(), System.Text.RegularExpressions.RegexCompiler.MarkLabel(), System.Reflection.MaxValue, System.Text.RegularExpressions.RegexCompiler.Mvfldloc(), System.offset, System.Text.RegularExpressions.RegexCompiler.ParticipatesInCaseConversion(), System.Text.RegularExpressions.RegexCompiler.RentInt32Local(), System.Text.RegularExpressions.RegexCompiler.RentReadOnlySpanCharLocal(), System.Text.RegularExpressions.RegexCompiler.Ret(), System.Text.RegularExpressions.RegexCompiler.s_captureMethod, System.Text.RegularExpressions.RegexCompiler.s_crawlposMethod, System.Text.RegularExpressions.RegexCompiler.s_isBoundaryMethod, System.Text.RegularExpressions.RegexCompiler.s_isECMABoundaryMethod, System.Text.RegularExpressions.RegexCompiler.s_memoryMarshalGetReference, System.Text.RegularExpressions.RegexCompiler.s_runtextbegField, System.Text.RegularExpressions.RegexCompiler.s_runtextendField, System.Text.RegularExpressions.RegexCompiler.s_runtextField, System.Text.RegularExpressions.RegexCompiler.s_runtextposField, System.Text.RegularExpressions.RegexCompiler.s_runtextstartField, System.Text.RegularExpressions.RegexCompiler.s_spanGetItemMethod, System.Text.RegularExpressions.RegexCompiler.s_spanGetLengthMethod, System.Text.RegularExpressions.RegexCompiler.s_spanIndexOf, System.Text.RegularExpressions.RegexCompiler.s_spanIndexOfAnyCharChar, System.Text.RegularExpressions.RegexCompiler.s_spanIndexOfAnyCharCharChar, System.Text.RegularExpressions.RegexCompiler.s_spanSliceIntIntMethod, System.Text.RegularExpressions.RegexCompiler.s_spanSliceIntMethod, System.Text.RegularExpressions.RegexCompiler.s_spanStartsWith, System.Text.RegularExpressions.RegexCompiler.s_stringAsSpanIntIntMethod, System.Text.RegularExpressions.RegexCompiler.s_stringAsSpanMethod, System.Text.RegularExpressions.RegexCompiler.s_stringGetCharsMethod, System.Text.RegularExpressions.RegexCompiler.s_uncaptureMethod, System.IntPtr.Size, System.Reflection.Emit.Stfld, System.Reflection.Emit.Stloc, System.Text.RegularExpressions.RegexCompiler.Sub(), and System.Text.RegularExpressions.RegexCompiler.Unaligned().
Referenced by System.Text.RegularExpressions.RegexCompiler.GenerateGo().