
    .hhY2                     j   S SK Jr  S SKrS SKJr  \" \R                  \R                  -   S-   5      r\" \R                  S-   5      r	\
" S5       V s/ s H  n \" U 5      \;   PM     sn r\
" S5       V s/ s H  n \" U 5      \	;   PM     sn r " S S5      r\S:X  a  S S	KJr  \" S
SS9  ggs  sn f s  sn f )    )	iskeywordN)pyparse_   c                   d    \ rS rSrS rS rS rS rSS jr\	" 1 Sk5      r
\S 5       rS	rS
 rSrg)HyperParser   c                 (   Xl         UR                  =U l        n[        R                  " UR                  UR
                  5      nS nU" UR                  U5      5      nUR                  (       d  UR                   Hr  n[        Xg-
  S5      n[        U5      S-   n	SU-  n
UR                  UR                  X5      S-   5        UR                  UR                  U	5      5      nUc  US:X  d  Mr    O   UR                  W=(       d    S5        OZUR!                  SU5      nU(       a  US   n	OSn	SU-  n
UR                  UR                  X5      S-   5        UR                  S5        UR"                  S S	 U l        W
U l        UR)                  5       U l        [-        [/        U R*                  5      5       Vs/ s H7  nUS:  =(       a(    U R*                  U   S   U R*                  US-
     S   :  PM9     snU l        U R3                  U5        g s  snf )
Nc                 *    [        [        U 5      5      $ )N)intfloat)indexs    </opt/python-3.13.8/usr/lib/python3.13/idlelib/hyperparser.py
index2line(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__HyperParser.__init__   s    "<<'	D 3 3W5E5EF	%E*+''"44cmQ/#G}t3&n
  CE IJ22!<<\JL?gl 5 MM#(#""9e4A t$"S.K OODHH\?EFMM! {{3B' ' 99;
 #(DOO(<"=?"=Q 1 1!3A!61-a0"1 1"=? 	u	?s   7>Hc                 `   [        U R                  5      [        U R                  R                  XR                  5      5      -
  nUS:  a  [        SU-  5      eX l        SU l        U R                  [        U R                  5      S-
  :  a  U R                  U R                  S-      S   U R                  :  aj  U =R                  S-  sl        U R                  [        U R                  5      S-
  :  a/  U R                  U R                  S-      S   U R                  :  a  Mj  U R                  [        U R                  5      S-
  :  af  U R                  U R                  S-      S   U R                  :X  a8  U R                  U R                  S-      (       d  U =R                  S-  sl        g g g g )Nr   z(Index %s precedes the analyzed statementr   )
r+   r&   r   r    r'   
ValueErrorindexinrawtextindexbracketr)   r,   )r.   r   r;   s      r   r-   HyperParser.set_indexQ   su   
 dll+diimmE3C3C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                     U R                   U R                     =(       a,    U R                  U R                  U R                     S      S;   $ )Nr   )"'r,   r<   r&   r)   r.   s    r   is_in_stringHyperParser.is_in_stringf   sH     d//0 T__T->->?BC	r   c                     U R                   U R                     (       + =(       d,    U R                  U R                  U R                     S      S;  $ )Nr   )#r?   r@   rA   rB   s    r   
is_in_codeHyperParser.is_in_coden   sI    MM$"3"344 'T__T->->?BC&'	(r   c                    U R                   U R                     S   nU R                  nU R                  U   (       a9  U R                  U R                   U   S      U;  d  U R                   U   S   U:  az  US-  nUS:  a  g [	        X0R                   U   S   5      nU R                  U   (       d  M=  U R                  U R                   U   S      U;  a  Mb  U R                   U   S   U:  a  Mz  U R                  S-   nU[        U R                   5      :  aL  U R                   U   S   U:  a6  US-  nU[        U R                   5      :  a  U R                   U   S   U:  a  M6  U R                  R                  SU R                  [        U R                  5      U R                   U   S   -
  4-  5      nU[        U R                   5      :  d)  U R                   U   S   [        U R                  5      :  a  U(       a  g U R                  nXg4$ U R                  R                  SU R                  [        U R                  5      U R                   U   S   S-
  -
  4-  5      nXg4$ )Nr   r   z%s-%dc)	r)   r<   r,   r&   minr+   r   r   r'   )r.   openers	mustclosebracketinglevelbeforeafterbeforeindex
afterindexs           r   get_surrounding_brackets$HyperParser.get_surrounding_bracketst   s3    //$*;*;<Q?""==(ll4??62156gEoof%a(?:aKFz!/??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 &&	 D,,T\\"DOOE$:1$=a$?@B BCJ &&r   >   NoneTrueFalsec                 4   [         nUnXR:  ad  [        XS-
     5      S:  aP  U[        XS-
     5         (       a8  US-  nXR:  a.  [        XS-
     5      S:  a  U[        XS-
     5         (       a  M8  XR:  a  [        XS-
     5      S:  a  US-
  U:  aJ  SXS-
  U -   R                  5       (       a-  US-  nUS-
  U:  a  SXS-
  U -   R                  5       (       a  M-  US-
  U:  a"  SXS-
  U -   R                  5       (       a  US-  nUS-
  U:  a"  SXS-
  U -   R                  5       (       a  US-  nXU R                  5       (       d  gOXS:  a  [        [        X   5         (       d  gXS:  a%  [	        XU 5      (       a  XU U R
                  ;  a  gX5-
  $ )Nr   r      a   r   )_IS_ASCII_ID_CHARordisidentifier_IS_ASCII_ID_FIRST_CHARr   _ID_KEYWORDS)clsstrlimitposis_ascii_id_charr6   s         r   _eat_identifierHyperParser._eat_identifier   s    -  iCAJ#% SQZ1FA	 iCAJ#% SQZ11 9SQZC/a%5.cCAcN&:%H%H%J%JQ a%5.cCAcN&:%H%H%J%J1u~3U3#7"E"E"G"GQ1u~3U3#7"E"E"G"GQ :**,, -W +3sv;7 7#*%%c
#"2"22wr   z 	
\c                 P   U R                  5       (       d  [        S5      eU R                  nU R                  nU R                  nX#   S   nU R
                  nUnSn  XT:  a  XS-
     U R                  ;   a  US-  nOSU(       d  XT:  a  XS-
     S:X  a  US-  nSnO4XT:X  a.  US:  a(  XUS-
     S      S:X  a  US-  nX#   S   nX#S-      S   nOOMu  U(       d  OU R                  XU5      nU(       a	  XX-
  nUnSnOXT:X  a  X#   S   n	US:  a)  X#S-
     S   U	:  a  US-  nUS:  a  X#S-
     S   U	:  a  M  X#   S   U:X  a  OVX#   S   nUS-  nX#   S   nUnX   S	;   a  O5X   S
;   a+  US:  a#  XS-
     S;   a  US-  nUS:  a  XS-
     S;   a  M  UnOOGM=  XU R
                   $ )Nz?get_expression should only be called if index is inside a code.r   Tr   .rF   rZ   Fz([z'"rRbBuU)rG   r:   r&   r)   r<   r;   _whitespace_charsre   )
r.   r&   r)   
brck_index
brck_limitrc   last_identifier_pospostdot_phaseretlevels
             r   get_expressionHyperParser.get_expression   sC       : ; ; ,,__
&&
+A.
!!!>g!en8N8N&N1HC'&7q5>S+@1HC$(M 'JNA6q9:cA!OJ!+!7!:J$\215C ' * ! &&wC@Ci&)# % " #.q1 1nqL)A!)Du)L!OJ !1nqL)A!)Du)L)!,
: ,Q/a
'3A6
&)#<4'  |u,!Ag''*:h*F1HC "Ag''*:h*F.1+ C F 4+>+>??r   )r)   r   r<   r;   r,   r&   r'   r   N)z([{F)__name__
__module____qualname____firstlineno__r7   r-   rC   rG   rR   	frozensetr_   classmethodre   rj   rq   __static_attributes__ r   r   r   r      sL    5n#*(('X 67L6 6r "U@r   r   __main__)mainz"idlelib.idle_test.test_hyperparserrZ   )	verbosity)keywordr   stringidlelibr   rw   ascii_lettersdigits_ASCII_ID_CHARS_ASCII_ID_FIRST_CHARSr*   chrr[   r^   r   rs   unittestr|   )xs   0r   <module>r      s       F006==@3FG!&"6"6"<=  ;@*E*Qc!f/*E  16c
;
1c!f%%
; Z@ Z@z z	-; I	 F <s   B+4B0