
    #hj                        S SK Jr  S SKrS SKJr  S SKJr  S SKJr  SSK	J
r
  SSKJr   " S	 S
\5      r " S S\S9r " S S\5      r " S S\5      r " S S\5      rg)    )annotationsN)Mapping)contextmanager)Any   )Node)is_listc                  (   ^  \ rS rSrU 4S jrSrU =r$ )NodeWalkerMeta   c                6   > [         TU ]  XX#5      n0 Ul        U$ N)super__new___walker_cache)mcsnamebasesdctclass_	__class__s        M/Users/user/Downloads/htwk/venv/lib/python3.13/site-packages/tatsu/walkers.pyr   NodeWalkerMeta.__new__   s     E7!     )__name__
__module____qualname____firstlineno__r   __static_attributes____classcell__r   s   @r   r   r      s     r   r   c                  N   ^  \ rS rSrU 4S jrSS jrSS jr\rS	SS jjrSr	U =r
$ )

NodeWalker   c                V   > [         TU ]  5         [        U 5      R                  U l        g r   )r   __init__typer   )selfr   s    r   r'   NodeWalker.__init__   s&    !

- 	r   c           
        [        U[        [        -  5      (       a&  U Vs/ s H  o@R                  " U/UQ70 UD6PM     sn$ [        U[        5      (       a9  UR                  5        VVs0 s H  u  pVXPR                  " U/UQ70 UD6_M     snn$ U R                  U5      n[        U5      (       a  U" X/UQ70 UD6$ U$ s  snf s  snnf r   )
isinstancelisttuplewalkr   items_find_walkercallable)r)   nodeargskwargsnr   valuewalkers           r   r/   NodeWalker.walk   s    dD5L));?@4aIIa1$1&14@@dG$$ $(::<#/KD ii7777#/ 
 ""4(F$6t6v66K As   C +"Cc                    [        U[        5      (       d  / $ UR                  5        Vs/ s H  nU R                  " U/UQ70 UD6PM     sn$ s  snf r   )r,   r   childrenr/   )r)   r3   r4   r5   childs        r   walk_childrenNodeWalker.walk_children+   sT    $%%I 
( IIe-d-f-(
 	
 
s    Ac                   S nU R                   nUR                   nUR                  nU R                  R                  U5      =n(       a  U$ UR                   /nU(       a  UR	                  S5      nUR
                  n	[        XBU	-   S 5      n[        U5      (       a  O[        R                  " SX5R
                  5      n
X:w  a   [        XBU
-   S 5      n[        U5      (       a  OU
R                  S5      n
X:w  a   [        XBU
-   S 5      n[        U5      (       a  OcUR                   H  nX;  d  M
  UR                  U5        M     U(       a  M  [        USS 5      nUc  [        USS 5      n[        U5      (       d  S nXpR                  U'   U$ )Nc                D    SU R                  5       R                  5       -   $ )N_)grouplower)ms    r   pythonize_match0NodeWalker._find_walker.<locals>.pythonize_match8   s    ***r   r   z[A-Z]+rA   _walk_defaultwalk_default)r   r   r   getpopr   getattrr2   resublstrip	__bases__append)r)   r3   prefixrE   clsnode_clsnode_cls_qualnamer8   node_classescammelcase_namepythonic_namebs               r   r1   NodeWalker._find_walker7   s   	+ nn>>$11''++,=>>6>M'#''*H&//OS?":DAF FF?,=,=M / }&<dCF## *005M/ }&<dCF##''( ''* (1 l8 S/48F~  F##06,-r   )r   )r3   zNode | list[Node]returnr   )r3   r   )walk_)r   r   r   r   r'   r/   r=   _walk_childrenr1   r    r!   r"   s   @r   r$   r$      s#     
 #N1 1r   r$   )	metaclassc                  (   ^  \ rS rSrU 4S jrSrU =r$ )PreOrderWalkerk   c                b   > [         TU ]  " U/UQ70 UD6nUb  U R                  " U/UQ70 UD6  U$ r   )r   r/   r=   )r)   r3   r4   r5   resultr   s        r   r/   PreOrderWalker.walkl   s>    d4T4V4t5d5f5r   r   r   r   r   r   r/   r    r!   r"   s   @r   r_   r_   k   s     r   r_   c                  (   ^  \ rS rSrU 4S jrSrU =r$ )DepthFirstWalkers   c           
        > [        U[        5      (       aG  UR                  5        Vs/ s H  o@R                  " U/UQ70 UD6PM     nn[        TU ]  " X/UQ70 UD6$ [        U[
        5      (       a9  UR                  5        VVs0 s H  u  pgX`R                  " U/UQ70 UD6_M     snn$ [        U5      (       a/  [        U5       Vs/ s H  opR                  " U/UQ70 UD6PM     sn$ [        TU ]  " U/ /UQ70 UD6$ s  snf s  snnf s  snf r   )	r,   r   r;   r/   r   r   r0   r	   iter)	r)   r3   r4   r5   cr;   r6   er   s	           r   r/   DepthFirstWalker.walkt   s    dD!!?C}}O!		!5d5f5HO7<@@@@g&&AENAyy4T4V44NNT]];?:F:aIIa1$1&1:FF7<b:4:6:: P OFs   D "D	Dr   rd   r"   s   @r   rf   rf   s   s    	; 	;r   rf   c                  v   ^  \ rS rSrU 4S jrS rS rS rS rS r	\
S 5       r\
S	 5       r\S
 5       rSrU =r$ )ContextWalker   c                >   > [         TU ]  5         Xl        U/U l        g r   )r   r'   _initial_context_context_stack)r)   initial_contextr   s     r   r'   ContextWalker.__init__   s     /./r   c                    U$ r   r   )r)   r3   r4   r5   s       r   get_node_contextContextWalker.get_node_context   s    r   c                    g r   r   r)   ctxs     r   enter_contextContextWalker.enter_context       r   c                    g r   r   ry   s     r   leave_contextContextWalker.leave_context   r}   r   c                :    U R                   R                  U5        g r   )rr   rP   ry   s     r   push_contextContextWalker.push_context   s    ""3'r   c                8    U R                   R                  5         g r   )rr   rJ   r)   s    r   pop_contextContextWalker.pop_context   s    !r   c                    U R                   $ r   )rq   r   s    r   rs   ContextWalker.initial_context   s    $$$r   c                     U R                   S   $ )N)rr   r   s    r   contextContextWalker.context   s    ""2&&r   c              /  J  #    U R                   " U/UQ70 UD6nX@R                  :X  a  Uv   g U R                  U5         U R                  U5         Uv   U R	                  5          U R                  U5        g ! U R	                  5         f = f! U R                  U5        f = f7fr   )rv   r   r{   r   r   r   )r)   r3   r4   r5   rz   s        r   new_contextContextWalker.new_context   s     ##D:4:6:,,Is#(!!#&'I$$&""3' $$&""3's4   <B#B A8 B &B#8B

B B  B#)rr   rq   )r   r   r   r   r'   rv   r{   r   r   r   propertyrs   r   r   r   r    r!   r"   s   @r   rn   rn      s]    0(" % % ' ' ( (r   rn   )
__future__r   rL   collections.abcr   
contextlibr   typingr   objectmodelr   utilr	   r(   r   r$   r_   rf   rn   r   r   r   <module>r      sY    " 	 # %   T U> UpZ 
;z 
;.(J .(r   