
    }f;                    N    d dl mZ d dlZd dlZddlmZ dgZd Z G d de      Z	y)	    )annotationsN   )
NodeWalkerdrawc                \    t               }|j                  |       |j                  |        y N)GraphvizWalkerwalkr   )filenamegrammar	traversers      M/var/www/feuerwehr-webapp/venv/lib/python3.12/site-packages/tatsu/diagrams.pyr   r      s"     INN7NN8    c                  :    e Zd Z fdZed        Zd Zd/dZd Zd/dZ	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d  Z#d! Z$d" Z%d# Z&d$ Z'd% Z(d& Z)d' Z*d( Z+d) Z,d* Z-d+ Z.d, Z/d- Z0d. Z1 xZ2S )0r	   c                    t         |           t        j                  dddd      | _        | j                  g| _        d| _        y )NTLRclusttrue)directedrankdirpackModesplinesr   )super__init__pgvAGraph	top_graphstack
node_count)self	__class__s    r   r   zGraphvizWalker.__init__   s>    4'6
 nn%
r   c                     | j                   d   S )N)r   r    s    r   graphzGraphvizWalker.graph   s    zz"~r   c                r    | j                   j                  d       | j                   j                  |       y )Ndot)prog)r%   layoutr   )r    r   s     r   r   zGraphvizWalker.draw   s)    

u% 	

!r   c                    |$| xj                   dz  c_         d| j                   z  }| j                  j                   | j                  j                  |fi |       | j                  S )Nr   zg%d)r   r   appendr%   add_subgraphr    nameattrs      r   
push_graphzGraphvizWalker.push_graph%   sV    <OOq O4??*D

1$**11$?$?@zzr   c                8    | j                   j                          y r   )r   popr$   s    r   	pop_graphzGraphvizWalker.pop_graph,   s    

r   c                8   |%| xj                   dz  c_         d| j                   z  }n	 | j                  j                  |      S  | j                  j                  |fi | | j                  j                  |      }||j
                  d<   |S # t        $ r Y Tw xY w)Nr   zn%dlabel)r   r%   get_nodeKeyErroradd_noder/   )r    r.   idr/   ns        r   nodezGraphvizWalker.node/   s    :OOq O(Bzz**2.. 	

B'$'JJ#w  s   B 	BBc                (     | j                   |fi |S r   )r;   r-   s      r   tnodezGraphvizWalker.tnode>   s    tyy&&&r   c                    | j                  d      }d|j                  d<   d|j                  d<   d|j                  d<   |S )N pointshapeg|=sizer5   r;   r/   r    r:   s     r   r'   zGraphvizWalker.dotA   s;    IIbM!w%vwr   c                "    | j                         S r   r'   r$   s    r   
start_nodezGraphvizWalker.start_nodeH   s    xxzr   c                F    | j                  |      }d|j                  d<   |S )NboxrA   rC   )r    r.   r:   s      r   ref_nodezGraphvizWalker.ref_nodeK   s!    IIdOwr   c                J     | j                   |fi |}d|j                  d<   |S )NparallelogramrA   rC   )r    r.   r/   r:   s       r   	rule_nodezGraphvizWalker.rule_nodeP   s)    DIId#d#)wr   c                d    | j                  d      }d|j                  d<   d|j                  d<   |S )Nr?   r@   rA   g?widthrC   rD   s     r   end_nodezGraphvizWalker.end_nodeU   s.    IIbM!wwr   c                     | j                   j                  ||fi | | j                   j                  ||      }d|j                  d<   |S )Nnone	arrowhead)r%   add_edgeget_edger/   )r    ser/   edges        r   rX   zGraphvizWalker.edge[   sF    

Aq)D)zz""1a(!'		+r   c                H    | j                  ||      }d|j                  d<   |S )Nbackdir)rX   r/   )r    rV   rW   rX   s       r   redgezGraphvizWalker.redgeb   s$    yyA!		%r   c                *    | j                  ||d      S )Ngư>)lenrX   r    rV   rW   s      r   zedgezGraphvizWalker.zedgeg   s    yyA8y,,r   c                ,    | j                  ||dd      S )N	invisiblerR   )styler[   r_   r`   s      r   nedgezGraphvizWalker.nedgej   s    yyA[fy==r   c                :    | j                   j                  |       y r   )r%   add_path)r    ps     r   pathzGraphvizWalker.pathm   s    

Ar   c                :    | j                   j                  |       y r   )r   r,   )r    r.   bunchs      r   subgraphzGraphvizWalker.subgraphp   s    ##D)r   c                8    t        t        j                  |       S r   )list	itertoolschain)r    argss     r   concatzGraphvizWalker.concats   s    IOOT*++r   c                8    | j                  |j                        S r   r
   expr    ds     r   _walk_decoratorzGraphvizWalker._walk_decoratorv       yyr   c                @    t        dt        |      j                        )NzNo walking for )NotImplementedErrortype__name__)r    r;   s     r   walk_defaultzGraphvizWalker.walk_defaulty   s    !"3T$Z5H5HIIr   c                8    | j                  |j                        S r   rt   rv   s     r   walk__decoratorzGraphvizWalker.walk__decorator|   ry   r   c                   | j                  |j                  dz          	 t        |j                        D cg c]  }| j	                  |       }}| j                          | j                  |j                  dz          	 	 | j                          |d   d   |d   d   }}||fS c c}w # | j                          w xY w# | j                          w xY w)N01r   r#   r   )r0   r.   reversedrulesr
   r3   )r    grvrulesrV   ts         r   walk__grammarzGraphvizWalker.walk__grammar   s    %	,4QWW,=>qdiil>F>NN%	 NNay|VBZ]11v ?NN NNs"   B* B%B* %B* *B<?Cc                ~   | j                  |j                         	 | j                  |j                        \  }}| j	                  |j                  |j                        }| j                  ||       | j                         }| j                  ||       ||f| j                          S # | j                          w xY w)N)r9   )r0   r.   r
   ru   rM   rX   rP   r3   )r    r   irW   rV   r   s         r   
