
    #h;#                        S SK Jr  S SKrS SK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Jr  S	rS
 r " S S\	5      r " S S5      r " S S\5      r " S S\5      r " S S\5      rg)    )annotationsN)defaultdictcopy   )ParseException)LineIndexInfo)asjson
join_lists.c                j   ^ U4S jmU (       d  0 $ [        U S   5      nU SS   H  nT" X!5      nM     U$ )Nc                   > [        U 5      n UR                   HC  nUR                  nX0;  d  U R                  (       a  U R	                  U5        M8  T" X   U5        ME     U $ N)r   symbolsname
duplicatesinsert)basetargetsymbolr   join_namespacess       O/Users/user/Downloads/htwk/venv/lib/python3.13/site-packages/tatsu/symtables.pyr   'join_symtables.<locals>.join_namespaces   sN    DznnF;;D4??F#
F3 %     r   r   r   )tablesresulttabler   s      @r   join_symtablesr      s>     	&)_F / Mr   c                      \ rS rSrSrg)SymbolTableError$    N)__name__
__module____qualname____firstlineno____static_attributes__r"   r   r   r    r    $   s    r   r    c                     ^  \ rS rSrSS\4U 4S jjr\S 5       r\S 5       r\S 5       r	S r
S rS	 rSS
 jrS rSS jrSS jrSS jrS rS rS rS rS rS rSS jrSrU =r$ )	Namespace(   Fc                n   > [         TU ]  5         Xl        X l        X0l        [        [        5      U l        g r   )super__init__
ignorecaser   	separatorr   list_entries)selfr.   r   r/   	__class__s       r   r-   Namespace.__init__)   s+     	$$"#D)r   c                    U R                   $ r   )r1   r2   s    r   entriesNamespace.entries2   s    }}r   c                H    [        U R                  R                  5       5      $ r   )r   r1   valuesr6   s    r   r   Namespace.symbols6   s    $--..011r   c                H    [        U R                  R                  5       5      $ r   )r0   r1   keysr6   s    r   namesNamespace.names:   s    DMM&&())r   c                    / nU R                   R                  5        H>  u  p#UR                  U5        U H"  nUR                  UR	                  5       5        M$     M@     U$ r   )r7   itemsappendextend	all_names)r2   r   r   r   r   s        r   rD   Namespace.all_names>   sR    !\\//1MDMM$!f..01 " 2 r   c                `    U R                   (       a  UR                  5       nXR                  ;   $ r   )r.   upperr7   r2   r   s     r   __contains__Namespace.__contains__F   s!    ??::<D||##r   c                    U R                   (       a  UR                  5       nU R                  (       a  U R                  R	                  U5      $ XR                  ;   a  U R                  U   S   $ [        U5      e)Nr   )r.   rG   r   r7   getKeyErrorrH   s     r   __getitem__Namespace.__getitem__K   sX    ??::<D??<<##D))\\!<<%a((4. r   c                8    U R                   R                  X5      $ r   )r7   rL   )r2   r   defaults      r   rL   Namespace.getU   s    ||..r   c                x   [        UR                  [        5      (       d   SUR                  < S35       eUR                  nU R                  (       a  UR	                  5       nX R
                  ;   a+  U R                  (       d  [        SUR                  < S35      eU R
                  U   R                  U5        g )N"" is not a valid symbol namezSymbol "z" already in namespace)	
