
    #h;                    N    S SK Jr  S SKrS SKrSSKJr  S/rS r " S S\5      r	g)	    )annotationsN   )
NodeWalkerdrawc                \    [        5       nUR                  U5        UR                  U 5        g N)GraphvizWalkerwalkr   )filenamegrammar	traversers      N/Users/user/Downloads/htwk/venv/lib/python3.13/site-packages/tatsu/diagrams.pyr   r      s"     INN7NN8    c                  H  ^  \ rS rSrU 4S jr\S 5       rS rS1S jrS r	S1S j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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+S) r,S* r-S+ r.S, r/S- r0S. r1S/ r2S0r3U =r4$ )2r	      c                   > [         TU ]  5         [        R                  " SSSSS9U l        U R                  /U l        SU l        g )NTLRclusttrue)directedrankdirpackModesplinesr   )super__init__pgvAGraph	top_graphstack
node_count)self	__class__s    r   r   GraphvizWalker.__init__   s>    4'6
 nn%
r   c                     U R                   S   $ )N)r   r!   s    r   graphGraphvizWalker.graph   s    zz"~r   c                l    U R                   R                  SS9  U R                   R                  U5        g )Ndot)prog)r'   layoutr   )r!   r   s     r   r   GraphvizWalker.draw   s)    

u% 	

!r   c                    Uc$  U =R                   S-  sl         SU R                   -  nU R                  R                  U R                  R                  " U40 UD65        U R                  $ )Nr   zg%d)r    r   appendr'   add_subgraphr!   nameattrs      r   
push_graphGraphvizWalker.push_graph%   sS    <OOq O4??*D

$**11$?$?@zzr   c                8    U R                   R                  5         g r   )r   popr&   s    r   	pop_graphGraphvizWalker.pop_graph,   s    

r   c                :   Uc%  U =R                   S-  sl         SU R                   -  nO U R                  R                  U5      $ U R                  R                  " U40 UD6  U R                  R                  U5      nXR
                  S'   U$ ! [         a     NTf = f)Nr   zn%dlabel)r    r'   get_nodeKeyErroradd_noder3   )r!   r2   idr3   ns        r   nodeGraphvizWalker.node/   s    :OOq O(Bzz**2.. 	

B'$'JJ#w  s   B 
BBc                (    U R                   " U40 UD6$ r   )rA   r1   s      r   tnodeGraphvizWalker.tnode>   s    yy&&&r   c                    U R                  S5      nSUR                  S'   SUR                  S'   SUR                  S'   U$ )N pointshapeg|=sizer;   rA   r3   r!   r@   s     r   r*   GraphvizWalker.dotA   s;    IIbM!w%vwr   c                "    U R                  5       $ r   r*   r&   s    r   
start_nodeGraphvizWalker.start_nodeH   s    xxzr   c                F    U R                  U5      nSUR                  S'   U$ )NboxrI   rK   )r!   r2   r@   s      r   ref_nodeGraphvizWalker.ref_nodeK   s!    IIdOwr   c                J    U R                   " U40 UD6nSUR                  S'   U$ )NparallelogramrI   rK   )r!   r2   r3   r@   s       r   	rule_nodeGraphvizWalker.rule_nodeP   s'    IId#d#)wr   c                d    U R                  S5      nSUR                  S'   SUR                  S'   U$ )NrG   rH   rI   g?widthrK   rL   s     r   end_nodeGraphvizWalker.end_nodeU   s.    IIbM!wwr   c                    U R                   R                  " X40 UD6  U R                   R                  X5      nSUR                  S'   U$ )Nnone	arrowhead)r'   add_edgeget_edger3   )r!   ser3   edges        r   re   GraphvizWalker.edge[   s@    

