MCPcopy Create free account
hub / github.com/RT-Thread/env-windows / _compile

Function _compile

tools/python-3.11.9-amd64/Lib/re/_compiler.py:37–214  ·  view source on GitHub ↗
(code, pattern, flags)

Source from the content-addressed store, hash-verified

35 return (flags | add_flags) & ~del_flags
36
37def _compile(code, pattern, flags):
38 # internal: compile a (sub)pattern
39 emit = code.append
40 _len = len
41 LITERAL_CODES = _LITERAL_CODES
42 REPEATING_CODES = _REPEATING_CODES
43 SUCCESS_CODES = _SUCCESS_CODES
44 ASSERT_CODES = _ASSERT_CODES
45 iscased = None
46 tolower = None
47 fixes = None
48 if flags & SRE_FLAG_IGNORECASE and not flags & SRE_FLAG_LOCALE:
49 if flags & SRE_FLAG_UNICODE:
50 iscased = _sre.unicode_iscased
51 tolower = _sre.unicode_tolower
52 fixes = _EXTRA_CASES
53 else:
54 iscased = _sre.ascii_iscased
55 tolower = _sre.ascii_tolower
56 for op, av in pattern:
57 if op in LITERAL_CODES:
58 if not flags & SRE_FLAG_IGNORECASE:
59 emit(op)
60 emit(av)
61 elif flags & SRE_FLAG_LOCALE:
62 emit(OP_LOCALE_IGNORE[op])
63 emit(av)
64 elif not iscased(av):
65 emit(op)
66 emit(av)
67 else:
68 lo = tolower(av)
69 if not fixes: # ascii
70 emit(OP_IGNORE[op])
71 emit(lo)
72 elif lo not in fixes:
73 emit(OP_UNICODE_IGNORE[op])
74 emit(lo)
75 else:
76 emit(IN_UNI_IGNORE)
77 skip = _len(code); emit(0)
78 if op is NOT_LITERAL:
79 emit(NEGATE)
80 for k in (lo,) + fixes[lo]:
81 emit(LITERAL)
82 emit(k)
83 emit(FAILURE)
84 code[skip] = _len(code) - skip
85 elif op is IN:
86 charset, hascased = _optimize_charset(av, iscased, tolower, fixes)
87 if flags & SRE_FLAG_IGNORECASE and flags & SRE_FLAG_LOCALE:
88 emit(IN_LOC_IGNORE)
89 elif not hascased:
90 emit(IN)
91 elif not fixes: # ascii
92 emit(IN_IGNORE)
93 else:
94 emit(IN_UNI_IGNORE)

Callers 1

_codeFunction · 0.70

Calls 8

tolowerFunction · 0.85
_optimize_charsetFunction · 0.85
_compile_charsetFunction · 0.85
_simpleFunction · 0.85
_combine_flagsFunction · 0.85
getwidthMethod · 0.80
errorClass · 0.70
getMethod · 0.45

Tested by

no test coverage detected