isinstancer   strr.   rG   r1   r   r    rB   )r2   r   r   s      r   r   Namespace.insertX   s    KK
 
 	;v{{o9:	; 
 {{??::<D== "6;;/)?@  	d""6*r   c                    U R                   (       a  UR                  5       nU R                  UR                  U R                  5      US9$ )N)drillr.   rG   _lookup_drilldownsplitr/   )r2   qualnamerZ   s      r   
lookup_allNamespace.lookup_allf   s?    ??~~'H%%NN4>>*% & 
 	
r   c                    U R                   (       a  UR                  5       nU R                  UR                  U R                  5      USS9nU(       a  US   $ S $ )Nr   rZ   maxr   r[   )r2   r^   rZ   r   s       r   lookupNamespace.lookupm   sQ    ??~~'H''NN4>>*%Q ( 
 #vay,,r   c                    U(       d  / $ / nU R                    H?  nUR                  XUS9nUR                  U5        U(       d  M-  [        U5      U:  d  M>    U$    U$ Nrb   )r   r\   rC   len)r2   namelistrZ   rc   r   r   founds          r   r\   Namespace._lookup_drilldownu   s]    IllF,,X,LEMM% ss6{c) #
 r   c                $    U R                  U5      $ r   )rd   r2   r^   s     r   resolveNamespace.resolve   s    {{8$$r   c                x   ^ [         R                  " [        R                  U4S jU R                   5       / 5      $ )Nc              3  D   >#    U  H  oR                  T5      v   M     g 7fr   filter).0r   	conditions     r   	<genexpr>#Namespace.filter.<locals>.<genexpr>   s     AL&]]9%%Ls    )	functoolsreduceoperatoriaddr   )r2   ru   s    `r   rs   Namespace.filter   s,    MMADLLA
 	
r   c                b    U R                    H  nUR                  U5      nU(       d  M  Us  $    g r   )r   filter_first)r2   ru   r   r   s       r   r~   Namespace.filter_first   s/    llF((3Fv # r   c                &    U R                  S 5      $ )Nc                     g)NTr"   r"   r   r   <lambda>Namespace.all.<locals>.<lambda>   s    4r   rr   r6   s    r   allNamespace.all   s    {{<((r   c                    [        U 5      $ r   )r
   r6   s    r   r
   Namespace.asjson   s    d|r   c                2    [        U 5      R                   S3$ Nz[])typer#   r6   s    r   __repr__Namespace.__repr__   s    t*%%&b))r   c           
     |    U R                   R                  5        VVs0 s H  u  p#U[        X1S9_M     snn$ s  snnf )Nseen)r7   rA   r
   )r2   r   r   r   s       r   __json__Namespace.__json__   sB     "&!3!3!5
!5 &,,!5
 	
 
s   8)r1   r   r.   r/   r   )TTN)r#   r$   r%   r&   DEFAULT_SEPARATORr-   propertyr7   r   r>   rD   rI   rN   rL   r   r_   rd   r\   rn   rs   r~   r   r
   r   r   r'   __classcell__r3   s   @r   r)   r)   (   s    5<M*   2 2 * *$
!/+
-
%
)*
 
r   r)   c                      \ rS rSrS rSrg)SymbolTable   c                H    U R                  U5      nUR                  X5        g r   )rd   add_reference)r2   r^   	from_noder   s       r   r   SymbolTable.add_reference   s    X&X1r   r"   N)r#   r$   r%   r&   r   r'   r"   r   r   r   r      s    2r   r   c                     ^  \ rS rSrSU 4S jjr\S 5       r\S 5       r\S 5       r\S 5       r	\S 5       r
U 4S jrS	 r\4S
 jrSU 4S jjrS rU 4S jrU 4S jrS rSS jrS rS rSU 4S jjrS rS rSrU =r$ )Symbol   c                   > [         TU ]  X4S9  [        U[        5      (       d  [	        SU S35      eXl        X l        S U l        / U l        g )N)r.   r   rT   rU   )	r,   r-   rV   rW   	TypeErrorr   _node_parent_references)r2   r   noder.   r   r3   s        r   r-   Symbol.__init__   sN    JF$$$av%ABCC	
