³ò
ž›\Kc           @   sœ  d  d k  Z  d  d k Z e d ƒ \ Z Z Z Z Z e  i d e  i	 e  i
 Bƒ i Z e  i d e  i	 ƒ i Z e  i d e  i	 e  i Bƒ i Z e  i d e  i	 ƒ i Z e  i d e  i	 ƒ i Z e  i d e  i	 ƒ i Z d	 g d
 Z x d D] Z d e e e ƒ <qå Wx d D] Z d e e e ƒ <qWx d D] Z e e e e ƒ <q'Wd i e ƒ Z [ y e e d ƒ ƒ Z Wn e j
 o d Z n Xd d d „  ƒ  YZ d S(   iÿÿÿÿNi   sä   
    ^
    [ \t]*
    (?: while
    |   else
    |   def
    |   return
    |   assert
    |   break
    |   class
    |   continue
    |   elif
    |   try
    |   except
    |   raise
    |   import
    |   yield
    )
    \b
s'   
    [ \t]*
    (?: \# \S .* )?
    \n
sK  
    \""" [^"\\]* (?:
                     (?: \\. | "(?!"") )
                     [^"\\]*
                 )*
    (?: \""" )?

|   " [^"\\\n]* (?: \\. [^"\\\n]* )* "?

|   ''' [^'\\]* (?:
                   (?: \\. | '(?!'') )
                   [^'\\]*
                )*
    (?: ''' )?

|   ' [^'\\\n]* (?: \\. [^'\\\n]* )* '?
sM   
    [ \t]*
    [^\s#\\]    # if we match, m.end()-1 is the interesting char
s_   
    \s*
    (?: return
    |   break
    |   continue
    |   raise
    |   pass
    )
    \b
s   
    [^[\](){}#'"\\]+
t   xi   s   ({[t   (s   )}]t   )s   "'\
#t    t   Parserc           B   s¡   e  Z d  „  Z d „  Z d e d „ Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d Z d „  Z d Z d „  Z RS(   c         C   s   | |  _  | |  _ d  S(   N(   t   indentwidtht   tabwidth(   t   selfR   R   (    (    s%   /usr/lib/python2.5/idlelib/PyParse.pyt   __init__r   s    	c         C   sº   t  | ƒ d j p | d d j p t ‚ t | ƒ t j of | } g  } | i } x; t t | ƒ D]* } | | d j  o t | ƒ p d ƒ qc Wd i | ƒ } n | |  _	 d |  _
 d  S(   Ni    iÿÿÿÿs   
i   R    R   (   t   lent   AssertionErrort   typet   UnicodeTypet   appendt   mapt   ordt   chrt   joint   strt   study_level(   R   R   t	   uniphooeyt   pusht   raw(    (    s%   /usr/lib/python2.5/idlelib/PyParse.pyt   set_strv   s    +	 (	c   
      C   sj  |  i  d  } } | p d  Sn t | ƒ } x˜ t d ƒ D]Š } | i d d | ƒ } | d j  o Pn | i d d | ƒ d } | | | | ƒ } | o% | | i ƒ  ƒ o | i ƒ  } Pn | } q8 W| d  j o? | | ƒ } | o$ | | i ƒ  ƒ o | i ƒ  } n | Sn | d } xG | | | ƒ } | o- | i ƒ  \ }	 } | |	 ƒ p
 |	 } qcqPq| S(   Ni   s   :
i    s   
i   (   R   t   NoneR	   t   ranget   rfindt   startt   span(
   R   t   is_char_in_stringt   _synchreR   t   post   limitt   triest   it   mt   s(    (    s%   /usr/lib/python2.5/idlelib/PyParse.pyt   find_good_parse_start“   s:     
	
c         C   sQ   | d j p |  i  | d d j p t ‚ | d j o |  i  | |  _  n d  S(   Ni    i   s   
(   R   R
   (   R   t   lo(    (    s%   /usr/lib/python2.5/idlelib/PyParse.pyt   set_loÇ   s    ,c         C   sM  |  i  d j o d  Sn d |  _  |  i } | i t ƒ } | i d d ƒ } | i d d ƒ } | i d d ƒ } | i d d ƒ } | i d d ƒ } t } d } } d g |  _ } | i } d t | ƒ } } xú| | j  oì| | }	 | d } |	 d j o qÒ n |	 d j o, | d } | d j o | | ƒ qÒ qÒ n |	 d	 j o | d } qÒ n |	 d
 j o | o | d } qÒ qÒ n |	 d j p |	 d j o€|	 }
 | | d | d !|
 d j o |
 d }
 n | } t |
 ƒ d } | | } x"| | j  oó | | }	 | d } |	 d j o qøn | | d | | !|
 j o | | } Pn |	 d j o> | d } | d j o  | d j o | | ƒ n Pqøqøn |	 d j oD | | j  p t	 ‚ | | d j o | d } n | d } qøqøqøW| d | j o
 t
 } qÒ t } qÒ n |	 d j o- | i d | ƒ } | d j p t	 ‚ qÒ n |	 d j p t	 ‚ | | j  p t	 ‚ | | d j o) | d } | d | j o
 t } q½n | d } qÒ W| t
 j o$ | t j o | d j o
 t } n | |  _ | t j | d | j j p t	 ‚ | d | j o | | ƒ n d  S(   Ni   t   xxxxxxxxR    t   xxxxt   xxs   
xs   
i    R   R   t   "t   'i   i   s   \t   #iÿÿÿÿ(   R   R   t	   translatet   _trant   replacet   C_NONEt	   goodlinesR   R	   R
   t   C_STRING_FIRST_LINEt   C_STRING_NEXT_LINESt   findt   C_BACKSLASHt	   C_BRACKETt   continuation(   R   R   R8   t   levelt   lnoR2   t	   push_goodR"   t   nt   cht   quotet   firstlnot   w(    (    s%   /usr/lib/python2.5/idlelib/PyParse.pyt   _study1Ð   s¨    		
	 



 
 







	$c         C   s   |  i  ƒ  |  i S(   N(   RA   R8   (   R   (    (    s%   /usr/lib/python2.5/idlelib/PyParse.pyt   get_continuation_typeP  s    
c         C   s  |  i  d j o d  Sn |  i ƒ  d |  _  |  i |  i } } t | ƒ d } t | ƒ } x‚ | oz | p t ‚ | } x@ t | | d | | ƒ D]# } | i d d | d ƒ d } q” Wt | | ƒ o | d } q] Pq] W| d j o | d j p t ‚ | } n | | |  _	 |  _
 d } g  } | i }	 | d f g }
 x“| | j  o…t | | | ƒ } | o} | i ƒ  } | d } x- | | j o | | d j o | d } qƒW| | j o | | } n | } | | j o Pqçn | | } | d j o: |	 | ƒ |
 i | t | ƒ f ƒ | } | d } qDn | d j oB | o | d	 =n | } | d } |
 i | t | ƒ f ƒ qDn | d
 j p | d j o[ |
 i | t | ƒ d f ƒ | } t | | | ƒ i ƒ  } |
 i | t | ƒ f ƒ qDn | d j oj |
 i | t | ƒ d f ƒ | i d | | ƒ d } | d j p t ‚ |
 i | t | ƒ f ƒ qDn | d j p t ‚ | d } | | j  p t ‚ | | d j o | | | } n | d } qDW| |  _ | o | d	 |  _ n t |
 ƒ |  _ d  S(   Ni   i   s   
i    R   s    	
s   ([{s   )]}iÿÿÿÿR+   R,   R-   s   \(   R   RA   R   R2   R	   R
   R   R   t   _junkret
   stmt_startt   stmt_endR   t   _chew_ordinaryret   endt   _match_stringreR5   t   lastcht   lastopenbracketpost   tuplet   stmt_bracketing(   R   R   R2   R"   t   pt   qt   nothingRI   t   stackt
   push_stackt
   bracketingR#   t   newpR=   (    (    s%   /usr/lib/python2.5/idlelib/PyParse.pyt   _study2e  s–    
	  !
	 
 	




	c         C   s  |  i  ƒ  |  i t j p t ‚ |  i } |  i } t | ƒ } | i d d | ƒ d } } | d } x“ | | j  oO t | | ƒ } | o | i	 ƒ  d } d } Pqi | i
 d | ƒ d } } qi W| } } x  | | d j o | d } qÓ W|  i } t | | | !i |  i ƒ ƒ | S(   Ns   
i    i   s    	(   RT   R8   R7   R
   RJ   R   R	   R   t   _itemreRG   R5   R   t
   expandtabsR   (   R   t   jR   R<   t   origiR"   R#   t   extra(    (    s%   /usr/lib/python2.5/idlelib/PyParse.pyt   compute_bracket_indentÒ  s*    
		
 
 	c         C   s#   |  i  ƒ  |  i } | d | d S(   Niÿÿÿÿiþÿÿÿ(   RA   R2   (   R   R2   (    (    s%   /usr/lib/python2.5/idlelib/PyParse.pyt   get_num_lines_in_stmtñ  s    
	c         C   s*  |  i  ƒ  |  i t j p t ‚ |  i } |  i } x  | | d j o | d } q6 W| } | i d | ƒ d } d } } x| | j  o| | } | d j o | d } | d } q | d j o# | o | d } n | d } q | d j p | d j o t | | | ƒ i ƒ  } q | d	 j o Pq | d j oO | d
 j oB | d j p | | d d j o  | | d d
 j o d } Pq | d } q W| o- | d } t	 i
 d | | | !ƒ d  j } n | p- | } x$ | | d j o | d } qâWn t | |  i | !i |  i ƒ ƒ d S(   Ns    	i   s   
i    s   ([{s   )]}R+   R,   R-   t   =s   =<>!s   \s*\\s    	
(   RT   R8   R6   R
   R   RD   R5   RH   RG   t   ret   matchR   R	   RV   R   (   R   R   R"   t   startpost   endpost   foundR9   R=   (    (    s%   /usr/lib/python2.5/idlelib/PyParse.pyt   compute_backslash_indentú  sP    
		 
 

"
# c         C   sg   |  i  ƒ  |  i |  i } } | } |  i } x- | | j  o | | d j o | d } q/ W| | | !S(   Ns    	i   (   RT   RD   RE   R   (   R   R"   R<   RW   R   (    (    s%   /usr/lib/python2.5/idlelib/PyParse.pyt   get_base_indent_string/  s    
	 c         C   s   |  i  ƒ  |  i d j S(   Nt   :(   RT   RI   (   R   (    (    s%   /usr/lib/python2.5/idlelib/PyParse.pyt   is_block_opener:  s    
c         C   s#   |  i  ƒ  t |  i |  i ƒ d  j	 S(   N(   RT   t   _closereR   RD   R   (   R   (    (    s%   /usr/lib/python2.5/idlelib/PyParse.pyt   is_block_closer@  s    
c         C   s   |  i  ƒ  |  i S(   N(   RT   RJ   (   R   (    (    s%   /usr/lib/python2.5/idlelib/PyParse.pyt   get_last_open_bracket_posG  s    
c         C   s   |  i  ƒ  |  i S(   N(   RT   RL   (   R   (    (    s%   /usr/lib/python2.5/idlelib/PyParse.pyt   get_last_stmt_bracketingP  s    
N(   t   __name__t
   __module__R   R   R   R   R%   R'   RA   RB   RT   RZ   R[   Rb   Rc   Re   Rg   RJ   Rh   RL   Ri   (    (    (    s%   /usr/lib/python2.5/idlelib/PyParse.pyR   p   s$   		3			€		m				5				(    (   R]   t   sysR   R1   R6   R3   R4   R7   t   compilet   VERBOSEt	   MULTILINEt   searchR   R^   RC   t   DOTALLRH   RU   Rf   RF   R/   R=   R   R   R   t   unicodeR   t	   NameErrorR   R   (    (    (    s%   /usr/lib/python2.5/idlelib/PyParse.pys   <module>   s>   	   