mň
­fIc           @   s  d  k  Z  d  k Z e d  \ 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 f  d     YZ d  S(   Ni   sű   
    ^
    [ \t]*
    (?: if
    |   for
    |   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   t  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 RS(   Nc         C   s   | |  _  | |  _ d  S(   N(   t   indentwidtht   selft   tabwidth(   R   R   R   (    (    t,   /mit/python/lib/python2.4/idlelib/PyParse.pyt   __init__s   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   strt   AssertionErrort   typet   UnicodeTypet	   uniphooeyt   appendt   pusht   mapt   ordt   rawt   chrt   joinR   t   study_level(   R   R   R   R   R   (    (    R   t   set_strw   s    +	 (	c         C   sŐ  |  i d  }
 } | ob d t i } |
 i |  } | d j o1 | t	 |  } |
 | d  d |
 | |  _ n | Sn | p d  Sn t	 |
  }	 x t d  D] } |
 i d d |	  } | d j  o Pn |
 i d d |  d } | |
 | |	  } | o% | | i    o | i   } Pn | }	 qĄ W| d  j o? | |
  } | o$ | | i    o | i   } n | Sn | d } xI | |
 |  } | o- | i   \ } } | |  p
 | } qĚqPqW| S(   Ns   
i    i   i   s   :
(   R   R   t   Nonet   post   use_ps1t   syst   ps1t   rfindt   iR
   t   is_char_in_stringt   limitt   ranget   triest   _synchret   mt   startt   spant   s(   R   R   R    R$   R(   R%   R   R   R#   R!   R   R   (    (    R   t   find_good_parse_start   sJ    ! 
	
  c         C   sQ   | d j p |  i | d d j p t  | d j o |  i | |  _ n d  S(   Ni    i   s   
(   t   loR   R   R   (   R   R*   (    (    R   t   set_loÚ   s    ,c         C   s  |  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ňWt } 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 | 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   R   t	   translatet   _trant   replacet   C_NONEt   continuationt   levelt   lnot	   goodlinesR   t	   push_goodR
   R   t   nt   cht   quotet   wR   t   C_STRINGt   findt   C_BACKSLASHt	   C_BRACKET(   R   R<   R7   R   R6   R9   R;   R>   R8   R   R=   R:   (    (    R   t   _study1ă   s     		
	 



 
 






	$c         C   s   |  i   |  i S(   N(   R   RC   R6   (   R   (    (    R   t   get_continuation_type\  s    
c         C   sO  |  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 } xő| | j  oçt |	 | |  } | o} | i   } | d } x- | | j o |	 | d j o | d } qtW| | j o |	 | } n | } | | j o PqŘn |	 | } | d j o! | |  | } | d } q5n | d j o) | o | d	 =n | } | d } q5n | d
 j p | d j o% | } t |	 | |  i   } q5n | d j o4 |	 i d | |  d } | d j p t  q5n | d j p t  | d } | | j  p t  |	 | d j o | |	 | } n | d } q5W| |  _ | o | d	 |  _ n d  S(   Ni   i   s   
i    R   s    	
s   ([{s   )]}i˙˙˙˙R/   R0   R1   s   \(   R   R   RC   R   R9   R
   R   t   pR   t   qR"   t   nothingR   t   _junkret
   stmt_startt   stmt_endt   lastcht   stackR   t
   push_stackt   _chew_ordinaryreR%   t   endt   newpR<   t   _match_stringreR@   t   lastopenbracketpos(   R   RM   RK   R   R%   R9   RF   RE   R<   R   RG   RP   RL   (    (    R   t   _study2l  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    	(   R   RS   R6   RB   R   RR   t   jR   R
   R;   R   t   origiR   t   _itemreR%   RO   t   extraR@   R   t
   expandtabsR   (   R   RW   R   RT   R%   R;   R   RU   (    (    R   t   compute_bracket_indentŃ  s*    
		
 
 	c         C   s#   |  i   |  i } | d | d S(   Ni˙˙˙˙iţ˙˙˙(   R   RC   R9   (   R   R9   (    (    R   t   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/   R0   R1   t   =s   =<>!s   \s*\\s    	
(   R   RS   R6   RA   R   R   RI   R   t   startposR@   t   endpost   foundR7   R<   RQ   RO   t   ret   matchR   R
   RX   R   (   R   R<   R7   R   R]   R   R^   R\   (    (    R   t   compute_backslash_indentů  sJ    
		 
 

Q
# c         C   sg   |  i   |  i |  i } } | } |  i } x- | | j  o | | d j o | d } q/ W| | | !S(   Ns    	i   (   R   RS   RI   RJ   R   R;   RT   R   (   R   R   RT   R   R;   (    (    R   t   get_base_indent_string.  s    
	 c         C   s   |  i   |  i d j S(   Nt   :(   R   RS   RK   (   R   (    (    R   t   is_block_opener9  s    
c         C   s#   |  i   t |  i |  i  d  j	 S(   N(   R   RS   t   _closereR   RI   R   (   R   (    (    R   t   is_block_closer?  s    
c         C   s   |  i   |  i S(   N(   R   RS   RR   (   R   (    (    R   t   get_last_open_bracket_posF  s    
(   t   __name__t
   __module__R	   R   R   R$   R)   R+   RC   RD   RS   RY   RZ   Ra   Rb   Rd   Rf   RR   Rg   (    (    (    R   R   q   s   		#@			y		e				5			(   R_   R   R"   R5   RA   R?   RB   t   compilet   VERBOSEt	   MULTILINEt   searchR$   R`   RH   t   DOTALLRQ   RV   Re   RN   R3   R<   R   R   R   t   unicodeR   t	   NameErrorR   R   (   RN   RH   R<   RQ   RB   R3   R5   R_   R   RA   R?   Re   R   R   RV   R$   (    (    R   t   ?   s4   		 	   