r   c                    U R                   $ r   )r   r6   s    r   r   Symbol.node   s    zzr   c                .    U R                   R                  $ r   )r   liner6   s    r   r   Symbol.line   s    yy~~r   c                .    U R                   R                  $ r   )r   endliner6   s    r   r   Symbol.endline   s    yy   r   c                >    U R                   b  U R                  5       $ g r   r   r6   s    r   parentSymbol.parent   s    <<#<<>!r   c                    U R                   $ r   )r   r6   s    r   
referencesSymbol.references   s    r   c                Z   > [         TU ]  U5        [        R                  " U 5      Ul        g r   )r,   r   weakrefrefr   )r2   r   r3   s     r   r   Symbol.insert   s    v T*r   c                    U R                   (       a(  / U R                   R                  5       QU R                  P$ U R                  /$ r   )r   qualpathr   r6   s    r   r   Symbol.qualpath   s6    ;;7T[[))+7TYY77		{r   c                @    UR                  U R                  5       5      $ r   )joinr   )r2   seps     r   r^   Symbol.qualname   s    xx((r   c                *  > U R                   (       a"  U R                  R                  5       /U:X  a  U /$ U R                   (       d  U R                  /U:X  a  U /$ U R                  US   :X  a  [        TU ]  USS  X#S9$ U(       a  [        TU ]  XUS9$ / $ )Nr   r   rb   )r.   r   rG   r,   r\   )r2   ri   rZ   rc   r3   s       r   r\   Symbol._lookup_drilldown   s    ??		 12h>6Mdii[H%<6MYY(1+%7,E -   7,X,LLIr   c                    U R                  U5      =(       d.    U R                  =(       a    U R                  R                  U5      $ r   )rd   r   rn   rm   s     r   rn   Symbol.resolve   s3    KK! <[[:T[[00:	
r   c                L   > U" U 5      (       a  U /O/ nU[         TU ]  U5      -   $ r   r,   rs   )r2   ru   	this_caser3   s      r   rs   Symbol.filter   s(    'ooTF2	57>)444r   c                @   > U" U 5      (       a  U $ [         TU ]  U5      $ r   r   )r2   ru   r3   s     r   r~   Symbol.filter_first   s     T??Kw~i((r   c                ^    UnX0R                   ;  a  U R                  R                  U5        g g r   )r   r   rB   )r2   r^   r   	references       r   r   Symbol.add_reference   s*    	OO+##I. ,r   c                   [        U R                  R                  5       5      nU(       a  UR                  U R	                  5       5        U(       a4  U R
                   H$  nUR                  UUS9nUR                  U5        M&     [        U[         5      (       d   e[        S U 5       5      (       d   e[        U5      $ )N)include_entriesinclude_referencesc              3  B   #    U  H  n[        U[        5      v   M     g 7fr   rV   r	   rt   is     r   rv   $Symbol.line_index.<locals>.<genexpr>       @A:a//   )	setr   
line_indexupdatereference_line_indexr   rV   r   sorted)r2   r   r   r   sindexs         r   r   Symbol.line_index   s    TYY))+,MM$3356\\$3'9 %  e$ " &#&&&&@@@@@@f~r   c                    [        5       nU R                   H"  nUR                  UR                  5       5        M$     [	        U[         5      (       d   e[        S U 5       5      (       d   eU$ )Nc              3  B   #    U  H  n[        U[        5      v   M     g 7fr   r   r   s     r   rv   .Symbol.reference_line_index.<locals>.<genexpr>  r   r   )r   r   r   r   rV   r   )r2   r   rs      r   r   Symbol.reference_line_index  sX    AMM!,,.) !&#&&&&@@@@@@r   c                     U R                    S3$ r   )r   r6   s    r   r   Symbol.__repr__  s    ))Br   c           
        > [        S[        U R                  5      R                  4S[        TU ]  US94S[        U R                  US945      $ )Nr   r7   r   r   )dictr   r   r#   r,   r   r
   r   )r2   r   r3   s     r   r   Symbol.__json__  sP    T$))_--.(d(346$"2"2>?
 	
r   c                l    U R                   R                  5       nUR                  U R                  S9  U$ )Nr   )__dict__r   r   r   r2   states     r   __getstate__Symbol.__getstate__  s+    ""$T[[)r   c                    U R                   R                  U5        U R                  b&  [        R                  " U R                  5      U l        g g r   )r   r   r   r   r   r   s     r   __setstate__Symbol.__setstate__  s7    U#<<#";;t||4DL $r   )r   r   r   r   )FFr   r   )r#   r$   r%   r&   r-   r   r   r   r   r   r   r   r   r   r^   r\   rn   rs   r~   r   r   r   r   r   r   r   r'   r   r   s   @r   r   r      s         ! !  
    +
 - )
5)
/" 

5 5r   r   c                  f   ^  \ rS rSrS	U 4S jjr\S 5       rS rS\4U 4S jjr	S
U 4S jjr
SrU =r$ )BasedSymboli%  c                .   > [         TU ]  US9  / U l        g )N)r   )r,   r-   _bases)r2   r   r   r   r3   s       r   r-   BasedSymbol.__init__&  s    J/r   c                    U R                   $ r   r   r6   s    r   basesBasedSymbol.bases*  s    {{r   c                h    [        U[        5      (       d   eU R                  R                  U5        g r   )rV   r   r   rB   )r2   r   s     r   add_baseBasedSymbol.add_base.  s'    $''''4 r   Tc                   > [         TU ]  XUS9nU(       a  U$ U R                   H  nUR                  XUS9nU(       d  M  Us  $    U$ rg   )r,   r\   r   )r2   ri   rZ   rc   r   r   r3   s         r   r\   BasedSymbol._lookup_drilldown2  sS    *8c*JMJJD++Hs+KFv  r   c                   > [         TU ]  US9n[        U R                   Vs/ s H  o3R	                  5       PM     snUS9US'   U$ s  snf )Nr   r   )r,   r   r
   r   r^   )r2   r   r   br3   s       r   r   BasedSymbol.__json__=  sG    !t!, 

!C
1**,
!C$Ow "Ds   Ar   )Fr   )r#   r$   r%   r&   r-   r   r   r   rc   r\   r   r'   r   r   s   @r   r   r   %  s7      ! 15# 	 r   r   )
__future__r   rx   rz   r   collectionsr   r   
exceptionsr   infosr	   utilr
   r   r   r   r    r)   r   r   r   r"   r   r   <module>r
     sk    "    #  &   $ (	~ 	w
 w
t2) 2z5Y z5z) r   