
    }f;#                        d dl mZ d dlZd dlZd dlZd dlmZ d dlmZ ddlm	Z	 ddl
mZ ddlmZmZ d	Zd
 Z G d de	      Z G d d      Z G d de      Z G d de      Z G d de      Zy)    )annotationsN)defaultdictcopy   )ParseException)LineIndexInfo)asjson
join_lists.c                \    fd| si S t        | d         }| dd  D ]  } ||      } |S )Nc                    t        |       } |j                  D ]<  }|j                  }|| vs| j                  r| j	                  |       1 | |   |       > | S N)r   symbolsname
duplicatesinsert)basetargetsymbolr   join_namespacess       N/var/www/feuerwehr-webapp/venv/lib/python3.12/site-packages/tatsu/symtables.pyr   z'join_symtables.<locals>.join_namespaces   sW    Dznn 	4F;;D44??F#T
F3	4     r   r   r   )tablesresulttabler   s      @r   join_symtablesr      sE     	&)_F 0 /0Mr   c                      e Zd Zy)SymbolTableErrorN)__name__
__module____qualname__ r   r   r   r   $   s    r   r   c                       e Zd Zddef fd	Zed        Zed        Zed        Zd Z	d Z
d Zdd	Zd
 ZddZddZddZd Zd Zd Zd Zd Zd ZddZ xZS )	NamespaceFc                t    t         |           || _        || _        || _        t        t              | _        y r   )super__init__
ignorecaser   	separatorr   list_entries)selfr)   r   r*   	__class__s       r   r(   zNamespace.__init__)   s1     	$$"#D)r   c                    | j                   S r   )r,   r-   s    r   entrieszNamespace.entries2   s    }}r   c                H    t        | j                  j                               S r   )r   r,   valuesr0   s    r   r   zNamespace.symbols6   s    $--..011r   c                H    t        | j                  j                               S r   )r+   r,   keysr0   s    r   nameszNamespace.names:   s    DMM&&())r   c                    g }| j                   j                         D ]<  \  }}|j                  |       |D ]!  }|j                  |j	                                # > |S r   )r1   itemsappendextend	all_names)r-   r   r   r   r   s        r   r;   zNamespace.all_names>   s^    !\\//1 	2MD'MM$! 2f..012	2 r   c                V    | j                   r|j                         }|| j                  v S r   )r)   upperr1   r-   r   s     r   __contains__zNamespace.__contains__F   s#    ??::<Dt||##r   c                    | j                   r|j                         }| j                  r| j                  j	                  |      S || j                  v r| j                  |   d   S t        |      )Nr   )r)   r=   r   r1   getKeyErrorr>   s     r   __getitem__zNamespace.__getitem__K   sZ    ??::<D??<<##D))T\\!<<%a((4. r   c                :    | j                   j                  ||      S r   )r1   rA   )r-   r   defaults      r   rA   zNamespace.getU   s    ||g..r   c                T   t        |j                  t              sJ d|j                  d       |j                  }| j                  r|j	                         }|| j
                  v r%| j                  st        d|j                  d      | j
                  |   j                  |       y )N"" is not a valid symbol namezSymbol "z" already in namespace)	
isinstancer   strr)   r=   r,   r   r   r9   )r-   r   r   s      r   r   zNamespace.insertX   s    KK
 	;v{{o9:	; 
 {{??::<D4== "6;;/)?@  	d""6*r   c                    | j                   r|j                         }| j                  |j                  | j                        |      S )N)drillr)   r=   _lookup_drilldownsplitr*   )r-   qualnamerL   s      r   
lookup_allzNamespace.lookup_allf   s?    ??~~'H%%NN4>>*% & 
 	
r   c                    | j                   r|j                         }| j                  |j                  | j                        |d      }|r|d   S d S )Nr   rL   maxr   rM   )r-   rP   rL   r   s       r   lookupzNamespace.lookupm   sQ    ??~~'H''NN4>>*%Q ( 
 #vay,,r   c                    |sg S g }| j                   D ];  }|j                  |||      }|j                  |       |s+t        |      |k\  s: |S  |S NrS   )r   rN   r:   len)r-   namelistrL   rT   r   r   founds          r   rN   zNamespace._lookup_drilldownu   sb    Ill 	F,,XU,LEMM% s6{c)	
 r   c                $    | j                  |      S r   )rU   r-   rP   s     r   resolvezNamespace.resolve   s    {{8$$r   c                t    t        j                  t        j                  fd| j                  D        g       S )Nc              3  @   K   | ]  }|j                          y wr   filter).0r   	conditions     r   	<genexpr>z#Namespace.filter.<locals>.<genexpr>   s     A&V]]9%As   )	functoolsreduceoperatoriaddr   )r-   rc   s    `r   ra   zNamespace.filter   s,    MMADLLA
 	
