ó
    Ð]j¬  ã                   ó†   • S SK Jr  S SKJr  S SKJr  \R                  r\R                  r\R                  r " S S\5      r	g)é    )Útree)ÚPythonTokenTypes)Ú
BaseParserc                   óP  ^ • \ rS rSrSr0 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                   _\R"                  \R$                  \R&                  \R(                  \R*                  \R,                  \R.                  \R0                  \R0                  \R2                  S.
Er\R6                  r\R<                  \R>                  \R@                  \RB                  \RD                  \RF                  \RH                  \RJ                  \RL                  \RN                  \RP                  \RR                  \RT                  \RV                  0r,SU 4S jjr-U 4S jr.S r/S r0U 4S jr1S r2S r3Sr4U =r5$ )ÚParseré   z¸
This class is used to parse a Python file, it then divides them into a
class structure of different scopes.

:param pgen_grammar: The grammar object of pgen2. Loaded by load_grammar.
Ú	expr_stmtÚclassdefÚfuncdefÚ
file_inputÚimport_nameÚimport_fromÚ
break_stmtÚcontinue_stmtÚreturn_stmtÚ
raise_stmtÚ
yield_exprÚdel_stmtÚ	pass_stmtÚglobal_stmtÚnonlocal_stmtÚ
print_stmtÚassert_stmt)
Úif_stmtÚ	with_stmtÚfor_stmtÚ
while_stmtÚtry_stmtÚsync_comp_forÚ	decoratorÚlambdefÚlambdef_nocondÚnamedexpr_testc                 óL   >• [         TU ]  XUS9  / U l        / U l        SU l        g )N)Úerror_recoveryr   )ÚsuperÚ__init__Úsyntax_errorsÚ_omit_dedent_listÚ_indent_counter)ÚselfÚpgen_grammarr%   Ústart_nonterminalÚ	__class__s       €ÚP/home/mande/repo/quber/.venv/lib/python3.13/site-packages/parso/python/parser.pyr'   ÚParser.__init__@   s4   ø€ Ü‰Ñ˜Ø(6ð 	ñ 	8ð  ˆÔØ!#ˆÔØ ˆÕó    c                 ó’   >• U R                   (       a'  U R                  S:w  a  [        eU R                  U5      n[        TU ]  U5      $ )Nr   )Ú_error_recoveryÚ_start_nonterminalÚNotImplementedErrorÚ_recovery_tokenizer&   Úparse)r+   Útokensr.   s     €r/   r7   ÚParser.parseH   s?   ø€ Ø××Ø×&Ñ&¨,Ó6Ü)Ð)à×,Ñ,¨VÓ4ˆFä‰w‰}˜VÓ$Ð$r1   c                 óš   •  U R                   U   " U5      nU$ ! [         a'    US:X  a  US   /USS -   nU R                  X5      n U$ f = f)zã
Convert raw node information to a PythonBaseNode instance.

