
    .hhM                     B   S SK r \" S5      u  rrrrr\ R                  " S\ R                  \ R                  -  5      R                  r\ R                  " S\ R                  5      R                  r\ R                  " S\ R                  \ R                  -  5      R                  r\ R                  " S\ R                  5      R                  r\ R                  " S\ R                  5      R                  r\ R                  " S\ R                  5      R                  r " S	 S
\5      r\R+                  \" S5      S5      r\R/                  S S 5       5        \R/                  S S 5       5        \R/                  S S 5       5         " S S5      r\S:X  a  S SKJr  \" SSS9  gg)    N   z
    ^
    [ \t]*
    (?: while
    |   else
    |   def
    |   return
    |   assert
    |   break
    |   class
    |   continue
    |   elif
    |   try
    |   except
    |   raise
    |   import
    |   yield
    )
    \b
z'
    [ \t]*
    (?: \# \S .* )?
    \n
aK  
    \""" [^"\\]* (?:
                     (?: \\. | "(?!"") )
                     [^"\\]*
                 )*
    (?: \""" )?

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

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

|   ' [^'\\\n]* (?: \\. [^'\\\n]* )* '?
zM
    [ \t]*
    [^\s#\\]    # if we match, m.end()-1 is the interesting char
z_
    \s*
    (?: return
    |   break
    |   continue
    |   raise
    |   pass
    )
    \b
z
    [^[\](){}#'"\\]+
c                       \ rS rSrS rSrg)ParseMapf   c                     g)Nx    )selfkeys     8/opt/python-3.13.8/usr/lib/python3.13/idlelib/pyparse.py__missing__ParseMap.__missing__r   s        r	   N)__name__
__module____qualname____firstlineno__r   __static_attributes__r	   r   r   r   r   f   s    r   r      r   c              #   N   #    U  H  n[        U5      [        S 5      4v   M     g7f)(Nord.0cs     r   	<genexpr>r   x        /Ac!fc#h   #%z({[c              #   N   #    U  H  n[        U5      [        S 5      4v   M     g7f))Nr   r   s     r   r   r   y   r   r   z)}]c              #   N   #    U  H  n[        U5      [        U5      4v   M     g 7fNr   r   s     r   r   r   z   s     2z!c!fc!fzr   z"'\
#c                   h    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rSrg)Parser}   c                     Xl         X l        g r#   )indentwidthtabwidth)r
   r(   r)   s      r   __init__Parser.__init__   s    & r   c                     Xl         SU l        g Nr   )codestudy_level)r
   ss     r   set_codeParser.set_code   s    	r   c                 \   U R                   S p2[        U5      n[        S5       Hv  nUR                  SSU5      nUS:  a    O\UR                  SSU5      S-   n[	        X&U5      nU(       a-  U" UR                  5       5      (       d  UR                  5       n  OUnMx     Uc?  [	        U5      nU(       a+  U" UR                  5       5      (       d  UR                  5       nU$ US-   n[	        X&5      =n(       a5  UR                  5       u  pU" U5      (       d  Un[	        X&5      =n(       a  M5  U$ )Nr   z:
r   
   )r.   lenrangerfind_synchrestartspan)	r
   is_char_in_stringr.   poslimittriesimr0   s	            r   find_good_parse_startParser.find_good_parse_start   s    IItc
 D	1XE

5!U+A1u

4A&*A%(A*177955ggiE  ; A*177955ggiJ !GD$$a$668DA$Q'' D$$a$ 
r   c                 :    US:  a  U R                   US  U l         g g r-   )r.   )r
   los     r   set_loParser.set_lo   s!     6		"#DI r   c                    U R                   S:  a  g SU l         U R                  nUR                  [        5      nUR	                  SS5      nUR	                  SS5      nUR	                  SS5      nUR	                  SS5      nUR	                  SS5      n[
        nS=p4S/=U l        nUR                  nS[        U5      pXx:  GaM  X   n	US-   nU	S:X  a  M  U	S:X  a  US-   nUS:X  a  U" U5        M2  U	S	:X  a  US-   nM?  U	S
:X  a  U(       a  US-
  nMS  U	S:X  d  U	S:X  a  U	n
XS-
  US-    U
S-  :X  a  U
S-  n
Un[        U
5      S-
  nX|-   nXx:  af  X   n	US-   nU	S:X  a  M  XS-
  X|-    U
:X  a  X|-   nOYU	S:X  a  US-   nUS:X  a  US:X  a  U" U5        O9MJ  U	S:X  a  X   S:X  a  US-   nUS-   nMd  Xx:  a  Mf  US-
  U:X  a  [        nO[        nGM  U	S:X  a  UR                  SU5      nGM*  X   S:X  a  US-   nUS-   U:X  a  [        nUS-   nXx:  a  GMM  U[        :w  a  U[        :w  a  US:  a  [        nX l        US   U:w  a	  U" U5        g g )Nr5   xxxxxxxxxxxxxxxz
xr4   r   r   r!   "'      \#)r/   r.   	translatetransreplaceC_NONE	goodlinesappendr6   C_STRING_FIRST_LINEC_STRING_NEXT_LINESfindC_BACKSLASH	C_BRACKETcontinuation)r
   r.   r_   levellnorX   	push_goodr@   nchquotefirstlnows                r   _study1Parser._study1   s    q  yy~~e$||J,||FC(||D#&||D#&||E4( &'S($$	#d)1eB!A SyTzAgA:cNSy	Sy!AIESyB#I!AaC=EAI-!AIEJNCeB!ASy aC}-CTz!Ag6$z )#! Tz7d?"%'CaC 3 e@ aH, (;':SyIIdA& w$AgQ3!8#.L!Ak et // 33	$L(
 R=CcN  r   c                 :    U R                  5         U R                  $ r#   )rh   r_   r
   s    r   get_continuation_typeParser.get_continuation_typeK  s       r   c                 p   U R                   S:  a  g U R                  5         SU l         U R                  U R                  p![	        U5      S-
  n[	        U5      nU(       aU  Un[        X#S-
     X#   5       H  nUR                  SSUS-
  5      S-   nM     [        X5      (       a  US-
  nOO	U(       a  MU  US:X  a  UnUWsU l        U l	        Sn/ nUR                  n	US4/n
XE:  Ga  [        XU5      nU(       aH  UR                  5       nUS-
  nX4:  a  X   S;   a  US-
  nX4:  a
  X   S;   a  M  X4:  a  X   nUnXE:  a  GOLX   nUS;   a-  U	" U5        U
R                  U[	        U5      45        UnUS-   nM  US;   a/  U(       a  US		 UnUS-   nU
R                  U[	        U5      45        M  US
:X  d  US:X  aZ  U
R                  U[	        U5      S-   45        Un[        XU5      R                  5       nU
R                  U[	        U5      45        GM3  US:X  aS  U
R                  U[	        U5      S-   45        UR                  SXE5      S-   nU
R                  U[	        U5      45        GM  US-   nX   S:w  a  XU   -   nUS-   nXE:  a  GM  Xpl        U(       a  US	   OS U l        [#        U
5      U l        g )NrO   r5   r4   r     	
([{)]}rS   rM   rN   rR   )r/   rh   r.   rX   r6   r7   r8   _junkre
stmt_startstmt_endrY   _chew_ordinaryreend_match_stringrer\   lastchlastopenbracketpostuplestmt_bracketing)r
   r.   rX   r@   pqnothingry   stack
push_stack
bracketingrA   newprd   s                 r   _study2Parser._study2O  s   & q  ))T^^i	NQI A Q3>JJtQ!,q0 ?
   aC a 6 A)*A& \\
!fX
e !,Auuw1HfG!3!A fG!36!WF6BU{1!!1c%j/2aCU{b	aC!!1c%j/2SyB#I !!1c%jl"34#DQ/335!!1c%j/2Sy!!1c%jl"34IIdA)A-!!1c%j/2 !Aw$1g!A{ eB /4%)$$Z0r   c                    U R                  5         U R                  nU R                  n[        U5      nUR	                  SSU5      S-   =pEUS-   nX:  aE  [        X!5      nU(       a  UR                  5       S-
  nSnOCUR                  SU5      S-   =pQX:  a  ME  U=pX!   S;   a  US-   nX!   S;   a  M  U R                  n[        X%U R                  U R                  5      5      U-   $ )Nr4   r   r5    	)r   rz   r.   r6   r8   _itemrerw   r\   r(   
expandtabsr)   )r
   jr.   rc   origir@   rA   extras           r   compute_bracket_indentParser.compute_bracket_indent  s    
 	##yyIJJtQ*Q..aCe AEEGaK 		$*Q.. e MA'U"aC 'U"$$E4!9''67%??r   c                 P    U R                  5         U R                  nUS   US   -
  $ )NrS   )rh   rX   )r
   rX   s     r   get_num_lines_in_stmtParser.get_num_lines_in_stmt  s)     	NN	}y},,r   c                    U R                  5         U R                  nU R                  nX   S;   a  US-   nX   S;   a  M  UnUR                  SU5      S-   nS=pVX$:  a  X   nUS;   a  US-   nUS-   nOvUS;   a  U(       a  US-
  nUS-   nO^US:X  d  US:X  a  [	        XU5      R                  5       nO7US	:X  a  O7US:X  a%  US
:X  a  US:X  d  XS-
     S;  a  XS-      S
:w  a  SnOUS-   nX$:  a  M  U(       a   US-   n[        R                  " SXU 5      S L nU(       d  UnX   S;  a  US-   nX   S;  a  M  [        XR                  U R                  U R                  5      5      S-   $ )Nr   r5   r4   r   rq   rr   rM   rN   rR   =z=<>!z\s*\\rp   )r   r.   rt   r\   rx   rw   rematchr6   r   r)   )r
   r.   r@   startposendposfoundr`   rd   s           r   compute_backslash_indentParser.compute_backslash_indent  s    	yyOOg!A g 4*Q.jBU{	aCu!AIEaCsbCi#DV488:s !c	FdQ3iv5!9#aC+ j.  !AHHXtf~6$>E A'(aC '( 4*55%)]]4 5789 	9r   c                     U R                  5         U R                  U R                  p!UnU R                  nX2:  a  XC   S;   a  US-   nX2:  a
  XC   S;   a  M  XAU $ )Nr   r5   )r   rt   ru   r.   )r
   r@   rc   r   r.   s        r   get_base_indent_stringParser.get_base_indent_string,  s[     	1yye5(AA e5(ayr   c                 @    U R                  5         U R                  S:H  $ )N:)r   ry   rk   s    r   is_block_openerParser.is_block_opener8  s    {{c!!r   c                 f    U R                  5         [        U R                  U R                  5      S L$ r#   )r   _closerer.   rt   rk   s    r   is_block_closerParser.is_block_closer=  s%    		4??34??r   c                 :    U R                  5         U R                  $ r#   )r   r|   rk   s    r   get_last_stmt_bracketingParser.get_last_stmt_bracketingB  s    
 	###r   )r.   r_   rX   r(   ry   rz   r|   ru   rt   r/   r)   N)r   r   r   r   r*   r1   rB   rF   rh   rl   r   r   r   r   r   r   r   r   r   r	   r   r   r%   r%   }   sP    !
2h'DL!y1v@>-79r
"
@
$r   r%   __main__)mainzidlelib.idle_test.test_pyparserO   )	verbosity)r   r7   rW   r]   rZ   r[   r^   compileVERBOSE	MULTILINEsearchr9   r   rs   DOTALLrx   r   r   rv   dictr   fromkeysrU   updater%   r   unittestr   r	   r   r   <module>r      s   
 $)8!)i :: & ZZ",,' & !'' 	. **  ZZ	 	  **   ZZ"))!  #U! * **  ZZ   :: 	 ZZ	  	  :: ZZ 
t " 	%*c* // / // / 2z2 2K$ K$\ z	)Q7 r   