r   c                T    | j                   D ]  }|j                  |      }|s|c S  y r   )r   filter_first)r-   rc   r   r   s       r   rj   zNamespace.filter_first   s2    ll 	F((3F	 r   c                &    | j                  d       S )Nc                      y)NTr#   r#   r   r   <lambda>zNamespace.all.<locals>.<lambda>   s    r   r`   r0   s    r   allzNamespace.all   s    {{<((r   c                    t        |       S r   )r
   r0   s    r   r
   zNamespace.asjson   s    d|r   c                2    t        |       j                   dS Nz[])typer    r0   s    r   __repr__zNamespace.__repr__   s    t*%%&b))r   c           	         | j                   j                         D ci c]  \  }}|t        ||       c}}S c c}}w )Nseen)r1   r8   r
   )r-   rv   r   r   s       r   __json__zNamespace.__json__   sA     "&!3!3!5
g &t,,
 	
 
s   :r   )TTN)r    r!   r"   DEFAULT_SEPARATORr(   propertyr1   r   r6   r;   r?   rC   rA   r   rQ   rU   rN   r]   ra   rj   rn   r
   rs   rw   __classcell__r.   s   @r   r%   r%   (   s    5<M*   2 2 * *$
!/+
-
%
)*
r   r%   c                      e Zd Zd Zy)SymbolTablec                J    | j                  |      }|j                  ||       y r   )rU   add_reference)r-   rP   	from_noder   s       r   r   zSymbolTable.add_reference   s     X&Xy1r   N)r    r!   r"   r   r#   r   r   r~   r~      s    2r   r~   c                       e Zd Zd fd	Zed        Zed        Zed        Zed        Zed        Z	 fdZ
d Zefd	Zd fd
	Zd Z fdZ fdZd ZddZd Zd Zd fd	Zd Zd Z xZS )Symbolc                    t         |   ||       t        |t              st	        d| d      || _        || _        d | _        g | _        y )N)r)   r   rG   rH   )	r'   r(   rI   rJ   	TypeErrorr   _node_parent_references)r-   r   noder)   r   r.   s        r   r(   zSymbol.__init__   sQ    J:F$$av%ABCC	
r   c                    | j                   S r   )r   r0   s    r   r   zSymbol.node   s    zzr   c                .    | j                   j                  S r   )r   liner0   s    r   r   zSymbol.line   s    yy~~r   c                .    | j                   j                  S r   )r   endliner0   s    r   r   zSymbol.endline   s    yy   r   c                <    | j                   | j                         S y r   r   r0   s    r   parentzSymbol.parent   s    <<#<<>!r   c                    | j                   S r   )r   r0   s    r   
referenceszSymbol.references   s    r   c                X    t         |   |       t        j                  |       |_        y r   )r'   r   weakrefrefr   )r-   r   r.   s     r   r   zSymbol.insert   s    v T*r   c                    | j                   r(g | j                   j                         | j                  S | j                  gS r   )r   qualpathr   r0   s    r   r   zSymbol.qualpath   s6    ;;7T[[))+7TYY77		{r   c                @    |j                  | j                               S r   )joinr   )r-   seps     r   rP   zSymbol.qualname   s    xx((r   c                   | j                   r!| j                  j                         g|k(  r| gS | j                   s| j                  g|k(  r| gS | j                  |d   k(  rt        |   |dd  ||      S |rt        |   |||      S g S )Nr   r   rS   )r)   r   r=   r'   rN   )r-   rY   rL   rT   r.   s       r   rN   zSymbol._lookup_drilldown   s    ??		 12h>6Mdii[H%<6MYY(1+%7,Es -   7,XU,LLIr   c                z    | j                  |      xs) | j                  xr | j                  j                  |      S r   )rU   r   r]   r\   s     r   r]   zSymbol.resolve   s3    KK! <[[:T[[00:	
r   c                B     ||       r| gng }|t         |   |      z   S r   r'   ra   )r-   rc   	this_caser.   s      r   ra   zSymbol.filter   s&    'oTF2	57>)444r   c                6     ||       r| S t         |   |      S r   r   )r-   rc   r.   s     r   rj   zSymbol.filter_first   s    T?Kw~i((r   c                \    |}|| j                   vr| j                  j                  |       y y r   )r   r   r9   )r-   rP   r   	references       r   r   zSymbol.add_reference   s,    	DOO+##I. ,r   c                Z   t        | j                  j                               }|r|j                  | j	                                |r5| j
                  D ]&  }|j                  ||      }|j                  |       ( t        |t               sJ t        d |D              sJ t        |      S )N)include_entriesinclude_referencesc              3  <   K   | ]  }t        |t                y wr   rI   r	   rb   is     r   rd   z$Symbol.line_index.<locals>.<genexpr>       @A:a/@   )	setr   