A)D)zz""1(!'		+r   c                F    U R                  X5      nSUR                  S'   U$ )Nbackdir)re   r3   )r!   rc   rd   re   s       r   redgeGraphvizWalker.redgeb   s"    yy!		%r   c                "    U R                  XSS9$ )Ngư>)lenre   r!   rc   rd   s      r   zedgeGraphvizWalker.zedgeg   s    yy8y,,r   c                $    U R                  XSSS9$ )N	invisibler_   )styleri   rn   ro   s      r   nedgeGraphvizWalker.nedgej   s    yy[fy==r   c                :    U R                   R                  U5        g r   )r'   add_path)r!   ps     r   pathGraphvizWalker.pathm   s    

Ar   c                :    U R                   R                  U5        g r   )r   r0   )r!   r2   bunchs      r   subgraphGraphvizWalker.subgraphp   s    ##D)r   c                :    [        [        R                  " U6 5      $ r   )list	itertoolschain)r!   argss     r   concatGraphvizWalker.concats   s    IOOT*++r   c                8    U R                  UR                  5      $ r   r
   expr!   ds     r   _walk_decoratorGraphvizWalker._walk_decoratorv       yyr   c                @    [        S[        U5      R                  5      e)NzNo walking for )NotImplementedErrortype__name__)r!   rA   s     r   walk_defaultGraphvizWalker.walk_defaulty   s    !"3T$Z5H5HIIr   c                8    U R                  UR                  5      $ r   r   r   s     r   walk__decoratorGraphvizWalker.walk__decorator|   r   r   c                   U R                  UR                  S-   5         [        UR                  5       Vs/ s H  o R	                  U5      PM     nnU R                  5         U R                  UR                  S-   5          U R                  5         US   S   US   S   pTXE4$ s  snf ! U R                  5         f = f! U R                  5         f = f)N01r   r%   r   )r4   r2   reversedrulesr
   r8   )r!   grvrulesrc   ts         r   walk__grammarGraphvizWalker.walk__grammar   s    %	,4QWW,=>,=qiil,=F>NN%	 NNay|VBZ]1v ?NN NNs"   B* B%B* %B* *B<?Cc                p   U R                  UR                  5         U R                  UR                  5      u  p#U R	                  UR                  UR                  S9nU R                  XB5        U R                  5       nU R                  X55        XE4U R                  5         $ ! U R                  5         f = f)N)r?   )r4   r2   r
   r   rX   re   r\   r8   )r!   r   ird   rc   r   s         r   
walk__ruleGraphvizWalker.walk__rule   s    	99QUU#DAqvv!&&1AIIaOAIIaO6NNDNNs   A5B# #B5c                $    U R                  U5      $ r   )r   )r!   r   s     r   walk__based_ruleGraphvizWalker.walk__based_rule   s    q!!r   c                >    U R                  UR                  5      nX"4$ r   )rT   r2   )r!   rrr@   s      r   walk__rule_refGraphvizWalker.walk__rule_ref   s    MM"''"vr   c                >    U R                  UR                  5      nX"4$ r   )rA   special)r!   rc   r@   s      r   walk__specialGraphvizWalker.walk__special   s    IIaii vr   c                $    U R                  U5      $ r   r   )r!   os     r   walk__overrideGraphvizWalker.walk__override       ##A&&r   c                $    U R                  U5      $ r   r   rL   s     r   walk__namedGraphvizWalker.walk__named   r   r   c                $    U R                  U5      $ r   r   rL   s     r   walk__named_listGraphvizWalker.walk__named_list   r   r   c                    g r    )r!   cs     r   	walk__cutGraphvizWalker.walk__cut        r   c                    U R                  U5      u  p#U R                  5       nU R                  5       nU R                  XB5        U R                  XE5        U R                  X55        XE4$ r   )r   r*   rp   re   )r!   r   r   rd   nines         r   walk__optionalGraphvizWalker.walk__optional   sU    ##A&XXZXXZ

2		"

