mò
­fIc           @   sÀ  d  Z  d k Z d k Td Z d Z e d ƒ Z e d ƒ Z e d ƒ Z e d ƒ Z	 h  d	 e
 e d
 ƒ f <d e
 e d ƒ f <d e
 e d ƒ f <d e
 e d ƒ f <d e
 e d ƒ f <d e
 e d ƒ f <d e
 e d ƒ f <d e
 e d ƒ f <Z h  d e e f <d e e f <d e e f <d e e e f g f <d e e e f g f <d e e e f g f <d e e e f g f <d e e e f g f <d  e e e f g f <d! e e f <Z h  d" e <d# e <d$ e <d% e <d& e <d' e  <d( e! <Z" d) f  d* „  ƒ  YZ# d+ f  d, „  ƒ  YZ$ d- f  d. „  ƒ  YZ% d/ „  Z& d0 „  Z' d1 „  Z( d2 „  Z) d3 „  Z* d4 d5 „ Z+ d6 „  Z, d7 „  Z- d8 e. d9 „ Z/ d: „  Z0 d; „  Z1 d S(<   s   Internal support module for sreN(   t   *s   .\[{()*+?^$|s   *+?{t
   0123456789t   01234567t   0123456789abcdefABCDEFs    	
s   \as   s   \bs   s   \fs   s   \ns   
s   \rs   s   \ts   	s   \vs   s   \\s   \s   \As   \Bs   \ds   \Ds   \ss   \Ss   \ws   \Ws   \Zt   it   Lt   mt   st   xt   tt   ut   Patternc           B   s/   t  Z d „  Z d  d „ Z d „  Z d „  Z RS(   Nc         C   s(   d |  _ g  |  _ d |  _ h  |  _ d  S(   Ni    i   (   t   selft   flagst   opent   groupst	   groupdict(   R   (    (    t&   /mit/python/lib/python2.4/sre_parse.pyt   __init__C   s    			c         C   sŠ   |  i } | d |  _ | d  j	 oS |  i i | d  ƒ } | d  j	 o  t d t	 | ƒ | | f ‚ n | |  i | <n |  i
 i | ƒ | S(   Ni   s7   redefinition of group name %s as group %d; was group %d(   R   R   t   gidt   namet   NoneR   t   gett   ogidt   errort   reprR   t   append(   R   R   R   R   (    (    R   t	   opengroupH   s    	 c         C   s   |  i i | ƒ d  S(   N(   R   R   t   removeR   (   R   R   (    (    R   t
   closegroupS   s    c         C   s   | |  i j  o | |  i j S(   N(   R   R   R   R   (   R   R   (    (    R   t
   checkgroupU   s    (   t   __name__t
   __module__R   R   R   R   R   (    (    (    R   R   A   s   		t
   SubPatternc           B   sq   t  Z d  d „ Z d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d	 „  Z
 d
 „  Z d „  Z d „  Z RS(   Nc         C   s6   | |  _  | d  j o
 g  } n | |  _ d  |  _ d  S(   N(   t   patternR   t   dataR   t   width(   R   R"   R#   (    (    R   R   Z   s
    	
	i    c         C   sƒ  d } t f  ƒ t g  ƒ f } x^|  i D]S\ } } | d | Gd } | d j o7 Hd } x| D]! \ } } | d d | G| GHqa Wnæ | d j oe Hd } d } xÈ | d D]E } | d j o | d d GHn | i
 | d ƒ d } | d } q¯ Wnt t | ƒ | j oV x] | D]G } t | t ƒ o' | p Hn | i
 | d ƒ d } q| Gd } qWn | Gd } | p Hq( q( Wd  S(   Ni   s     i    t   int   brancht   or(   t   nlt   typet   seqtypesR   R#   t   opt   avt   levelt   aR   t   dumpt
   isinstanceR!   (   R   R-   R.   R(   R   R*   R,   R+   (    (    R   R/   `   s<    
     
 c         C   s   t  |  i ƒ S(   N(   R   R   R#   (   R   (    (    R   t   __repr__|   s    c         C   s   t  |  i ƒ S(   N(   t   lenR   R#   (   R   (    (    R   t   __len__~   s    c         C   s   |  i | =d  S(   N(   R   R#   t   index(   R   R4   (    (    R   t   __delitem__€   s    c         C   s   |  i | S(   N(   R   R#   R4   (   R   R4   (    (    R   t   __getitem__‚   s    c         C   s   | |  i | <d  S(   N(   t   codeR   R#   R4   (   R   R4   R7   (    (    R   t   __setitem__„   s    c         C   s   t  |  i |  i | | !ƒ S(   N(   R!   R   R"   R#   t   startt   stop(   R   R9   R:   (    (    R   t   __getslice__†   s    c         C   s   |  i i | | ƒ d  S(   N(   R   R#   t   insertR4   R7   (   R   R4   R7   (    (    R   R<   ˆ   s    c         C   s   |  i i | ƒ d  S(   N(   R   R#   R   R7   (   R   R7   (    (    R   R   Š   s    c         C   s  |  i o |  i Sn d } } t t t t t t	 f } t t f } x|  i D]…\ }
 } |
 t j ol t i }	 d } xB | d D]6 } | i ƒ  \ } } t |	 | ƒ }	 t | | ƒ } q€ W| |	 } | | } qM |
 t j o* | i ƒ  \ }	 } | |	 } | | } qM |
 t j o. | d i ƒ  \ }	 } | |	 } | | } qM |
 | j oJ | d i ƒ  \ }	 } | t |	 ƒ | d } | t | ƒ | d } qM |
 | j o | d } | d } qM |
 t j o PqM qM Wt t | t i ƒ ƒ t t | t i ƒ ƒ f |  _ |  i S(   Nl    i    i   i   (    R   R$   t   lot   hit   ANYt   RANGEt   INt   LITERALt   NOT_LITERALt   CATEGORYt	   UNITCODESt
   MIN_REPEATt
   MAX_REPEATt   REPEATCODESR#   R+   R,   t   BRANCHt   syst   maxintR   t   jt   getwidtht   lt   ht   mint   maxt   CALLt
   SUBPATTERNt   longt   SUCCESSt   int(   R   RE   R,   R=   RH   R>   RO   RL   RN   R   R+   (    (    R   RM   Œ   sH    


 	 



	3(   R   R    R   R   R/   R1   R3   R5   R6   R8   R;   R<   R   RM   (    (    (    R   R!   X   s   								t	   Tokenizerc           B   sA   t  Z d „  Z d „  Z d d „ Z d „  Z d „  Z d „  Z RS(   Nc         C   s    | |  _  d |  _ |  i ƒ  d  S(   Ni    (   t   stringR   R4   t   _Tokenizer__next(   R   RX   (    (    R   R   ²   s    		c         C   s³   |  i t |  i ƒ j o d  |  _ d  Sn |  i |  i } | d d j oE y |  i |  i d } Wn t j
 o t	 d ‚ n X| | } n |  i t | ƒ |  _ | |  _ d  S(   Ni    s   \i   s   bogus escape (end of line)(
   R   R4   R2   RX   R   t   nextt   chart   ct
   IndexErrorR   (   R   R\   R[   (    (    R   t   __next¶   s    	i   c         C   s1   | |  i j o | o |  i ƒ  n d Sn d S(   Ni   i    (   R[   R   RZ   t   skipRY   (   R   R[   R_   (    (    R   t   matchÃ   s
    c         C   s   |  i } |  i ƒ  | S(   N(   R   RZ   t   thisRY   (   R   Ra   (    (    R   R   É   s    	
c         C   s   |  i |  i f S(   N(   R   R4   RZ   (   R   (    (    R   t   tellÍ   s    c         C   s   | \ |  _  |  _ d  S(   N(   R4   R   RZ   (   R   R4   (    (    R   t   seekÏ   s    (   R   R    R   RY   R`   R   Rb   Rc   (    (    (    R   RW   ±   s   				c         C   sF   d |  j o
 d j n p( d |  j o
 d j n p
 |  d j S(   NR.   t   zt   At   Zt   _(   R[   (   R[   (    (    R   t   isidentÒ   s    c         C   s   d |  j o
 d j n S(   Nt   0t   9(   R[   (   R[   (    (    R   t   isdigitÕ   s    c         C   sV   t  |  d ƒ p t Sn x6 |  d D]* } t  | ƒ o t | ƒ o t Sq$ q$ Wt S(   Ni    i   (   Rh   R   t   FalseR[   Rk   t   True(   R   R[   (    (    R   t   isnameØ   s     c         C   sÑ  t  i | ƒ } | o | Sn t i | ƒ } | o | Sn yh| d d !} | d j oŽ x8 |  i t j o' t	 | ƒ d j  o | |  i ƒ  } q\ W| d } t	 | ƒ d j o t
 d t d | ƒ ‚ n t t | d ƒ d @f Sn’ | t j o` x8 |  i t j o' t	 | ƒ d j  o | |  i ƒ  } q÷ W| d } t t | d	 ƒ d @f Sn% | t j o t
 d t | ƒ ‚ n t	 | ƒ d j o t t | d ƒ f Sn Wn t j
 o n Xt
 d t | ƒ ‚ d  S(
   Ni   i   R   i   s   bogus escape: %ss   \i   iÿ   i   (   t   ESCAPESR   t   escapeR7   t
   CATEGORIESR\   t   sourceRZ   t	   HEXDIGITSR2   R   R   RB   RV   t	   OCTDIGITSt   DIGITSt   ordt
   ValueError(   Rr   Rp   R\   R7   (    (    R   t   _class_escapeá   s:     #
 #
c         C   sw  t  i | ƒ } | o | Sn t i | ƒ } | o | Sn y| d d !} | d j ow x8 |  i t j o' t	 | ƒ d j  o | |  i ƒ  } q\ Wt	 | ƒ d j o
 t
 ‚ n t t | d d ƒ d @f SnO| d j oZ x8 |  i t j o' t	 | ƒ d j  o | |  i ƒ  } qà Wt t | d d ƒ d @f Snè | t j oÚ |  i t j ou | |  i ƒ  } | d t j oP | d t j o? |  i t j o/ | |  i ƒ  } t t | d d ƒ d @f SqÉn t | d ƒ } | | i j  o+ | i | ƒ p t d	 ‚ n t | f Sn t
 ‚ n t	 | ƒ d j o t t | d ƒ f Sn Wn t
 j
 o n Xt d
 t | ƒ ‚ d  S(   Ni   i   R   i   i   iÿ   Ri   i   s   cannot refer to open groups   bogus escape: %s(   Rq   R   Rp   R7   Ro   R\   Rr   RZ   Rs   R2   Rw   RB   RV   Rt   Ru   t   groupt   stateR   R   R   t   GROUPREFRv   R   (   Rr   Rp   Rz   R\   R7   Ry   (    (    R   t   _escape  sJ     #
 #2#
i   c         C   sÏ  g  } | i }	 |  i }
 xa |	 t |  | ƒ ƒ |
 d ƒ o q n | p Pn |  i	 p |
 d d ƒ o Pq t
 d ‚ q Wt | ƒ d j o | d Sn t | ƒ } | i } x d  } xp | D]C } | p Pn | d  j o | d } qÀ | d | j o PqÀ qÀ Wx | D] } | d =qW| | ƒ q³ Pq³ Wx} | D]3 } t | ƒ d j p | d d t j o Pq9q9Wg  } | i } x | D] } | | d ƒ q†W| t | f ƒ | S| i t d  | f f ƒ | S(   Ni   t   |t   )i    s   pattern not properly closed(   t   itemsR   t   itemsappendRr   R`   t   sourcematcht   _parseRz   t   nestedRZ   R   R2   R!   t
   subpatternt   subpatternappendR   t   prefixt   itemRB   t   sett	   setappendRA   RI   (   Rr   Rz   Rƒ   Rˆ   R‡   R   R„   R…   R‰   R€   R   R†   (    (    R   t
   _parse_sub-  s^    		  	   	 
 (		 c         C   s¬   t  |  | ƒ } |  i d ƒ o0 t  |  | ƒ } |  i d ƒ o t d ‚ qU n d  } |  i o! |  i d d ƒ o t d ‚ n t	 | ƒ } | i t | | | f f ƒ | S(   NR}   s/   conditional backref with more than two branchesR~   i    s   pattern not properly closed(   R‚   Rr   Rz   t   item_yesR`   t   item_noR   R   RZ   R!   R„   R   t   GROUPREF_EXISTSt	   condgroup(   Rr   Rz   RŽ   RŒ   R‹   R„   (    (    R   t   _parse_sub_condh  s    c          C   s   t  | ƒ } | i } |  i } |  i } t
 } d- } d. } d/ } t t f } x®|  i | j o Pn | ƒ  } | d  j o Pn | i t @oO | t j o qN n | d j o* x  | ƒ  } | d0 j o Pq° q° WqN qÛ n | o+ | d	 t j o | t t | ƒ f ƒ qN | d
 j o¸g  } | i } | d ƒ o | t d  f ƒ n | } x×| ƒ  } | d j o | | j o PnR | o$ | d	 d j o t |  | ƒ } n' | o t t | ƒ f } n
 t! d ‚ | d ƒ o| ƒ  } | d j oH | d	 t" j o | d d	 } n | | ƒ | t t d ƒ f ƒ Pq&| o­ | d	 d j o t |  | ƒ } n t t | ƒ f } | d	 t j p | d	 t j o t! d ‚ n | d }
 | d } | |
 j  o t! d ‚ n | t& |
 | f f ƒ q&t! d ‚ qT| d	 t" j o | d d	 } n | | ƒ qTW| | ƒ d j o' | d	 d	 t j o | | d	 ƒ q÷| | ƒ d j oF | d	 d	 t j o1 | d d	 t j o | t' | d d f ƒ q÷| t" | f ƒ qN | ox| d	 t( j og| d j o d1 \ } } nŠ| d j o d	 t+ } } nl| d j o d t+ } } nN| d j o7|  i d j o | t t | ƒ f ƒ qN n |  i, ƒ  } d	 t+ } } d }
 } x% |  i t. j o |
 |  i ƒ  }
 q£W| d ƒ o) x, |  i t. j o | | ƒ  } qØWn |
 } | d ƒ p* | t t | ƒ f ƒ |  i/ | ƒ qN n |
 o t0 |
 ƒ } n | o t0 | ƒ } n | | j  o t! d ‚ qn
 t! d ‚ | o | d } n d  } | p( | | ƒ d j o" | d	 d	 t2 j o t! d ‚ n | d	 d	 | j o t! d ‚ n | d ƒ o t | | | f f | d <q÷t | | | f f | d <qN | d j o | t3 d  f ƒ qN | d j oòd }	 d  } d  } | d ƒ oÞd	 }	 | d  ƒ oi| d ƒ oq d } xD | ƒ  } | d  j o t! d! ‚ n | d" j o Pn | | } qÇWd }	 t8 | ƒ p t! d# ‚ qqx
| d ƒ oª d } xD | ƒ  } | d  j o t! d! ‚ n | d j o Pn | | } qEWt8 | ƒ p t! d# ‚ n | i9 i | ƒ } | d  j o t! d$ ‚ n | t; | f ƒ qN qx
| ƒ  } | d  j o t! d% ‚ n t! d& | ‚ q|
| d' ƒ o
 d }	 q|
| d ƒ oU x1 |  i d  j p |  i d j o Pn | ƒ  qAW| d ƒ p t! d( ‚ qN qN q|
|  i | j o¹ | ƒ  } d } | d j o0 |  i | j o t! d) ‚ n d } | ƒ  } n t= |  | ƒ } | d ƒ p t! d( ‚ n | d j o | t? | | f f ƒ qN | t@ | | f f ƒ qN q|
| d ƒ oÃ d } xD | ƒ  } | d  j o t! d! ‚ n | d j o Pn | | } qr	Wd }	 t8 | ƒ o0 | i9 i | ƒ } | d  j o t! d$ ‚ q(
qx
y t0 | ƒ } Wqx
tB j
 o t! d# ‚ qx
Xq|
|  i tC j o t! d% ‚ n x0 |  i tC j o | i tC | ƒ  B| _ qL
Wn |	 o¤ |	 d j o
 d  }	 n | iD | ƒ }	 | o tE |  | | ƒ } n t= |  | ƒ } | d ƒ p t! d( ‚ n |	 d  j	 o | iF |	 ƒ n | tG |	 | f f ƒ q÷xÍ | ƒ  } | d  j o t! d% ‚ n | d j o Pn t! d* ‚ q*WqN | d j o | t2 tH f ƒ qN | d+ j o | i t2 tI f ƒ qN | o1 | d	 d j o  tJ |  | | ƒ } | | ƒ qN t! d, ‚ qN W| S(2   NR}   R~   t   =t   !t   <i   t   #s   
i    t   [t   ^t   ]s   \s$   unexpected end of regular expressiont   -s   bad character rangei   t   ?R    t   +t   {t   }t    t   ,s   bad repeat intervals   not supportediÿÿÿÿs   nothing to repeats   multiple repeatt   .t   (t   Ps   unterminated namet   >s   bad character in group names   unknown group names   unexpected end of patterns   unknown specifier: ?P%st   :s   unbalanced parenthesiss   syntax errors   unknown extensiont   $s   parser error(   R}   R~   (   R   R‘   R’   (   R   R‘   (   Ns   
(   i    i   (L   R!   Rz   R„   R   R…   Rr   R   t	   sourcegetR`   R   R2   t   _lent   PATTERNENDERSt   ASSERTCHARSt   LOOKBEHINDASSERTCHARSRF   RG   RH   RZ   Ra   R   R   t   SRE_FLAG_VERBOSEt
   WHITESPACEt   SPECIAL_CHARSRB   Rv   Rˆ   R‰   t   NEGATER9   Rx   t   code1R   RA   t   code2R=   R>   R@   RC   t   REPEAT_CHARSRP   RQ   t	   MAXREPEATRb   t   hereRu   Rc   RV   R‡   t   ATR?   Ry   R   RŽ   R[   Rn   R   R   R{   t   dirRŠ   t   pt   ASSERTt
   ASSERT_NOTt   condnameRw   t   FLAGSR   R   R   RS   t   AT_BEGINNINGt   AT_ENDR|   R7   (    Rr   Rz   R¦   Rˆ   R´   R‡   R[   R‰   R¤   Ry   R=   R±   R¥   R„   R   R9   RH   R7   RQ   R…   R>   R§   R   R   R­   R®   Ra   RP   R¨   RŽ   R·   R³   (    (    R   R‚   v  sÚ   			  	  	
	  			
"

(=
  	0  	  		
   	  	  
  	i    c         C   sÕ   t  |  ƒ } | d  j o t ƒ  } n | | _ |  | _ t | | d ƒ } | i	 ƒ  } | d j o t d ‚ n | o t d ‚ n | t @o | i ƒ  n | t @o( | i i t @o t |  | i i ƒ Sn | S(   Ni    R~   s   unbalanced parenthesiss-   bogus characters at end of regular expression(   RW   t   strRr   R"   R   R   R   RŠ   R´   R   t   tailR   t   SRE_FLAG_DEBUGR/   R©   t   parse(   R»   R   R"   R´   Rr   R¼   (    (    R   R¾   ’  s     		c         C   sÉ  t  |  ƒ } | i } g  } | i } | | d „ } |  d  } t
 | ƒ t
 d ƒ j o
 t }	 n t }	 xâ| ƒ  } | d  j o Pn | o±| d d j o | d d !} | d j od } | i d ƒ oK xH | ƒ  } | d  j o t d	 ‚ n | d
 j o Pn | | } qÏ Wn | p t d ‚ n y* t | ƒ } | d j  o t d ‚ n Wn] t j
 oQ t | ƒ p t d ‚ n y | i | } Wqµt j
 o t d ‚ qµXn X| t | f ƒ qF| d j og | i t j o2 | | ƒ  } | i t j o | | ƒ  } qn | |	 t | d d ƒ d @ƒ ƒ qF| t  j o¶ t! } | i t  j ow | | ƒ  } | t j oY | d t j oH | i t j o8 | | ƒ  } t# } | |	 t | d d ƒ d @ƒ ƒ q×n | p | t t | d ƒ f ƒ q8qFy |	 t$ | d ƒ } Wn t j
 o n X| | ƒ qi | | ƒ qi Wd } g  } | i } d  g t( | ƒ }
 xI | D]A \ } } | t j o | | | f ƒ n | |
 | <| d } qzW| |
 f S(   Nc         C   sP   | o5 | d d t j o  t | d d |  f | d <n | t |  f ƒ d  S(   Niÿÿÿÿi    i   (   R´   RB   t   literalt   pappend(   R¿   R´   RÀ   (    (    R   R¿   µ  s     i    Rœ   i   s   \i   t   gR’   s   unterminated group nameR¡   s   bad group names   negative group numbers   bad character in group names   unknown group nameRi   i   iÿ   (*   RW   Rr   R   R   t   sgetR´   R   R.   R¿   t   sepR)   t   chrt   makechart   unichrRa   R   R\   R   R`   R[   R   RV   R4   Rw   Rn   R"   t
   groupindext   KeyErrorR]   t   MARKRZ   Rt   Ru   Rl   t   isoctalRm   Ro   R   R   t   groupsappendR2   t   literals(   Rr   R"   RÃ   R[   RÊ   R4   RË   R   R¿   RÅ   RÌ   R   R.   R\   R   Ra   RÂ   R´   R   (    (    R   t   parse_template®  s”    		

  	  	%.)"	 
c   	      C   sž   | i } | i d  } |  \ } } | } yI xB | D]: \ } } | | ƒ | | <} | d  j o t d ‚ q3 q3 WWn t j
 o t d ‚ n X| i | ƒ S(   Ni    s   unmatched groups   invalid group reference(   R`   Ry   RÁ   RX   RÃ   t   templateR   RÌ   R4   R   R   R   R]   t   join(	   RÎ   R`   R4   RÌ   RÁ   RÃ   R   R   Ry   (    (    R   t   expand_template  s    	 (2   t   __doc__RJ   t   sre_constantsR«   R¯   t   tupleRu   Rt   Rs   Rª   RB   Rv   Ro   R²   t   AT_BEGINNING_STRINGt   AT_BOUNDARYt   AT_NON_BOUNDARYRA   RD   t   CATEGORY_DIGITt   CATEGORY_NOT_DIGITt   CATEGORY_SPACEt   CATEGORY_NOT_SPACEt   CATEGORY_WORDt   CATEGORY_NOT_WORDt   AT_END_STRINGRq   t   SRE_FLAG_IGNORECASEt   SRE_FLAG_LOCALEt   SRE_FLAG_MULTILINEt   SRE_FLAG_DOTALLR©   t   SRE_FLAG_TEMPLATEt   SRE_FLAG_UNICODER¸   R   R!   RW   Rh   Rk   Rn   Rx   R|   RŠ   R   R‚   R   R¾   RÍ   RÐ   (   RŠ   R   Rn   R¾   RW   R¯   Rk   Rq   Ru   RÐ   Rx   RJ   R¸   R|   RÍ   Rª   R«   Ro   R   R!   Rs   Rh   R‚   Rt   (    (    R   R˜      s4   	®ÒEY!					 	,;		ÿ 	W