This is passed to the parser driver which calls it whenever a reduction of a
grammar rule produces a new complete node, so that the tree is build
strictly bottom-up.
Úsuiter   é   éÿÿÿÿ)Únode_mapÚKeyErrorÚdefault_node)r+   ÚnonterminalÚchildrenÚnodes       r/   Úconvert_nodeÚParser.convert_nodeQ   sg   € ð		<Ø—=‘= Ò-¨hÓ7ˆDð ˆøô ó 	<Ø˜gÓ%ð
 % Q™K˜=¨8°A°b¨>Ñ9�Ø×$Ñ$ [Ó;‰DØˆð	<ús   ‚ ™-A
Á	A
c                 ó  • U[         :X  aG  X R                  R                  ;   a  [        R                  " X$U5      $ [        R
                  " X$U5      $ U R                  R                  U[        R                  5      " X$U5      $ )N)	ÚNAMEÚ_pgen_grammarÚreserved_syntax_stringsr   ÚKeywordÚNameÚ	_leaf_mapÚgetÚOperator)r+   ÚtypeÚvalueÚprefixÚ	start_poss        r/   Úconvert_leafÚParser.convert_leafe   s_   € à”4‹<Ø×*Ñ*×BÑBÓBÜ—|’| E°fÓ=Ð=ä—y’y °6Ó:Ð:à�~‰~×!Ñ! $¬¯©Ô6°uÈÓPÐPr1   c                 ód  >• U R                   S   R                  nU(       a  US   R                  5       nOS nU R                  S:X  Ga*  UR                  [
        R                  :X  dT  UR                  [        :X  aø  UR                  R                  S5      (       dØ  UR                  R                  S5      (       d¸  U R                   S   R                  R                  S:X  a‘   U R                   S   R                  R                  [
        R                     nUR                  R                  (       aA  UR                   (       d0  UR                  U R                   S   l
        U R#                  U5        g U R&                  (       d  [(        TU ]U  U5      $ S nU" U R                   5      nU R-                  US-   5      (       a  U R#                  U5        O~Uu  pxpšU[.        :X  a%  U R0                  R3                  U R4                  5        [6        R8                  " UR:                  X‰U
5      nU R                   S   R                  R3                  U5        U R                   S   nUR<                  S:X  a    UR                  R>                  S	   Ul
        g g ! [$         a     GN+f = f! [$         a     g f = f)
Nr=   r   Ú
ÚÚsimple_stmtc                 óÔ   • [        [        [        U 5      5      5       HF  u  pUR                  S:X  a    U$ UR                  S:X  d  M*  [	        UR
                  5      S:w  d  ME    U$    W$ )Nr   r;   é   )ÚreversedÚlistÚ	enumeraterA   ÚlenÚnodes)ÚstackÚuntil_indexÚ
stack_nodes      r/   Úcurrent_suiteÚ,Parser.error_recovery.<locals>.current_suiteŽ   sp   € ô ,4´D¼À5Ó9IÓ4JÖ+KÑ'�à×)Ñ)¨\Ó9Øð Ðð  ×+Ñ+¨wÕ6ô ˜:×+Ñ+Ó,°Õ1ØØÐñ ,Lð Ðr1   rZ   r;   Ústmt) r`   r_   Úget_last_leafr4   rO   r   Ú	ENDMARKERÚDEDENTrP   ÚendswithÚdfaÚ	from_ruleÚtransitionsÚNEWLINEÚnext_dfaÚis_finalÚ
dfa_pushesÚ
_add_tokenr?   r3   r&   r%   Ú_stack_removalÚINDENTr)   Úappendr*   r   ÚPythonErrorLeafÚnamerA   Úarcs)r+   ÚtokenÚ	tos_nodesÚ	last_leafÚplanrc   ra   ÚtyprP   rR   rQ   Ú
error_leafÚtosr.   s                €r/   r%   ÚParser.error_recoveryo   s  ø€ Ø—J‘J˜r‘N×(Ñ(ˆ	ÞØ! "™×3Ñ3Ó5‰IàˆIà×"Ñ" lÔ2Ø—‘Ô/×9Ñ9Ó9Ø—J‘J¤&Ó(°·±×1IÑ1IÈ$×1OÑ1OØ"Ÿ™×1Ñ1°$×7Ñ7ð
 �z‰z˜"‰~×!Ñ!×+Ñ+¨}Ó<ð
ØŸ:™: b™>×-Ñ-×9Ñ9Ô:J×:RÑ:RÑS�Dð —}‘}×-×-°d·o·oð .2¯]©]˜Ÿ
™
 2™Ô*ØŸ™¨Ô.Øà×#×#Ü‘7Ñ)¨%Ó0Ð0ò	ñ $ D§J¡JÓ/ˆà×Ñ˜{¨Q™×/Ñ/Ø�O‰O˜EÕ"à,1Ñ)ˆC˜	Ø”f‹}ð ×&Ñ&×-Ñ-¨d×.BÑ.BÔCä×-Ò-¨c¯h©h¸È&ÓQˆJØ�J‰J�r‰N× Ñ ×'Ñ'¨
Ô3à�j‰j˜‰nˆØ�?‰?˜gÓ%ðØŸ'™'Ÿ,™, vÑ.�•ð	 &øôW  ó Úðûô` ó áðús$   Ã#4J É1J" Ê
JÊJÊ"
J/Ê.J/c                 ó8  • U R                   US   VVs/ s H  o"R                    H  o3PM     M     nnnU(       aA  [        R                  " U5      nU R                   US-
     R                  R	                  U5        / U R                   US & [        U5      $ s  snnf )NrZ   )r`   r_   r   ÚPythonErrorNodert   Úbool)r+   Ústart_indexrb   rC   Ú	all_nodess        r/   rr   ÚParser._stack_removalµ   s„   € Ø,0¯J©J°{°|Ñ,DÔbÒ,D˜j×QaÕQaÈ’TÑQa‘TÑ,Dˆ	ÑbæÜ×'Ò'¨	Ó2ˆDØ�J‰J�{ Q‘Ñ'×-Ñ-×4Ñ4°TÔ:à#%ˆ�
‰
�;�<Ð Ü�I‹Ðùó cs   “Bc              #   óH  #   • U H˜  nUS   nU[         :X  ac  U R                  nU(       a:  US   U R                  :X  a'  UR                  5         U =R                  S-  sl        M_  U =R                  S-  sl        OU[        :X  a  U =R                  S-  sl        Uv •  Mš     g 7f)Nr   r=   rZ   )rh   r)   r*   Úpoprs   )r+   r8   rx   r|   Úos        r/   r6   ÚParser._recovery_tokenize¿   s‹   é € ÛˆEØ˜‘(ˆCØ”f‹}ð ×*Ñ*�Þ˜˜2™ $×"6Ñ"6Ó6Ø—E‘E”GØ×(Ò(¨AÑ-Õ(Ùà×$Ò$¨Ñ)Ö$Øœ“Ø×$Ò$¨Ñ)Õ$ØŒKò ùs   ‚B B")r*   r)   r(   )Tr   )6Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   ÚExprStmtÚClassÚFunctionÚModuleÚ
ImportNameÚ
ImportFromÚKeywordStatementÚ
ReturnStmtÚ	YieldExprÚ
GlobalStmtÚ
AssertStmtÚIfStmtÚWithStmtÚForStmtÚ	WhileStmtÚTryStmtÚSyncCompForÚ	DecoratorÚLambdaÚ	NamedExprr>   Ú
PythonNoder@   r   ÚSTRINGÚStringÚNUMBERÚNumberrm   ÚNewlinerg   Ú	EndMarkerÚFSTRING_STRINGÚFStringStringÚFSTRING_STARTÚFStringStartÚFSTRING_ENDÚ
FStringEndrL   r'   r7   rD   rS   r%   rr   r6   Ú__static_attributes__Ú__classcell__)r.   s   @r/   r   r      s'  ø† ñðØ�T—]‘]ðà�D—J‘Jðð 	�4—=‘=ðð 	�d—k‘kð	ð
 	�t—‘ðð 	�t—‘ðð 	�d×+Ñ+ðð 	˜×.Ñ.ðð 	�t—‘ðð 	�d×+Ñ+ðð 	�d—n‘nðð 	�D×)Ñ)ðð 	�T×*Ñ*ðð 	�t—‘ðð 	˜×.Ñ.ðð  	�d×+Ñ+ð!ð" 	�t—‘ð#ð$ —;‘;Ø—]‘]Ø—L‘LØ—n‘nØ—L‘LØ×)Ñ)ð —^‘^Ø—;‘;ØŸ+™+ØŸ.™.ò=€Hð@ —?‘?€Lð 	×Ñ §¡Ø×Ñ §¡Ø× Ñ  $§,¡,Ø×"Ñ" D§N¡NØ×'Ñ'¨×);Ñ);Ø×&Ñ&¨×(9Ñ(9Ø×$Ñ$ d§o¡oð€I÷!õ%òò(QõDòL÷ð r1   r   N)
Úparso.pythonr   Úparso.python.tokenr   Úparso.parserr   rG   rs   rh   r   © r1   r/   Ú<module>r¶      s?   ðÝ Ý /Ý #ð ×Ñ€Ø	×	 Ñ	 €Ø	×	 Ñ	 €ôCˆZõ Cr1   