python (3.12.0)

(root)/
lib/
python3.12/
idlelib/
__pycache__/
hyperparser.cpython-312.opt-1.pyc

̑eY2bdZddlmZddlZddlmZeejejzdzZ	eejdzZ
edDcgc]}e|e	vc}Z
edDcgc]}e|e
vc}ZGddZed	k(rdd
lmZedd
yycc}wcc}w)zProvide advanced parsing abilities for ParenMatch and other extensions.

HyperParser uses PyParser.  PyParser mostly gives information on the
proper indentation of code.  HyperParser gives additional information on
the structure of code.
)	iskeywordN)pyparse_cZeZdZdZdZdZdZddZehdZ	e
dZdZd	Z
y
)HyperParserc||_|jx|_}tj|j|j
}d}||j
|}|js|jD]q}t||z
d}t|dz}	d|z}
|j|j|	|
dz|j|j|	}||dk(sqn|jxsdnV|j!d|}|r|d}	nd	}	d|z}
|j|j|	|
dz|jd|j"dd
|_
|_|j)|_t-t/|j*D
cgc]1}
|
dkDxr(|j*|
d|j*|
dz
dkD3c}
|_|j3|ycc}
w)z;To initialize, analyze the surroundings of the given index.c*tt|S)N)intfloat)indexs G/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/idlelib/hyperparser.py
index2linez(HyperParser.__init__.<locals>.index2line"suU|$$z.0z%d.endz 
Nrconsolez1.0)editwintextrParserindentwidthtabwidthr
prompt_last_linenum_context_linesmaxreprset_codegetfind_good_parse_start_build_char_in_string_funcset_lo
tag_prevrangecoderawtextstopatindexget_last_stmt_bracketing
bracketingrangelenisopener	set_index)selfrr
rparserrlnocontextstartatstartatindexr%bodris              r__init__zHyperParser.__init__s"<<'	D 3 3W5E5EF	%E*+''"44
cGmQ/#G}t3&n
{ CE IJ22!<<\JL?gl

MM#(#""9e4A t$"S.K
OODHH\;?EFMM!{{3B'' 99;
#(DOO(<"=?11!3A!61-a0"11?
	
u	?s'6G7cJt|jt|jj||jz
}|dkrtd|z||_d|_|jt|jdz
kr|j|jdzd|jkrg|xjdz
c_|jt|jdz
kr-|j|jdzd|jkrg|jt|jdz
kr`|j|jdzd|jk(r3|j|jdzs|xjdz
c_yyyy)zgSet the index to which the functions relate.

        The index must be in the same statement.
        rz(Index %s precedes the analyzed statementrN)
r)r$rrr%
ValueErrorindexinrawtextindexbracketr'r*)r,r
r8s   rr+zHyperParser.set_indexQsy
dll+diimmE43C3CDEFAG$%&
&,  3t#7#99t0023A69L9LL"  3t#7#99t0023A69L9LLDOO 4Q 66OOD--a/03t7J7JJ}}T..q01"2
K
7rc|j|jxr+|j|j|jddvS)z2Is the index given to the HyperParser in a string?r)"'r*r9r$r'r,s ris_in_stringzHyperParser.is_in_stringfsH

d//0T__T->->?BC	rc|j|jxs+|j|j|jddvS)z5Is the index given to the HyperParser in normal code?r)#r;r<r=r>s r
is_in_codezHyperParser.is_in_codensIMM$"3"344'T__T->->?BC&'	(rc|j|jd}|j}|j|r6|j|j|d|vs|j|d|kDro|dz}|dkryt	||j|d}|j|s7|j|j|d|vrY|j|d|kDro|jdz}|t|jkrH|j|d|k\r3|dz
}|t|jkr|j|d|k\r3|jjd|jt|j|j|dz
fz}|t|jk\s(|j|dt|jkDr|ry|j}||fS|jjd|jt|j|j|ddz
z
fz}||fS)aReturn bracket indexes or None.

        If the index given to the HyperParser is surrounded by a
        bracket defined in openers (or at least has one before it),
        return the indices of the opening bracket and the closing
        bracket (or the end of line, whichever comes first).

        If it is not surrounded by brackets, or the end of line comes
        before the closing bracket and mustclose is True, returns None.
        rrNz%s-%dc)	r'r9r*r$minr)rr
r%)r,openers	mustclosebracketinglevelbeforeafterbeforeindex
afterindexs        rget_surrounding_bracketsz$HyperParser.get_surrounding_bracketsts6//$*;*;<Q?""==(ll4??62156gEoof%a(?:aKFz!/4??63J13MNO
==(ll4??62156gEoof%a(?:
!!A%s4??++ooe$Q'?:QJEs4??++ooe$Q'?:iiooh


s4<<01H1KKL'MNS))??5!!$s4<<'88))JJ&&	D,,T\\"DOOE$:1$=a$?@BBCJJ&&r>NoneTrueFalsect}|}||kDr[t||dz
dkrG|t||dz
r3|dz}||kDr)t||dz
dkr|t||dz
r3||kDrt||dz
dk\r|dz
|k\r@d||dz
|zjr'|dz}|dz
|k\rd||dz
|zjr'|dz
|k\rd||dz
|zjr|dz}|dz
|k\rd||dz
|zjr|dz}|||jsy||krtt||sy||kr t	|||r||||j
vry||z
S)zGiven a string and pos, return the number of chars in the
        identifier which ends at pos, or 0 if there is no such one.

        This ignores non-identifier eywords are not identifiers.
        rrar)_IS_ASCII_ID_CHARordisidentifier_IS_ASCII_ID_FIRST_CHARr_ID_KEYWORDS)clsstrlimitposis_ascii_id_charr4s      r_eat_identifierzHyperParser._eat_identifiers-
%iCAJ#% SQZ1
FA	%iCAJ#% SQZ1
u9SQZC/a%5.cCAcN&:%H%H%JQa%5.cCAcN&:%H%H%J1u~3QU3#7"E"E"GQ1u~3QU3#7"E"E"GQq:**,
W+3s1v;7
s7#a*%Ac
#"2"22Qwrz 	
\c|jstd|j}|j}|j}||d}|j
}|}d}		||kDr||dz
|jvr|dz}nO|s||kDr||dz
dk(r|dz}d}n5||k(r/|dkDr*|||dz
ddk(r|dz}||d}||dzd}nno|sn|j|||}|r
||z
}|}d}n||k(r||d}	|dkDr'||dz
d|	kDr|dz}|dkDr||dz
d|	kDr||d|k(rnP||d}|dz}||d}|}||d	vrn/||d
vr&|dkDr||dz
dvr|dz}|dkDr||dz
dvr|}nn'|||j
S)zReturn a string with the Python expression which ends at the
        given index, which is empty if there is no real one.
        z?get_expression should only be called if index is inside a code.rTr.rArSFz([z'"rRbBuU)rBr7r$r'r9r8_whitespace_charsr^)
r,r$r'
brck_index
brck_limitr\last_identifier_pos
postdot_phaseretlevels
          rget_expressionzHyperParser.get_expressionso :;
;,,__
&&

+A.
!!!
z>gc!en8N8N&N1HC'J&73q5>S+@1HC$(MZ'JNjA6q9:cA!OJ!+J!7!:J$Z\215C'*!&&w
C@CCi&)# %

"#:.q1 1nJqL)A!)Du)L!OJ!1nJqL)A!)Du)Lj)!,
: ,Q/a
'
3A6
&)#3<4's|u,!Ag'#'*:h*F1HC"Ag'#'*:h*F.1+CF*4+>+>??rN)z([{F)__name__
__module____qualname__r5r+r?rBrL	frozensetrXclassmethodr^rbrirrrrsL5n#*(('X67L66r"U@rr__main__)mainz"idlelib.idle_test.test_hyperparserrS)	verbosity)__doc__keywordrstringidlelibrrm
ascii_lettersdigits_ASCII_ID_CHARS_ASCII_ID_FIRST_CHARSr(chrrTrWrrjunittestrq)xs0r<module>r~s
F006==@3FG!&"6"6"<=;@*EQc!f/E16c
;1c!f%%;Z@Z@zz	-;I	F<sB'2B,