1xr   c                    U R                  SS9   U R                  U5      u  p#U R                  5       nU R                  XB5        U R                  X45        XD4U R	                  5         $ ! U R	                  5         f = f)NTB)r   )r4   r   r*   re   r8   )r!   r   r   rd   r   s        r   walk__closureGraphvizWalker.walk__closure   sd    %	''*DABIIbIIa8NNDNNs   AA) )A;c                    U R                  U5      u  p#X#:X  a  U R                  X25        X#4$ U R                  X25        X#4$ r   )r   rj   re   )r!   r   r   rd   s       r   walk__positive_closure%GraphvizWalker.walk__positive_closure   sB    ##A&6JJq v IIaOvr   c                    U R                  U5      u  p#U R                  UR                  5      nU R                  X$5        U R                  XC5        X#4$ r   )r   rD   sepre   )r!   r   r   rd   r@   s        r   
walk__joinGraphvizWalker.walk__join   sC    ##A&JJquu		!		!vr   c                $    U R                  U5      $ r   r   )r!   r   s     r   walk__groupGraphvizWalker.walk__group   r   r   c                6   UR                    Vs/ s H  o R                  U5      PM     nnU Vs/ s H	  o"c  M  UPM     nnU R                  5       nU R                  5       nU H'  u  pgU R                  XF5        U R                  Xu5        M)     XE4$ s  snf s  snf r   )optionsr
   r*   re   )r!   r   r   voptr   r   r   rd   s           r   walk__choiceGraphvizWalker.walk__choice   s    &'ii0i		!i014a41XXZXXZDAIIbIIa  x 11s   BBBc           	        UR                    Vs/ s H  o R                  U5      PM     nnU Vs/ s H	  o"c  M  UPM     nnUS   u  pEUS   u  pVXF:w  aW  [        US S  VVs/ s H  u  pxUPM	     snnUSS   V	V
s/ s H  u  pU	PM	     sn
n	SS9nU H  u  pU R                  X5        M     XF4$ s  snf s  snf s  snnf s  sn
n	f )Nr   r%   r   F)strict)sequencer
   zipre   )r!   rc   xvseqr   _rd   _xab_yr}   r@   n1s                 r   walk__sequenceGraphvizWalker.walk__sequence   s    &'jj1j		!j114a41AwBx6 $Sb	*	ur	* $QR)uq)E
 		!  v 21
 +)s   B.B3B3!B8
:B>c                r    U R                  U5      u  p#U R                  S5      nU R                  XC5        XC4$ )N&r   rA   re   r!   lar   rd   r@   s        r   walk__lookaheadGraphvizWalker.walk__lookahead   3    ##B'IIcN		!vr   c                r    U R                  U5      u  p#U R                  S5      nU R                  XC5        XC4$ )N!r   r   s        r   walk__negative_lookahead'GraphvizWalker.walk__negative_lookahead   r   r   c                r    U R                  U5      u  p#U R                  S5      nU R                  XC5        XC4$ )N>r   r   s        r   walk__rule_include!GraphvizWalker.walk__rule_include  r   r   c                >    U R                  UR                  5      nX"4$ r   )rD   pattern)r!   ry   r@   s      r   walk__patternGraphvizWalker.walk__pattern  s    JJqyy!vr   c                >    U R                  UR                  5      nX"4$ r   )rD   tokenr!   r   r@   s      r   walk__tokenGraphvizWalker.walk__token  s    JJqwwvr   c                (    U R                  5       nX"4$ r   rO   )r!   vr@   s      r   
walk__voidGraphvizWalker.walk__void  s    HHJvr   c                F    U R                  SUR                   S35      nX"4$ )N`)rD   astr   s      r   walk__constantGraphvizWalker.walk__constant  s#    JJ155'|$vr   c                    g r   r   )r!   r  s     r   	walk__eofGraphvizWalker.walk__eof  r   r   )r    r   r   r   )5r   
__module____qualname____firstlineno__r   propertyr'   r   r4   r8   rA   rD   r*   rP   rT   rX   r\   re   rj   rp   ru   rz   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  __static_attributes____classcell__)r"   s   @r   r	   r	      s      "'


->*, J $
"'''
	' r   r	   )

__future__r   r   
pygraphvizr   walkersr   __all__r   r	   r   r   r   <module>r     s+    "   (HZ Hr   