walk__rulezGraphvizWalker.walk__rule   s    	99QUU#DAqqvv!&&1AIIaOAIIaOq6NNDNNs   A<B* *B<c                $    | j                  |      S r   )r   )r    r   s     r   walk__based_rulezGraphvizWalker.walk__based_rule   s    q!!r   c                @    | j                  |j                        }||fS r   )rJ   r.   )r    rrr:   s      r   walk__rule_refzGraphvizWalker.walk__rule_ref   s    MM"''"1vr   c                @    | j                  |j                        }||fS r   )r;   special)r    rV   r:   s      r   walk__specialzGraphvizWalker.walk__special   s    IIaii 1vr   c                $    | j                  |      S r   rx   )r    os     r   walk__overridezGraphvizWalker.walk__override       ##A&&r   c                $    | j                  |      S r   r   rD   s     r   walk__namedzGraphvizWalker.walk__named   r   r   c                $    | j                  |      S r   r   rD   s     r   walk__named_listzGraphvizWalker.walk__named_list   r   r   c                     y r    )r    cs     r   	walk__cutzGraphvizWalker.walk__cut        r   c                    | j                  |      \  }}| j                         }| j                         }| j                  ||       | j                  ||       | j                  ||       ||fS r   )rx   r'   ra   rX   )r    r   r   rW   nines         r   walk__optionalzGraphvizWalker.walk__optional   s_    ##A&1XXZXXZ

2q		"b

1bBxr   c                
   | j                  d       	 | j                  |      \  }}| j                         }| j                  ||       | j                  ||       ||f| j	                          S # | j	                          w xY w)NTB)r   )r0   rx   r'   rX   r3   )r    r   r   rW   r   s        r   walk__closurezGraphvizWalker.walk__closure   sl    %	''*DAqBIIb!IIa8NNDNNs   AA0 0Bc                    | j                  |      \  }}||k(  r| j                  ||       ||fS | j                  ||       ||fS r   )rx   r\   rX   )r    r   r   rW   s       r   walk__positive_closurez%GraphvizWalker.walk__positive_closure   sN    ##A&16JJq! 1v IIaO1vr   c                    | j                  |      \  }}| j                  |j                        }| j                  ||       | j                  ||       ||fS r   )rx   r=   seprX   )r    r   r   rW   r:   s        r   
walk__joinzGraphvizWalker.walk__join   sK    ##A&1JJquu		!Q		!Q1vr   c                $    | j                  |      S r   r   )r    r   s     r   walk__groupzGraphvizWalker.walk__group   r   r   c                .   |j                   D cg c]  }| j                  |       }}|D cg c]  }||	 }}| j                         }| j                         }|D ])  \  }}| j                  ||       | j                  ||       + ||fS c c}w c c}w r   )optionsr
   r'   rX   )r    r   r   voptr   r   r   rW   s           r   walk__choicezGraphvizWalker.walk__choice   s    &'ii0		!001a1=11XXZXXZ 	DAqIIb!IIa	 Bx 11s   BBBc           	        |j                   D cg c]  }| j                  |       }}|D cg c]  }||	 }}|d   \  }}|d   \  }}||k7  rVt        |d d D cg c]  \  }}|	 c}}|dd  D 	
cg c]  \  }	}
|		 c}
}	d      }|D ]  \  }}| j                  ||        ||fS c c}w c c}w c c}}w c c}
}	w )Nr   r#   r   F)strict)sequencer
   ziprX   )r    rV   xvseqr   _rW   _xab_yrk   r:   n1s                 r   walk__sequencezGraphvizWalker.walk__sequence   s    &'jj1		!111a1=11Aw1Bx16 $Sb	*ur1* $QR)uq")E
  !2		!R !1v 21
 +)s   B*B/B/B4
4B:c                x    | j                  |      \  }}| j                  d      }| j                  ||       ||fS )N&rx   r;   rX   r    lar   rW   r:   s        r   walk__lookaheadzGraphvizWalker.walk__lookahead   9    ##B'1IIcN		!Q1vr   c                x    | j                  |      \  }}| j                  d      }| j                  ||       ||fS )N!r   r   s        r   walk__negative_lookaheadz'GraphvizWalker.walk__negative_lookahead   r   r   c                x    | j                  |      \  }}| j                  d      }| j                  ||       ||fS )N>r   r   s        r   walk__rule_includez!GraphvizWalker.walk__rule_include  r   r   c                @    | j                  |j                        }||fS r   )r=   pattern)r    rh   r:   s      r   walk__patternzGraphvizWalker.walk__pattern  s    JJqyy!1vr   c                @    | j                  |j                        }||fS r   )r=   tokenr    r   r:   s      r   walk__tokenzGraphvizWalker.walk__token  s    JJqww1vr   c                *    | j                         }||fS r   rF   )r    vr:   s      r   
walk__voidzGraphvizWalker.walk__void  s    HHJ1vr   c                H    | j                  d|j                   d      }||fS )N`)r=   astr   s      r   walk__constantzGraphvizWalker.walk__constant  s%    JJ155'|$1vr   c                     y r   r   )r    r   s     r   	walk__eofzGraphvizWalker.walk__eof  r   r   r   )3r}   
__module____qualname__r   propertyr%   r   r0   r3   r;   r=   r'   rG   rJ   rM   rP   rX   r\   ra   re   ri   rl   rr   rx   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   __classcell__)r!   s   @r   r	   r	      s      "'


->*, J $
"'''
	'r   r	   )

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