
    z%iY2                     `   	 d dl mZ d dlZd dlmZ  eej                  ej                  z   dz         Z eej                  dz         Z	 e
d      D  cg c]  }  e|       ev  c} Z e
d      D  cg c]  }  e|       e	v  c} Z G d d      Zedk(  rd d	lmZ  ed
d       yyc c} w c c} w )    )	iskeywordN)pyparse_   c                   Z    e Zd Zd Zd Zd Zd ZddZ eh d      Z	e
d        ZdZd	 Zy
)HyperParserc                    	 || _         |j                  x| _        }t        j                  |j                  |j
                        }d } ||j                  |            }|j                  s|j                  D ]q  }t        ||z
  d      }t        |      dz   }	d|z  }
|j                  |j                  |	|
      dz          |j                  |j                  |	            }||dk(  sq n |j                  xs d       nV|j!                  d|      }|r|d   }	nd}	d|z  }
|j                  |j                  |	|
      dz          |j                  d       |j"                  d d	 | _        
| _        |j)                         | _        t-        t/        | j*                              D cg c]1  }|dkD  xr( | j*                  |   d   | j*                  |dz
     d   kD  3 c}| _        | j3                  |       y c c}w )
Nc                 *    t        t        |             S )N)intfloat)indexs    G/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/idlelib/hyperparser.py
index2linez(HyperParser.__init__.<locals>.index2line"   s    uU|$$       z.0z%d.endz 
r   consolez1.0)editwintextr   Parserindentwidthtabwidthr   prompt_last_linenum_context_linesmaxreprset_codegetfind_good_parse_start_build_char_in_string_funcset_lotag_prevrangecoderawtextstopatindexget_last_stmt_bracketing
bracketingrangelenisopener	set_index)selfr   r   r   parserr   lnocontextstartatstartatindexr%   bodris                 r   __init__zHyperParser.__init__   s   E"<<'	D 3 3W5E5EF	%E*+''"44 cGmQ/#G}t3&n
 { CE IJ22!<<\JL?gl MM#(#""9e4A t$"S.K OODHH\;?EFMM! {{3B' ' 99;
 #(DOO(<"=? 1 1!3A!61-a0"1 1 ? 	u	?s   (6G8c                 L   	 t        | j                        t        | j                  j                  || j                              z
  }|dk  rt        d|z        || _        d| _        | j                  t        | j                        dz
  k  r| j                  | j                  dz      d   | j                  k  rg| xj                  dz  c_        | j                  t        | j                        dz
  k  r-| j                  | j                  dz      d   | j                  k  rg| j                  t        | j                        dz
  k  r`| j                  | j                  dz      d   | j                  k(  r3| j                  | j                  dz      s| xj                  dz  c_        y y y y )Nr   z(Index %s precedes the analyzed statementr   )
r)   r$   r   r   r%   
ValueErrorindexinrawtextindexbracketr'   r*   )r,   r   r8   s      r   r+   zHyperParser.set_indexQ   s~   	 dll+diimmE43C3CDEFAG$% & &,  3t#7#99t0023A69L9LL"   3t#7#99t0023A69L9LLDOO 4Q 66OOD--a/03t7J7JJ}}T..q01" 2 K 7r   c                     	 | j                   | j                     xr+ | j                  | j                  | j                     d      dv S )Nr   )"'r*   r9   r$   r'   r,   s    r   is_in_stringzHyperParser.is_in_stringf   sK    @ d//0 T__T->->?BC	r   c                     	 | j                   | j                      xs+ | j                  | j                  | j                     d      dvS )Nr   )#r;   r<   r=   r>   s    r   
is_in_codezHyperParser.is_in_coden   sL    CMM$"3"344 'T__T->->?BC&'	(r   c                    	 | j                   | j                     d   }| j                  }| j                  |   r6| j                  | j                   |   d      |vs| j                   |   d   |kD  ro|dz  }|dk  ry t	        || j                   |   d         }| j                  |   s7| j                  | j                   |   d      |vrY| j                   |   d   |kD  ro| j                  dz   }|t        | j                         k  rH| j                   |   d   |k\  r3|dz  }|t        | j                         k  r| j                   |   d   |k\  r3| j                  j                  d| j                  t        | j                        | j                   |   d   z
  fz        }|t        | j                         k\  s(| j                   |   d   t        | j                        kD  r|ry | j                  }||fS | j                  j                  d| j                  t        | j                        | j                   |   d   dz
  z
  fz        }||fS )Nr   r   z%s-%dc)	r'   r9   r*   r$   minr)   r   r   r%   )r,   openers	mustclosebracketinglevelbeforeafterbeforeindex
