mò
­fIc           @   s  d  Z  d k Z d k Z d k Te i e j p
 t d ‚ e i d j o
 d Z n d Z d „  Z d „  Z	 d d	 „ Z d
 „  Z d „  Z d „  Z d „  Z d „  Z y e Wn" e j
 o e d ƒ f Z n  Xe d ƒ e e d ƒ ƒ f Z d „  Z d „  Z d d „ Z d S(   s   Internal support module for sreN(   t   *s   SRE module mismatchi   iÿÿ  l   ÿÿ c         C   s   |  S(   N(   t   x(   R   (    (    t(   /mit/python/lib/python2.4/sre_compile.pyt   _identityfunction   s    c         C   s„  |  i } t }	 h  t d <t d <} h  t d <t	 d <t
 d <} h  t d <t d <} h  t d <t d <} x| D]ý\ } } | | j oS | t @o, | t t | ƒ | t i | | ƒ ƒ q|| t | ƒ | | ƒ q | t j o‚ | t @o" | t t | ƒ | d „ } n | t | ƒ t } |	 |  ƒ } | d ƒ t | | |  | ƒ |	 |  ƒ | |  | <q | t  j o/ | t! @o | t t" ƒ q|| t t  ƒ q | | j oÚ| t# @oƒ t$ d ‚ | t t ƒ |	 |  ƒ } | d ƒ | | d ƒ | | d ƒ t% |  | d | ƒ | t t ƒ |	 |  ƒ | |  | <q|t& | ƒ o¦ | t j	 o™ | t
 j o | t t' ƒ n | t t( ƒ |	 |  ƒ } | d ƒ | | d ƒ | | d ƒ t% |  | d | ƒ | t t ƒ |	 |  ƒ | |  | <q|| t t ƒ |	 |  ƒ } | d ƒ | | d ƒ | | d ƒ t% |  | d | ƒ |	 |  ƒ | |  | <| t
 j o | t t) ƒ q|| t t* ƒ q | t+ j o‚ | d o( | t t, ƒ | | d d d ƒ n t% |  | d | ƒ | d o, | t t, ƒ | | d d d d ƒ q|q | | j o | t | ƒ q | | j o· | t | ƒ |	 |  ƒ } | d ƒ | d d j o | d ƒ n; | d i- ƒ  \ } } | | j o t$ d ‚ n | | ƒ t% |  | d | ƒ | t t ƒ |	 |  ƒ | |  | <q | t0 j oZ | t | ƒ |	 |  ƒ } | d ƒ t% |  | | ƒ | t t ƒ |	 |  ƒ | |  | <q | t1 j oƒ | t | ƒ | t2 @o t3 i4 | | ƒ } n | t5 @o t6 i4 | | ƒ } n" | t7 @o t8 i4 | | ƒ } n | t9 | ƒ q | t: j oÇ | t | ƒ g  }
 |
 i } xt | d D]h } |	 |  ƒ } | d ƒ t% |  | | ƒ | t t= ƒ | |	 |  ƒ ƒ | d ƒ |	 |  ƒ | |  | <q;W| d ƒ xÈ|
 D] }
 |	 |  ƒ |
 |  |
 <q¸Wq | t> j oR | t | ƒ | t5 @o t? | } n | t7 @o t@ | } n | tA | ƒ q | tB j oA | t @o | t t | ƒ n | t | ƒ | | d ƒ q | tC j oÙ | t | ƒ | | d d ƒ |	 |  ƒ } | d ƒ t% |  | d | ƒ | d oh | t t= ƒ |	 |  ƒ } | d ƒ |	 |  ƒ | d |  | <t% |  | d | ƒ |	 |  ƒ | |  | <q||	 |  ƒ | d |  | <q tF d | f ‚ q Wd  S(   Ni   c         C   s   t  i |  | ƒ S(   N(   t   _sret   getlowert   literalt   flags(   R   R   (    (    R   t   fixup.   s    i    s'   internal: unsupported template operatori   s(   look-behind requires fixed-width patterns   unsupported operand type(G   t   codet   appendt   emitt   lent   _lent   LITERALt   NOT_LITERALt   LITERAL_CODESt   REPEATt
   MIN_REPEATt
   MAX_REPEATt   REPEATING_CODESt   SUCCESSt   FAILUREt   SUCCESS_CODESt   ASSERTt
   ASSERT_NOTt   ASSERT_CODESt   patternt   opt   avR   t   SRE_FLAG_IGNORECASEt   OPCODESt	   OP_IGNORER   R   t   INR   R   t   skipt   _compile_charsett   ANYt   SRE_FLAG_DOTALLt   ANY_ALLt   SRE_FLAG_TEMPLATEt   errort   _compilet   _simplet
   REPEAT_ONEt   MIN_REPEAT_ONEt	   MAX_UNTILt	   MIN_UNTILt
   SUBPATTERNt   MARKt   getwidtht   lot   hit   CALLt   ATt   SRE_FLAG_MULTILINEt   AT_MULTILINEt   gett   SRE_FLAG_LOCALEt	   AT_LOCALEt   SRE_FLAG_UNICODEt
   AT_UNICODEt   ATCODESt   BRANCHt   tailt
   tailappendt   JUMPt   CATEGORYt	   CH_LOCALEt
   CH_UNICODEt   CHCODESt   GROUPREFt   GROUPREF_EXISTSt   skipyest   skipnot
   ValueError(   R	   R   R   RH   RI   R   R   R2   R   R   R?   R"   R@   R   R3   R   R   R   R   (    (    R   R)      s
   	! 	"
	 
 c         C   sq  | i } | d  j o
 t } n x<t |  | ƒ D]+\ } } | t
 | ƒ | t j o q0 | t j o | | | ƒ ƒ q0 | t j o, | | | d ƒ ƒ | | | d ƒ ƒ q0 | t j o | i | ƒ q0 | t j o | i | ƒ q0 | t j oT | t @o | t t | ƒ q[| t @o | t t | ƒ q[| t | ƒ q0 t d ‚ q0 W| t
 t ƒ d  S(   Ni    i   s"   internal: unsupported set operator(   R	   R
   R   R   t   NoneR   t   _optimize_charsett   charsetR   R   R   t   NEGATER   t   RANGEt   CHARSETt   extendt
   BIGCHARSETRB   R   R9   RE   RC   R;   RD   R(   R   (   RM   R   R	   R   R   R   R   (    (    R   R#   ­   s2    	
 c         C   sP  g  } | i }	 d g d } y¿ x¸ |  D]° \ } } | t j o |	 | | f ƒ q& | t j o d | | | ƒ <q& | t
 j o@ xR t | | d ƒ | | d ƒ d ƒ D] }
 d | |
 <q© Wq& | t j o |  Sq& q& WWn  t j
 o t |  | ƒ Sn Xd }
 } } g  } | i } xe | D]] } | o% | d j o
 |
 } n | d } n" | o | | | f ƒ d } n |
 d }
 q"W| o | | | f ƒ n t | ƒ d j o{ xS | D]K \ } } | d j o |	 t | f ƒ q¸|	 t
 | | | d f f ƒ q¸Wt | ƒ t |  ƒ j  o | SqLn! t | ƒ } |	 t | f ƒ | S|  S(   Ni    i   i   i   (   t   outR
   t	   outappendt   charmapRM   R   R   RN   R   R   RO   t   ranget   iRB   t
   IndexErrort   _optimize_unicodet   pt   nt   runst
   runsappendt   cR   t
   _mk_bitmapt   dataRP   (   RM   R   RU   R   R]   RS   R\   R`   R^   RT   RW   R[   RZ   R   (    (    R   RL   Ê   sZ    	 ( 	 

 "c         C   s–   g  } | i } t i d j o
 d } n d } | \ } } xT |  D]L } | o | | } n | | } | t
 j o | | ƒ | \ } } qB qB W| S(   Ni   i   i    l    l    (   i   i    (   l    l    (   R`   R
   t
   dataappendR   t   CODESIZEt   startt   mt   vt   bitsR^   t   MAXCODE(   Rf   R^   Ra   Re   Rd   Rc   R`   (    (    R   R_   ý   s    	
 

c         C   s…  y d  k  } Wn t j
 o |  Sn Xd g d } d } yµ x® |  D]¦ \ } } | t j o
 d } qD | t j o d | | | ƒ <qD | t
 j o@ xR t | | d ƒ | | d ƒ d ƒ D] } d | | <q½ WqD | t j o |  SqD qD WWn t j
 o |  Sn X| oB t i d j o |  Sn x' t d ƒ D] } | | | | <q5Wn h  }
 d g d }	 d } g  } xz t d ƒ D]l } t | | d | d d !ƒ } |
 i | | ƒ } | |	 | <| | j o | d } | t | ƒ } q~q~W| g } t i d j o
 d } n d } | i  d	 |	 ƒ i ƒ  }	 | i  | |	 ƒ }	 |	 i t i j p t  ‚ | |	 i! ƒ  } | | d d +t" | f g S(
   Ni    i   i   iÿÿ  i   i   t   Ht   It   b(#   t   arrayt   ImportErrorRM   RU   t   negateR   R   RN   R   R   RO   t   xrangeRW   RB   RX   t   syst
   maxunicodet   compst   mappingt   blockR`   t   tuplet   chunkt
   setdefaultt   newR_   t   headerR   Rb   R	   t   tostringt   itemsizet   AssertionErrort   tolistRR   (   RM   R   RU   R	   Ru   Rm   R   Rk   Rw   Rr   Rq   R`   Rx   RW   Rs   R   (    (    R   RY   (  sb    	 
( 	  

	
c         C   sq   |  d i ƒ  \ } } | d j o | t j o t d ‚ n | | j o
 d j n o |  d d d t j S(   Ni   i    s   nothing to repeati   (   R   R1   R2   R3   t	   MAXREPEATR(   R/   (   R   R2   R3   (    (    R   R*   ]  s    c         C   s¡  | i ƒ  \ } } | d j o d  Sn g  } | i } d } g  }	 |	 i }
 | t @p6x¬ | i D]¡ \ } } | t j o/ t | ƒ | j o | d } n | | ƒ q` | t j oK t | d ƒ d j o4 | d d \ } } | t j o | | ƒ qPq` Pq` W| o{| i oq| i d \ } } | t j o½ | d o² | d d \ } } | t j o |
 | | f ƒ q„| t j ol g  } | i } xZ | d D]D } | p Pn | d \ } } | t j o | | | f ƒ qžPqžW| }	 q„qˆ| t j ol g  } | i } xq | d D]D } | p Pn | d \ } } | t j o | | | f ƒ qPqW| }	 qˆ| t j o
 | }	 qˆqŒn |  i } | t t ƒ t |  ƒ } | d ƒ d } | oE t } t | ƒ | j o t | i ƒ j n o | t } q n |	 o | t } n | | ƒ | t  j  o | | ƒ n | t  ƒ | t   } | t  j  o | | ƒ n | d ƒ | oé | t | ƒ ƒ | | ƒ |  i! | ƒ d g d g t | ƒ } x t# t | ƒ ƒ D]| } | | d | | d <x] | | d d j oG | | | | | d d j o& | | | d d d | | d <qøWqÙW|  i! | d ƒ n |	 o t% |	 | |  ƒ n t |  ƒ | |  | <d  S(   Ni    i   iÿÿÿÿ(&   R   R1   R2   R3   t   prefixR
   t   prefixappendt   prefix_skipRM   t   charsetappendR   R   R`   R   R   R   R   R/   R>   R^   t   cappendRZ   R!   R	   R   R   t   INFOR"   t   maskt   SRE_INFO_PREFIXt   SRE_INFO_LITERALt   SRE_INFO_CHARSETRg   RQ   t   tableRn   RW   R#   (   R	   R   R   R€   R~   R   R   Rˆ   RW   RM   R   R"   R3   R^   R‚   R„   RZ   R2   R   R   (    (    R   t   _compile_infod  s¬    		
 $	 	 
	-




  6+t    c         C   s-   x& t  D] } t |  | ƒ o d Sq q Wd S(   Ni   i    (   t   STRING_TYPESt   tpt
   isinstancet   obj(   RŽ   RŒ   (    (    R   t   isstringÕ  s
     c         C   sN   |  i i | B} g  } t | |  | ƒ t | |  i | ƒ | i t t	 ƒ | S(   N(
   RZ   R   R   R	   R‰   R)   R`   R
   R   R   (   RZ   R   R	   (    (    R   t   _codeÛ  s    i    c   	      C   sÖ   t  |  ƒ o% d  k } |  } | i |  | ƒ }  n d  } t |  | ƒ } |  i i	 d j o t
 d ƒ ‚ n |  i i } d  g |  i i	 } x$ | i ƒ  D] \ } } | | | <q– Wt i | | | |  i i	 d | | ƒ S(   Nid   s6   sorry, but this version only supports 100 named groupsi   (   R   RZ   t	   sre_parseR   t   parseR   RK   R   R	   t   groupsR{   t	   groupdictt
   groupindext
   indexgroupt   itemst   kRW   R   t   compile(	   RZ   R   RW   R   R˜   R	   R•   R‘   R–   (    (    R   R™   ê  s     	 (   t   __doc__R   Ro   t   sre_constantst   MAGICR{   Rb   Rg   R   R)   RK   R#   RL   R_   RY   R*   R‰   t   unicodet	   NameErrort   typeR‹   R   R   R™   (   R   RY   Rg   R_   R‰   R   R*   R#   R‹   R™   Ro   R   R   R)   RL   (    (    R   t   ?   s,   
		’	3	+	5		j		