
|Nc           @   s  d  d l  Z  d  d l Z e d  \ Z Z Z Z Z e  j d e  j	 e  j
 B j Z e  j d e  j	  j Z e  j d e  j	 e  j B j Z e  j d e  j	  j Z e  j d e  j	  j Z e  j d e  j	  j 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 j e  Z [ y e e d   Z Wn e k
 rd Z n Xd d d     YZ d S(   iNi   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$   C:\RCS\Python\lib\idlelib\PyParse.pyt   __init__r   s    	c         C   s   t  |  d k s( | d d k s( t  t |  t k r | } g  } | j } x9 t t |  D]( } | | d k  r t |  p d  q_ Wd j |  } n  | |  _	 d |  _
 d  S(   Ni    is   
i   R    R   (   t   lent   AssertionErrort   typet   UnicodeTypet   appendt   mapt   ordt   chrt   joint   strt   study_level(   R   R   t	   uniphooeyt   pusht   raw(    (    s$   C:\RCS\Python\lib\idlelib\PyParse.pyt   set_strv   s    (	&	c   
      C   sT  |  j  d  } } | s d  St |  } x t d  D] } | j d d |  } | d k  r^ Pn  | j d d |  d } | | | |  } | r | | j    r | j   } Pn  | } q3 W| d  k r | |  } | r | | j    r | j   } n  | S| d } xC | | |  } | rL| j   \ }	 } | |	  sM|	 } qM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$   C:\RCS\Python\lib\idlelib\PyParse.pyt   find_good_parse_start   s8    
	
c         C   sL   | d k s) |  j  | d d k s) t  | d k rH |  j  | |  _  n  d  S(   Ni    i   s   
(   R   R
   (   R   t   lo(    (    s$   C:\RCS\Python\lib\idlelib\PyParse.pyt   set_lo   s    )c         C   s  |  j  d k r d  Sd |  _  |  j } | j t  } | j d d  } | j d d  } | j d d  } | j d d  } | j d d  } t } d } } d g |  _ } | j } d t |  } } x| | k  r| | }	 | d } |	 d k r q n  |	 d k r4| d } | d k r | |  q q n  |	 d	 k rP| d } q n  |	 d
 k ru| r | d } q q n  |	 d k s|	 d k r|	 }
 | | d | d !|
 d k r|
 d }
 n  | } t |
  d } | | } x| | k  r| | }	 | d } |	 d k rqn  | | d | | !|
 k r=| | } Pn  |	 d k r| d } | d k r| d k rx| |  n  Pqqn  |	 d k r| | k  st	  | | d k r| d } n  | d } qqqW| d | k rt
 } q t } q n  |	 d k r,| j d |  } | d k s t	  q n  |	 d k s>t	  | | k  sPt	  | | d k r| d } | d | k rt } qn  | d } q W| t
 k r| t k r| d k rt } n  | |  _ | t k | d | k k st	  | d | k r	| |  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$   C:\RCS\Python\lib\idlelib\PyParse.pyt   _study1   s    		
	










	
		"c         C   s   |  j    |  j S(   N(   RA   R8   (   R   (    (    s$   C:\RCS\Python\lib\idlelib\PyParse.pyt   get_continuation_typeP  s    
c         C   s  |  j  d k r d  S|  j   d |  _  |  j |  j } } t |  d } t |  } x| | r | sj t  | } x@ t | | d | |  D]# } | j d d | d  d } q Wt | |  r | d } qX PqX W| d k r | d k s t  | } n  | | |  _	 |  _
 d } g  } | j }	 | d f g }
 xu| | k  rt | | |  } | r| j   } | d } x* | | k r| | d k r| d } qrW| | k r| | } n  | } | | k rPqn  | | } | d k r|	 |  |
 j | t |  f  | } | d } q5n  | d k rh| r9| d	 =n  | } | d } |
 j | t |  f  q5n  | d
 k s| d k r|
 j | t |  d f  | } t | | |  j   } |
 j | t |  f  q5n  | d k rM|
 j | t |  d f  | j d | |  d } | d k s.t  |
 j | t |  f  q5n  | d k s_t  | d } | | k  s{t  | | d k r| | | } n  | d } q5W| |  _ | r| d	 |  _ n  t |
  |  _ d  S(   Ni   i   s   
i    R   s    	
s   ([{s   )]}iR+   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$   C:\RCS\Python\lib\idlelib\PyParse.pyt   _study2e  s    
		"!		






	c         C   s  |  j    |  j t k s t  |  j } |  j } t |  } | j d d |  d } } | d } x | | k  r t | |  } | r | j	   d } d } Pqg | j
 d |  d } } qg W| } } x | | d k r | d } q W|  j } t | | | !j |  j   | 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$   C:\RCS\Python\lib\idlelib\PyParse.pyt   compute_bracket_indent  s&    
		

	c         C   s#   |  j    |  j } | d | d S(   Nii(   RA   R2   (   R   R2   (    (    s$   C:\RCS\Python\lib\idlelib\PyParse.pyt   get_num_lines_in_stmt  s    
	c         C   s  |  j    |  j t k s t  |  j } |  j } x | | d k rQ | d } q4 W| } | j d |  d } d } } x| | k  r| | } | d k r | d } | d } q{ | d k r | r | d } n  | d } q{ | d k s | d k rt | | |  j   } q{ | d	 k r#Pq{ | d k ry| d
 k ry| d k s[| | d d k ry| | d d
 k ryd } Pq{ | d } q{ W| r| d } t	 j
 d | | | ! d  k } n  | s| } x! | | d k r| d } qWn  t | |  j | !j |  j   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$   C:\RCS\Python\lib\idlelib\PyParse.pyt   compute_backslash_indent  sJ    
		


 
"c         C   sd   |  j    |  j |  j } } | } |  j } x* | | k  rX | | d k rX | d } q/ W| | | !S(   Ns    	i   (   RT   RD   RE   R   (   R   R"   R<   RW   R   (    (    s$   C:\RCS\Python\lib\idlelib\PyParse.pyt   get_base_indent_string/  s    
	c         C   s   |  j    |  j d k S(   Nt   :(   RT   RI   (   R   (    (    s$   C:\RCS\Python\lib\idlelib\PyParse.pyt   is_block_opener:  s    
c         C   s#   |  j    t |  j |  j  d  k	 S(   N(   RT   t   _closereR   RD   R   (   R   (    (    s$   C:\RCS\Python\lib\idlelib\PyParse.pyt   is_block_closer@  s    
c         C   s   |  j    |  j S(   N(   RT   RJ   (   R   (    (    s$   C:\RCS\Python\lib\idlelib\PyParse.pyt   get_last_open_bracket_posG  s    
c         C   s   |  j    |  j S(   N(   RT   RL   (   R   (    (    s$   C:\RCS\Python\lib\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$   C:\RCS\Python\lib\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$   C:\RCS\Python\lib\idlelib\PyParse.pyt   <module>   s8   	
