3 \K@sdZddlZddlZddlTejeks.tdeehZe e e hZ e ehZeehZdWZd&d'eDZd(d)ZdXd*d+Zd,d-Zejd.Zd/e>d/Zd0d1d2Zeefd3d4Zd5d6Zd7d8Zd9d:Z d;d<Z!d=d>Z"d?d@Z#dAdBZ$dCdDZ%dYdEdFZ&dS)ZzInternal support module for sreN)*zSRE module mismatchi1sEacs.i|]&}|D]tfdd|Dq qS)c3s|]}|kr|VqdS)N).0j)ir$#/usr/lib64/python3.6/sre_compile.py =sz.)tuple)r%tr$)r'r( =sr,cCsr|j}t}t}t}t}t}|t@rD|t@ rD|t@rD|t @ rDt } nd} x"|D]\} } | |kr|t@rt j | |} | r| | kr|t ||} |d| tkr|tx&| f| | D]}|t||qW|t||| || <n|t| || n|| || qP| tkr|t@rF|t| |fdd}n || d}||} |dt| |||| ||| || <qP| tkr|t@r|tn|tqP| |kr|t@rtd| fnt| rR| tk rR| tkr|tn|t||} |d|| d|| dt|| d||t ||| || <nl|t||} |d|| d|| dt|| d|||| || <| tkr|t!n|t"qP| t#kr.| \}}}}|r|t$||ddt||||B|@|rj|t$||dddqP| |krB|| qP| |kr|| ||} |d| ddkr||dn*| dj%\} }| |krtd|| t|| d||t ||| || <qP| t&kr|| ||} |dt|| ||t ||| || <qP| t'kr|| |t(@r@t)j*| | } |t@rXt+j*| | } n"|t@rz|t @ rzt,j*| | } || qP| t-kr&|| g}|j}xZ| dD]N} ||} |dt|| ||t.||||d||| || <qW|tx|D]}|||||<q WqP| t/krt|| |t@rLt0| } n|t@rj|t @ rjt1| } || qP| t2kr|t@r|t| n|| || dqP| t3kr\|| || dd||}|dt|| d|| drF|t.||}|d|||d||<t|| d||||||<n|||d||<qPtd| fqPWdS) NrcSs tj||S)N)_sregetlower)literalflagsr$r$r(fixupfsz_compile..fixupz*internal: unsupported template operator %rz(look-behind requires fixed-width patternz%internal: unsupported operand type %r)4appendlen_LITERAL_CODES_REPEATING_CODES_SUCCESS_CODES _ASSERT_CODESSRE_FLAG_IGNORECASESRE_FLAG_LOCALESRE_FLAG_UNICODESRE_FLAG_ASCII_ignorecase_fixesr-r. IN_IGNORE NOT_LITERALNEGATELITERALFAILURE OP_IGNOREIN_compile_charsetANYSRE_FLAG_DOTALLANY_ALLSRE_FLAG_TEMPLATEerror_simpleREPEAT MAX_REPEAT REPEAT_ONEMIN_REPEAT_ONE_compileSUCCESS MAX_UNTIL MIN_UNTIL SUBPATTERNMARKgetwidthCALLATSRE_FLAG_MULTILINE AT_MULTILINEget AT_LOCALE AT_UNICODEBRANCHJUMPCATEGORY CH_LOCALE CH_UNICODEGROUPREFGROUPREF_EXISTS)codepatternr0emit_len LITERAL_CODESREPEATING_CODES SUCCESS_CODES ASSERT_CODESfixesopavloskipkr1group add_flags del_flagsphitail tailappendskipyesskipnor$r$r(rQ@s.                                                       rQcCs|j}xt|||D]\}}|||tkr.q|tkr@||q|tksP|tkrj||d||dq|tkr~|j|q|tkr|j|q|t kr|t @r|t |q|t @r|t @ r|t|q||qtd|fqW|tdS)Nrr2z%internal: unsupported set operator %r)r4_optimize_charsetrArBRANGE RANGE_IGNORECHARSETextend BIGCHARSETrar;rbr<r=rcrKrC)charsetr0rfr1rnrhrorpr$r$r(rFs,     rFc Csdg}g}td}xt|D]j\}}x^y|tkrx|rn||}d||<|rv||krvx"||D] } d|| <q\Wnd||<n|tkrt|d|dd} |rt|| } |r|rxN| D].} d|| <| |krx|| D] } d|| <qWqWnx>| D] } d|| <qWn(|tkr|j||fn|j||fWnTtk r|t|dkrV|dd7}w&|rj|tkrjt }|j||fYnXPq&WqWg} d} xj|j d| }|dkrPt| dkrd} P|j d|} | dkr| j|t|fP| j|| fqW| dk rvxF| D]>\}} | |dkr2|jt|fn|jt|| dffq W||7}|snt|t|krr|S|St|dkrt |}|jt |f||7}|St |}i}td}d}t}xftdddD]V} || | d}||kr|||| d<n$||| d<||<|d7}||7}qWt |}|gt||dd<|jt|f||7}|S)Nr2rir3i) bytearrayrBr~rangemaprAr4 IndexErrorr5rfind _mk_bitmaprbytes_bytes_to_codesr)rr1rnoutrycharmaprorprqrsrr'runsqrwdatacompsmappingblockchunkr$r$r(r}s              r}r201cs8|jtdddfddttd DS)Nr2cs"g|]}||dqS)r3r$)r%r') _CODEBITS_intsr$r( zsz_mk_bitmap..r) translate _BITS_TRANSrr5)bitsrrr$)rrrr(rxsrcCs@t|jd}|jtjkstt||jt|ks8t|jS)NI) memoryviewcastitemsizer-CODESIZEAssertionErrorr5tolist)bar$r$r(r}srcCs<|dj\}}||ko"dkno:|dddtkS)Nr3r2r)rWrU)rprqrxr$r$r(rLsrLcCsvdgt|}xbtdt|D]P}||d}x>||||kr`|dkrRd||<P||d}q0W|d||<qW|S)aj Generate an overlap table for the following prefix. An overlap table is a table of the same size as the prefix which informs about the potential self-overlap for each index in the prefix: - if overlap[i] == 0, prefix[i:] can't overlap prefix[0:...] - if overlap[i] == k with 0 < k <= i, prefix[i-k+1:i+1] overlaps with prefix[0:k] rr2)r5r)prefixtabler'idxr$r$r(_generate_overlap_tables  rc Csg}|j}d}x|jD]\}}|tkr0||q|tkr|\}}}} |t@rNPt| \} } } |dkr|dk rvt|}n| dk rt|| }|j| | sPqPqW||dfS||dfS)NTF)r4rrBrUr:_get_literal_prefixr5r) rgr prefixappend prefix_skiprorprtrurvrwprefix1 prefix_skip1got_allr$r$r(rs,      rc Cs"g}|j}|jr|jd\}}|tkr|\}}}}|r|t@ r|d\}}|tkrd|||fnR|tkrg} | j} x|dD].}|sP|d\}}|tkr| ||fqPqW| }nf|tkrg} | j} xP|dD]0}|sP|d\}}|tkr| ||fqPqW| }n|tkr|}|S)Nrr2)r4rrUr:rBr_rE) rgr charsetappendrorprtrurvrwccappendr$r$r(_get_charset_prefixsF       rc CsZ|j\}}|tkrt}|dkr8|jtdd||gdSg}d}g}|t@sft|\}}}|sft|}|j} | tt|} | dd} |rt } |dkr|r| t B} n |r| t B} | | |tkr| |n| t|dt}| t |t|r4| t||dkrt|}| ||j||jt |n|rFt|||t|| || <dS)Nr)rWMAXCODErINFOr:rrr4r5SRE_INFO_PREFIXSRE_INFO_LITERALSRE_INFO_CHARSETminrrF) rfrgr0rqrxrrrrrhrrmaskr$r$r( _compile_infosP         rcCst|ttfS)N) isinstancestrr)objr$r$r(isstringsrcCs8|jj|B}g}t|||t||j||jt|S)N)rgr0rrQrr4rR)rwr0rfr$r$r(_codes    rcCst|r|}tj||}nd}t||}|jj}dg|jj}x|jD]\}}|||<qHWtj |||jj B||jjd||S)Nr2) r sre_parseparserrg groupdictgroupsitemsr-compiler0)rwr0rgrf groupindex indexgrouprsr'r$r$r(r-s   rrrrrrrr r r r r rrrrrrrrrrrrrrrrrrr r!r"r#)rrrrrrrrrrrrrrrr)NN)r)'__doc__r-r sre_constantsMAGICrrBr@r6rM MIN_REPEATrNr7rRrCr8ASSERT ASSERT_NOTr9 _equivalencesr>rQrFr}rrrrintrrrLrrrrrrrr$r$r$r( sV  {   )9