3
4^^K                 @   s   d Z ddlZddlZddlT ejeks.tdeehZe	e
ehZeehZeehZdWZd&d' eD Zd(d) ZdXd*d+Zd,d- Zejd. Zd/e> d/ Zd0d1d2  Zeefd3d4Zd5d6 Zd7d8 Zd9d: Z d;d< Z!d=d> Z"d?d@ Z#dAdB Z$dCdD Z%dYdEdFZ&dS )ZzInternal support module for sre    N)*zSRE module mismatchi   1  s          E                                              a        c                s.   i | ]&}|D ] t  fd d|D  qqS )c             3   s   | ]} |kr|V  qd S )N ).0j)ir$   r/home/aldo/Documentos/tesis/tesis/device auto/pruebas pulsar/pruebaclonado/envClonado/lib/python3.6/sre_compile.py	<genexpr>=   s    z<dictcomp>.<genexpr>)tuple)r%   tr$   )r'   r(   
<dictcomp>=   s   r,   c             C   sr  | j }t}t}t}t}t}|t@ rD|t@  rD|t@ rD|t	@  rDt
}	nd }	x"|D ]\}
}|
|kr|t@ rtj||}|	r||	kr|t || }|d |
tkr|t x&|f|	|  D ]}|t || qW |t || | | |< n|t|
  || n||
 || qP|
tkr|t@ rF|t|
  |fdd}n||
 d }|| }|d t||| ||	 || | | |< qP|
tkr|t@ r|t n|t qP|
|kr|t@ rtd|
f nt|rR|
tk	rR|
tkr|t n|t || }|d ||d  ||d  t| |d | |t  || | | |< nl|t || }|d ||d  ||d  t| |d | || | | |< |
tkr|t! n|t" qP|
t#kr.|\}}}}|r|t$ ||d d  t| |||B | @  |rj|t$ ||d d d  qP|
|krB||
 qP|
|kr||
 || }|d |d dkr||d n*|d j% \}}||krtd|| t| |d | |t  || | | |< qP|
t&kr||
 || }|d t| || |t  || | | |< qP|
t'kr||
 |t(@ r@t)j*||}|t@ rXt+j*||}n"|t@ rz|t	@  rzt,j*||}|| qP|
t-kr&||
 g }|j }xZ|d D ]N}|| }|d t| || |t. |||  |d || | | |< qW |t x|D ]}|| | | |< q
W qP|
t/krt||
 |t@ rLt0| }n|t@ rj|t	@  rjt1| }|| qP|
t2kr|t@ r|t|
  n||
 ||d  qP|
t3kr\||
 ||d d  || }|d t| |d | |d rF|t. || }|d || | d | |< t| |d | || | | |< n|| | d | |< qPtd|
f qPW d S )	Nr   c             S   s   t j| |S )N)_sregetlower)Zliteralflagsr$   r$   r(   fixupf   s    z_compile.<locals>.fixupz*internal: unsupported template operator %r      z(look-behind requires fixed-width patternz%internal: unsupported operand type %r)4appendlen_LITERAL_CODES_REPEATING_CODES_SUCCESS_CODES_ASSERT_CODESSRE_FLAG_IGNORECASESRE_FLAG_LOCALESRE_FLAG_UNICODESRE_FLAG_ASCII_ignorecase_fixesr-   r.   Z	IN_IGNORENOT_LITERALNEGATELITERALFAILUREZ	OP_IGNOREIN_compile_charsetZANYSRE_FLAG_DOTALLZANY_ALLSRE_FLAG_TEMPLATEerror_simpleREPEAT
MAX_REPEATZ
REPEAT_ONEZMIN_REPEAT_ONE_compileSUCCESSZ	MAX_UNTILZ	MIN_UNTIL
SUBPATTERNZMARKgetwidthZCALLZATSRE_FLAG_MULTILINEZAT_MULTILINEgetZ	AT_LOCALEZ
AT_UNICODEBRANCHZJUMPCATEGORY	CH_LOCALE
CH_UNICODEZGROUPREFZGROUPREF_EXISTS)codepatternr/   emitZ_lenZLITERAL_CODESZREPEATING_CODESZSUCCESS_CODESZASSERT_CODESfixesopavloskipkr0   group	add_flags	del_flagsphitailZ
tailappendZskipyesZskipnor$   r$   r(   rJ   @   s.   



 



 







  






 


 




  







 
 rJ   c             C   s   |j }xt| ||D ]\}}|| |tkr.q|tkr@|| q|tksP|tkrj||d  ||d  q|tkr~|j| q|tkr|j| q|t	kr|t