line_indexupdatereference_line_indexr   rI   rn   sorted)r-   r   r   r   sindexs         r   r   zSymbol.line_index   s    TYY))+,MM$3356\\ %$3'9 %  e$% &#&&&@@@@@f~r   c                    t               }| j                  D ]!  }|j                  |j                                # t	        |t               sJ t        d |D              sJ |S )Nc              3  <   K   | ]  }t        |t                y wr   r   r   s     r   rd   z.Symbol.reference_line_index.<locals>.<genexpr>  r   r   )r   r   r   r   rI   rn   )r-   r   rs      r   r   zSymbol.reference_line_index  sW     	*AMM!,,.)	*&#&&&@@@@@r   c                     | j                    dS rq   )r   r0   s    r   rs   zSymbol.__repr__  s    ))Br   c           	         t        dt        | j                        j                  fdt        |   |      fdt        | j                  |      f      S )Nr   r1   ru   r   )dictrr   r   r    r'   rw   r
   r   )r-   rv   r.   s     r   rw   zSymbol.__json__  sP    T$))_--.(d(346$"2"2>?
 	
r   c                r    | j                   j                         }|j                  | j                         |S )Nr   )__dict__r   r   r   r-   states     r   __getstate__zSymbol.__getstate__  s+    ""$T[[)r   c                    | j                   j                  |       | j                  %t        j                  | j                        | _        y y r   )r   r   r   r   r   r   s     r   __setstate__zSymbol.__setstate__  s7    U#<<#";;t||4DL $r   )FFrx   r   )r    r!   r"   r(   rz   r   r   r   r   r   r   r   ry   rP   rN   r]   ra   rj   r   r   r   rs   rw   r   r   r{   r|   s   @r   r   r      s         ! !  
    +
 - )
5)
/" 

5r   r   c                  R     e Zd Zd fd	Zed        Zd Zdef fd	Zd fd	Z	 xZ
S )	BasedSymbolc                4    t         |   |       g | _        y )N)r   )r'   r(   _bases)r-   r   r   r   r.   s       r   r(   zBasedSymbol.__init__&  s    J/r   c                    | j                   S r   )r   r0   s    r   baseszBasedSymbol.bases*  s    {{r   c                ^    t        |t              sJ | j                  j                  |       y r   )rI   r   r   r9   )r-   r   s     r   add_basezBasedSymbol.add_base.  s$    $'''4 r   Tc                    t         |   |||      }|r|S | j                  D ]  }|j                  |||      }|s|c S  |S rW   )r'   rN   r   )r-   rY   rL   rT   r   r   r.   s         r   rN   zBasedSymbol._lookup_drilldown2  sZ    *85c*JMJJ 	D++HEs+KF	 r   c                    t         |   |      }t        | j                  D cg c]  }|j	                          c}|      |d<   |S c c}w )Nru   r   )r'   rw   r
   r   rP   )r-   rv   r   br.   s       r   rw   zBasedSymbol.__json__=  sE    !t!, 

!C1!**,!C$Ow "Ds   A
)Fr   )r    r!   r"   r(   rz   r   r   rT   rN   rw   r{   r|   s   @r   r   r   %  s7      ! 15# 	 r   r   )
__future__r   re   rg   r   collectionsr   r   
exceptionsr   infosr	   utilr
   r   ry   r   r   r%   r~   r   r   r#   r   r   <module>r      sk    "    #  &   $ (	~ 	w
 w
t2) 2z5Y z5z) r   