afterindexs           r   get_surrounding_bracketsz$HyperParser.get_surrounding_bracketst   s;   		 //$*;*;<Q?""==(ll4??62156gEoof%a(?:aKFz!/4??63J13MNO ==(ll4??62156gEoof%a(?:
 !!A%s4??++ooe$Q'?:QJE s4??++ooe$Q'?: iioohs4<<01H1KKL'M NS))??5!!$s4<<'88))J J&&	 D,,T\\"DOOE$:1$=a$?@B BCJ J&&r   >   NoneTrueFalsec                    	 t         }|}||kD  r[t        ||dz
           dk  rG|t        ||dz
              r3|dz  }||kD  r)t        ||dz
           dk  r|t        ||dz
              r3||kD  rt        ||dz
           dk\  r|dz
  |k\  r@d||dz
  | z   j                         r'|dz  }|dz
  |k\  rd||dz
  | z   j                         r'|dz
  |k\  rd||dz
  | z   j                         r|dz  }|dz
  |k\  rd||dz
  | z   j                         r|dz  }||| j                         sy||k  rt        t        ||            sy||k  r t	        |||       r||| | j
                  vry||z
  S )Nr   r      a   r   )_IS_ASCII_ID_CHARordisidentifier_IS_ASCII_ID_FIRST_CHARr   _ID_KEYWORDS)clsstrlimitposis_ascii_id_charr4   s         r   _eat_identifierzHyperParser._eat_identifier   s   	
 -  %iCAJ#% SQZ1FA	 %iCAJ#% SQZ1 u9SQZC/a%5.cCAcN&:%H%H%JQ a%5.cCAcN&:%H%H%J1u~3QU3#7"E"E"GQ1u~3QU3#7"E"E"GQ q:**,W +3s1v;7 s7#a*%Ac
#"2"22Qwr   z 	
\c                     	 | j                         st        d      | j                  }| j                  }| j                  }||   d   }| j
                  }|}d}	 	 ||kD  r||dz
     | j                  v r|dz  }nO|s||kD  r||dz
     dk(  r|dz  }d}n5||k(  r/|dkD  r*|||dz
     d      dk(  r|dz  }||   d   }||dz      d   }nno|sn| j                  |||      }|r
||z
  }|}d}n||k(  r||   d   }	|dkD  r'||dz
     d   |	kD  r|dz  }|dkD  r||dz
     d   |	kD  r||   d   |k(  rnP||   d   }|dz  }||   d   }|}||   d	v rn/||   d
v r&|dkD  r||dz
     dv r|dz  }|dkD  r||dz
     dv r|}nn'||| j
                   S )Nz?get_expression should only be called if index is inside a code.r   Tr   .rA   rS   Fz([z'"rRbBuU)rB   r7   r$   r'   r9   r8   _whitespace_charsr^   )
r,   r$   r'   
brck_index
brck_limitr\   last_identifier_pospostdot_phaseretlevels
             r   get_expressionzHyperParser.get_expression   st   	   : ; ; ,,__
&&

+A.
!!!z>gc!en8N8N&N1HC'J&73q5>S+@1HC$(M Z'JNjA6q9:cA!OJ!+J!7!:J$Z\215C ' * ! &&w
C@CCi&)# % 
" #:.q1 1nJqL)A!)Du)L!OJ !1nJqL)A!)Du)Lj)!,
: ,Q/a
'
3A6
&)#3<4'  s|u,!Ag'#'*:h*F1HC "Ag'#'*:h*F.1+ C F *4+>+>??r   N)z([{F)__name__
__module____qualname__r5   r+   r?   rB   rL   	frozensetrX   classmethodr^   rb   ri    r   r   r   r      sL    5n#*(('X 67L6 6r "U@r   r   __main__)mainz"idlelib.idle_test.test_hyperparserrS   )	verbosity)keywordr   stringidlelibr   rm   ascii_lettersdigits_ASCII_ID_CHARS_ASCII_ID_FIRST_CHARSr(   chrrT   rW   r   rj   unittestrq   )xs   0r   <module>r}      s       F006==@3FG!&"6"6"<=  ;@*EQc!f/E  16c
;1c!f%%; Z@ Z@z z	-; I	 F <s   B&1B+