@ r|t|  q|t@ r|t@  r|t|  q|| qtd|f qW |t d S )Nr   r1   z%internal: unsupported set operator %r)r3   _optimize_charsetr?   r@   RANGERANGE_IGNORECHARSETextend
BIGCHARSETrQ   r:   rR   r;   r<   rS   rF   rA   )charsetr/   rT   r0   rW   rV   rX   rY   r$   r$   r(   rC      s,    

rC   c             C   sd  g }g }t d}xt| D ]j\}}x^y |tkrx|rn||}d||< |rv||krvx"|| D ]}	d||	< q\W nd||< n|tkrt|d |d d }
|rt||
}
|r|rxN|
D ].}d||< ||krx|| D ]}	d||	< qW qW nx>|
D ]}d||< qW n(|tkr|j||f n|j||f W nT tk
r|   t|dkrV|dd 7 }w&|rj|tkrjt	}|j||f Y nX P q&W qW g }d}xj|j
d|}|dk rP t|dkrd }P |j
d|}|dk r|j|t|f P |j||f qW |d k	rvxF|D ]>\}}|| dkr2|jt|f n|jt||d ff qW ||7 }|snt|t| k rr|S | S t|dkrt|}|jt|f ||7 }|S t|}i }t d}d}t  }xftdddD ]V}|||d  }||kr|| ||d < n$| ||d < ||< |d7 }||7 }qW t|}|gt| |dd< |jt|f ||7 }|S )N   r1   r       i   r2   i   )	bytearrayr@   rd   rangemapr?   r3   
IndexErrorr4   re   find
_mk_bitmaprf   bytes_bytes_to_codesrh   )ri   r0   rW   Zoutrb   ZcharmaprX   rY   rZ   r\   rr'   Zrunsqr`   datacompsmappingZblockZchunkr$   r$   r(   rc      s    









rc      r1      0   1   c                s8   | j td d d  fddttd  D S )Nr1   c                s"   g | ]}|  | d qS )r2   r$   )r%   r'   )	_CODEBITS_intsr$   r(   
<listcomp>z  s   z_mk_bitmap.<locals>.<listcomp>r   )	translate_BITS_TRANSrm   r4   )bitsr}   r~   r$   )r}   r~   r   r(   rq   x  s    rq   c             C   s@   t | jd}|jtjkstt||j t| ks8t|j S )NI)
memoryviewcastitemsizer-   CODESIZEAssertionErrorr4   tolist)bar$   r$   r(   rs   }  s    rs   c             C   s<   | d j  \}}||  ko"dkn  o:| d d d tkS )Nr2   r1   r   )rM   rL   )rY   rZ   ra   r$   r$   r(   rG     s    rG   c             C   sv   dgt |  }xbtdt | D ]P}||d  }x>| | | | kr`|dkrRd||< P ||d  }q0W |d ||< qW |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]
    r   r1   )r4   rm   )prefixZtabler'   Zidxr$   r$   r(   _generate_overlap_table  s    	r   c             C   s   g }|j }d }x| jD ]\}}|tkr0|| q|tkr|\}}}}	|t@ rNP t|	\}
}}|d kr|d k	rvt|}n|d k	rt|| }|j|
 |sP qP qW ||dfS ||dfS )NTF)r3   rv   r@   rL   r9   _get_literal_prefixr4   rg   )rU   r   Zprefixappendprefix_skiprX   rY   r]   r^   r_   r`   Zprefix1Zprefix_skip1got_allr$   r$   r(   r     s,    



r   c             C   s"  g }|j }| jr| jd \}}|tkr|\}}}}|r|t@  r|d \}}|tkrd|||f nR|tkrg }	|	j }
x|d D ].}|sP |d \}}|tkr|
||f qP qW |	}nf|tkrg }	|	j }
xP|d D ]0}|sP |d \}}|tkr|
||f qP qW |	}n|tkr|}|S )Nr   r1   )r3   rv   rL   r9   r@   rP   rB   )rU   ri   ZcharsetappendrX   rY   r]   r^   r_   r`   cZcappendr$   r$   r(   _get_charset_prefix  sF    


r   c             C   sZ  |j  \}}|tkrt}|dkr8| jtdd||g d S g }d}g }|t@ sft|\}}}|sft|}| j}	|	t t| }
|	d d}|rt	}|d kr|r|t
B }n|r|tB }|	| |tk r|	| n|	t |d t }|	t|t |r4|	t| |d krt|}|	| | j| | jt| n|rFt|||  t| |
 | |
< d S )Nr      )rM   MAXCODErg   ZINFOr9   r   r   r3   r4   ZSRE_INFO_PREFIXZSRE_INFO_LITERALZSRE_INFO_CHARSETminr   rC   )rT   rU   r/   rZ   ra   r   r   ri   r   rV   r[   Zmaskr$   r$   r(   _compile_info  sP     



r   c             C   s   t | ttfS )N)
isinstancestrrr   )objr$   r$   r(   isstring  s    r   c             C   s8   | j j|B }g }t|| | t|| j| |jt |S )N)rU   r/   r   rJ   rv   r3   rK   )r`   r/   rT   r$   r$   r(   _code  s    
r   c             C   s   t | r| }tj| |} nd }t| |}| jj}d g| jj }x|j D ]\}}|||< qHW tj	||| jj
B || jjd ||S )Nr1   )r   	sre_parseparser   rU   Z	groupdictgroupsitemsr-   compiler/   )r`   r/   rU   rT   Z
groupindexZ
indexgroupr\   r'   r$   r$   r(   r   -  s    

r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )NN)r   )'__doc__r-   r   sre_constantsZMAGICr   r@   r>   r5   rH   Z
MIN_REPEATrI   r6   rK   rA   r7   ZASSERTZ
ASSERT_NOTr8   Z_equivalencesr=   rJ   rC   rc   r   r}   r   r   intrq   rs   rG   r   r   r   r   r   r   r   r$   r$   r$   r(   <module>   sV   
                 
{
)9