
    }fm                       d dl m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 dd	lmZ dd
lmZ ddlmZ ddlmZmZ ddlmZmZ ddlmZmZ ddlmZ ddlmZmZm Z m!Z!m"Z" dZ#dZ$ G d de%      Z&d Z'd Z(d Z) G d de      Z* G d de      Z+ G d de+      Z, G d de+      Z- G d  d!e+      Z. G d" d#e+      Z/ G d$ d%e/      Z0 G d& d'e+      Z1 G d( d)e+      Z2e2Z3 G d* d+e2      Z4 G d, d-e+      Z5 G d. d/e+      Z6 G d0 d1e6      Z7 G d2 d3e+      Z8 G d4 d5e2      Z9 G d6 d7e2      Z: G d8 d9e2      Z; G d: d;e+      Z< G d< d=e+      Z= G d> d?e2      Z> G d@ dAe2      Z? G dB dCe?      Z@ G dD dEe2      ZA G dF dGeA      ZB G dH dIeB      ZC G dJ dKeB      ZD G dL dMeA      ZE G dN dOeE      ZF G dP dQe+      ZG G dR dSe2      ZH G dT dUe+      ZI G dV dWe2      ZJ G dX dYeJ      ZK G dZ d[eJ      ZL G d\ d]eK      ZM G d^ d_e+      ZN G d` dae+      ZO G db dce2      ZP G dd dee2      ZQ G df dgeQ      ZR G dh die+      ZSy)j    )annotationsN)defaultdict)Mapping)copy)	takewhile)Path   )AST)
OrderedSet)ParseContext)	FailedRefGrammarError)ParserConfigRuleInfo)Nullablefind_left_recursion)Node)chunkscompress_seqindentretrimH   z^\s*#include.*$c                      e Zd Zd Zy)_refc                    d|  dS )N<> selfs    M/var/www/feuerwehr-webapp/venv/lib/python3.12/site-packages/tatsu/grammars.py__repr__z_ref.__repr__   s    4&{    N)__name__
__module____qualname__r#   r   r$   r"   r   r      s    r$   r   c                    t        |       fS N)r   names    r"   refr,      s    J=r$   c                    st        fd| D              S | st        fdD              S t        fd| D              S )Nc              3  (   K   | ]	  }|d    y wr)   r   ).0aks     r"   	<genexpr>zkdot.<locals>.<genexpr>$        %aAbqE%   c              3  (   K   | ]	  }|d    y wr)   r   )r/   br1   s     r"   r2   zkdot.<locals>.<genexpr>&   r3   r4   c              3  <   K   | ]  }D ]  }||z   d     y wr)   r   )r/   r0   r6   r1   ys      r"   r2   zkdot.<locals>.<genexpr>(   s'     6AA6qQUBQK6K6s   oset)xr8   r1   s    ``r"   kdotr<   "   s<    %1%%%%1%%%6666r$   c                2    dj                  d | D              S )N c              3  f   K   | ])  }|j                         rd |j                         z   n| + yw)_N)isupperlowerr/   cs     r"   r2   z!pythonize_name.<locals>.<genexpr>,   s'     GQaiik3?q8Gs   /1joinr*   s    r"   pythonize_namerG   +   s    77G$GGGr$   c                  >     e Zd Z	 	 d	 d fdZed        Zd Z xZS )ModelContextc                   t        j                  |fi |}|j                  |      }t        |   |       |D ci c]  }|j
                  | c}| _        y c c}w )N)startconfig)r   newreplacesuper__init__r+   rules)r!   rR   rK   rM   settingsrule	__class__s         r"   rQ   zModelContext.__init__0   sW     !!&5H5e,'278$diio8
8s   Ac                .    | j                   j                  S r)   )
_tokenizerposr    s    r"   rX   zModelContext.pos?   s    """r$   c                \    t        j                  | j                  |   j                  |       S r)   )	functoolspartialrR   parse)r!   r+   s     r"   
_find_rulezModelContext._find_ruleC   s$      D!1!7!7>>r$   NN)rM   ParserConfig | None)r%   r&   r'   rQ   propertyrX   r]   __classcell__rU   s   @r"   rI   rI   /   s3    
 &*9
 $9 # #?r$   rI   c                       e Zd Zed        Zd fd	Zd Zd ZddZddZ	d Z
ddZdd	Zd
 Zd Zd Zd ZddZd Zd Zd Zd Zd Zd ZddZd Z xZS )Modelc                     t               j                         D  cg c]$  } t        | t              rt	        | t
              r| & c} S c c} w r)   )globalsvalues
isinstancetype
issubclassrd   )rD   s    r"   classeszModel.classesH   sB     Y%%'
!T"z!U'; 
 	
 
s   )Ac                N   t         |   ||       d | _        d | _        t	               | _        d | _        | j                         | _        t        | j                  t              r@| j                  rt        j                         | _        y t        j                         | _        y y )N)astctx)rP   rQ   
_lookahead	_firstsetr:   _follow_setvalue	_nullable_nullabilityrh   intr   yesno)r!   rm   rn   rU   s      r"   rQ   zModel.__init__P   s}    Sc*6
 NN,d''-  $,LLN!$,KKM!	 .r$   c                    d |_         y r)   )	last_noder!   rn   s     r"   r\   zModel.parse]   s	    r$   c                    g S r)   r   r    s    r"   defineszModel.defines`       	r$   c                \   |y t        |d      sy t        t        | j                                     }|j	                         D cg c]
  \  }}|r	| }}}|j	                         D cg c]
  \  }}|s	| }}}|j                  ||       |j                  ||       y c c}}w c c}}w )N_define)hasattrdictr   r|   itemsr   )r!   rn   rm   r|   r1   listkeys	list_keyss           r"   _add_defined_attributeszModel._add_defined_attributesc   s    ;sI&|DLLN34!(=ga==&-mmo>71dQ>	>D)$D)$ >>s   
B"B"+
B(6B(c                    | j                   0t        | j                  |      | j                  |      |      | _         | j                   S r)   )ro   r<   firstset	followsetr!   r1   s     r"   	lookaheadzModel.lookaheadp   s8    ??""4==#3T^^A5FJDOr$   c                `    dj                  t        d | j                         D                    S )N c              3  >   K   | ]  }|st        |d            yw)r   Nrepr)r/   fs     r"   r2   z&Model.lookahead_str.<locals>.<genexpr>v   s     IaqtAaDzIs   )rF   sortedr   r    s    r"   lookahead_strzModel.lookahead_stru   s#    xxI4>>3CIIJJr$   c                z    | j                   $| j                  |t        t                    | _         | j                   S r)   )rp   _firstr   r:   r   s     r"   r   zModel.firstsetx   s-    >>!![[K,=>DN~~r$   c                    | j                   S r)   )rq   r   s     r"   r   zModel.followset}   s    r$   c                    t               S r)   r9   r!   rR   s     r"   missing_ruleszModel.missing_rules   	    vr$   c                    t               S r)   r9   r    s    r"   _used_rule_nameszModel._used_rule_names   r   r$   c                    t               S r)   r9   r!   r1   r   s      r"   r   zModel._first   r   r$   c                    |S r)   r   r!   r1   flr0   s       r"   _followzModel._follow   s    r$   c                .    | j                   j                  S r)   )rt   nullablerz   s     r"   is_nullablezModel.is_nullable   s      )))r$   c                     yNFr   r    s    r"   rs   zModel._nullable       r$   c                    g S r)   r   rz   s     r"   at_same_poszModel.at_same_pos   r}   r$   c                V    | j                   \  }}|sydj                  d |D              S )Nr>   
c              3     K   | ]R  }d j                  dj                  |      j                  dd      j                  dd      j                                T yw)z	(* {} *)
r   z(*r>   z*)N)formatrF   rO   striprC   s     r"   r2   z%Model.comments_str.<locals>.<genexpr>   sN      
 		! 4 4T2 > F FtR P V V XY
s   AA)commentsrF   )r!   r   _eols      r"   comments_strzModel.comments_str   s3    $yy 

 
 	
r$   c                     yNr	   r   r    s    r"   	nodecountzModel.nodecount   s    r$   c                "    | j                         S r)   _to_strr    s    r"   prettyzModel.pretty       ||~r$   c                &    | j                  d      S )NTleanr   r    s    r"   pretty_leanzModel.pretty_lean   s    |||&&r$   c                H    dt        |       j                  t        |       fz  S )Nz%s:%d)ri   r%   idr!   r   s     r"   r   zModel._to_str   s     $t*--r$x888r$   c                "    | j                         S r)   r   r    s    r"   __str__zModel.__str__   r   r$   r^   r)   r	   F)r%   r&   r'   staticmethodrk   rQ   r\   r|   r   r   r   r   r   r   r   r   r   r   rs   r   r   r   r   r   r   r   ra   rb   s   @r"   rd   rd   G   s    
 
2%
K
 *
'9r$   rd   c                       e Zd Zd ZddZd Zy)Voidc                "    |j                         S r)   )_voidrz   s     r"   r\   z
Void.parse       yy{r$   c                     y)Nz()r   r   s     r"   r   zVoid._to_str       r$   c                     yNTr   r    s    r"   rs   zVoid._nullable   r   r$   Nr   )r%   r&   r'   r\   r   rs   r   r$   r"   r   r      s    r$   r   c                      e Zd Zd ZddZy)Anyc                "    |j                         S r)   )_anyrz   s     r"   r\   z	Any.parse   s    xxzr$   c                     y)Nz/./r   r   s     r"   r   zAny._to_str   r   r$   Nr   r%   r&   r'   r\   r   r   r$   r"   r   r      s    r$   r   c                      e Zd Zd ZddZy)Failc                "    |j                         S r)   )_failrz   s     r"   r\   z
Fail.parse   r   r$   c                     y)Nz!()r   r   s     r"   r   zFail._to_str   r   r$   Nr   r   r   r$   r"   r   r      s    r$   r   c                  (     e Zd Zd fd	ZddZ xZS )Commentc                H    d | _         t        | 	  t        |             y )Ncommentrm   )r   rP   rQ   r
   r!   rm   kwargsrU   s      r"   rQ   zComment.__init__   s    S-.r$   c                "    d| j                    dS )Nz(* z *)r   r   s     r"   r   zComment._to_str   s    T\\N#&&r$   r)   r   r%   r&   r'   rQ   r   ra   rb   s   @r"   r   r      s    /'r$   r   c                      e Zd ZddZy)
EOLCommentc                "    d| j                    dS )Nz  # r   r   r   s     r"   r   zEOLComment._to_str   s    dll^2&&r$   Nr   )r%   r&   r'   r   r   r$   r"   r   r      s    'r$   r   c                      e Zd Zd ZddZy)EOFc                $    |j                          y r)   )
_check_eofrz   s     r"   r\   z	EOF.parse   s    r$   c                     y)N$r   r   s     r"   r   zEOF._to_str       r$   Nr   r   r   r$   r"   r   r      s    r$   r   c                  ^     e Zd Zd fd	Zd Zd Zd Zd Zd Zd Z	d Z
dd	Zd
 Zd Z xZS )	Decoratorc                    |
|x| _         }nt        |t              st        |      }t        |   |       t        | j                   t
              sJ y )Nexpr   )r   rh   r
   rP   rQ   rd   )r!   rm   r   r   rU   s       r"   rQ   zDecorator.__init__   sM    ?  DHsC% #,CS!$((E***r$   c                8    | j                   j                  |      S r)   r   r\   rz   s     r"   r\   zDecorator.parse   s    xx~~c""r$   c                6    | j                   j                         S r)   )r   r|   r    s    r"   r|   zDecorator.defines       xx!!r$   c                8    | j                   j                  |      S r)   )r   r   r   s     r"   r   zDecorator.missing_rules   s    xx%%e,,r$   c                6    | j                   j                         S r)   )r   r   r    s    r"   r   zDecorator._used_rule_names   s    xx((**r$   c                :    | j                   j                  ||      S r)   )r   r   r   s      r"   r   zDecorator._first   s    xxq!$$r$   c                <    | j                   j                  |||      S r)   )r   r   r   s       r"   r   zDecorator._follow   s    xx2q))r$   c                <    d| j                   j                         z   S r   )r   r   r    s    r"   r   zDecorator.nodecount   s    488%%'''r$   c                :    | j                   j                  |      S )Nr   r   r   r   s     r"   r   zDecorator._to_str  s    xxT**r$   c                @    t        j                  | j                        S r)   r   ofr   r    s    r"   rs   zDecorator._nullable      {{488$$r$   c                    | j                   gS r)   r   rz   s     r"   r   zDecorator.at_same_pos  s    zr$   r^   r   r%   r&   r'   rQ   r\   r|   r   r   r   r   r   r   rs   r   ra   rb   s   @r"   r   r      s:    +#"-+%*(+%r$   r   c                      e Zd Zd ZddZy)Groupc                    |j                         5  | j                  j                  |       |j                  cd d d        S # 1 sw Y   y xY wr)   )_groupr   r\   ry   rz   s     r"   r\   zGroup.parse  s7    ZZ\ 	!HHNN3==	! 	! 	!s   'AAc                    | j                   j                  |      }t        |j                               dkD  rdt	        |       dS dt        |       dS )Nr   r	   z(
z
)())r   r   len
splitlinesr   r   )r!   r   r   s      r"   r   zGroup._to_str  sS    hhD)s~~ 1$S))tCyk##r$   Nr   r   r   r$   r"   r  r    s    !
$r$   r  c                  2     e Zd Z fdZd Zd ZddZ xZS )Tokenc                H    t         |           | j                  }|| _        y r)   )rP   __post_init__rm   tokenr!   rm   rU   s     r"   r  zToken.__post_init__  s    hh
r$   c                8    |j                  | j                        S r)   )_tokenr  rz   s     r"   r\   zToken.parse#  s    zz$**%%r$   c                    | j                   fhS r)   )r  r   s      r"   r   zToken._first&      r$   c                ,    t        | j                        S r)   )r   r  r   s     r"   r   zToken._to_str)  s    DJJr$   r   )r%   r&   r'   r  r\   r   r   ra   rb   s   @r"   r  r    s    
& r$   r  c                  8     e Zd Z fdZd Zd ZddZd Z xZS )Constantc                D    t         |           | j                  | _        y r)   )rP   r  rm   literalr!   rU   s    r"   r  zConstant.__post_init__.  s    xxr$   c                8    |j                  | j                        S r)   )	_constantr  rz   s     r"   r\   zConstant.parse2  s    }}T\\**r$   c                    dhS Nr   r   r   s      r"   r   zConstant._first5  	    tr$   c                "    d| j                   dS )N`)r  r   s     r"   r   zConstant._to_str8  s    4<<"!$$r$   c                     yr   r   r    s    r"   rs   zConstant._nullable;  r   r$   r   )	r%   r&   r'   r  r\   r   r   rs   ra   rb   s   @r"   r  r  -  s     +%r$   r  c                  4     e Zd Z fdZ fdZd fd	Z xZS )Alertc                    t         |           | j                  j                  j                  | _        t        | j                  j                        | _        y r)   )rP   r  rm   messager  r  levelr  s    r"   r  zAlert.__post_init__@  s9    xx''//(
r$   c                "    t         |   |      S r)   )rP   r\   r!   rn   rU   s     r"   r\   zAlert.parseE  s    w}S!!r$   c                B    d| j                   z   t        | 	          S )N^)r*  rP   r   r!   r   rU   s     r"   r   zAlert._to_strH  s$    

"#EGO$5#677r$   r   )r%   r&   r'   r  r\   r   ra   rb   s   @r"   r'  r'  ?  s    )
"8 8r$   r'  c                  N     e Zd Z fdZed        Zd Zd ZddZd Z	d Z
 xZS )	Patternc                    t         |           | j                  }t        |t              s|g}|| _        t        j                  | j                        | _	        y r)   )
rP   r  rm   rh   r   patternsr   compilepatternregexr  s     r"   r  zPattern.__post_init__M  sC    hh#t$%CZZ-
r$   c                8    dj                  | j                        S Nr>   )rF   r3  r    s    r"   r5  zPattern.patternU  s    wwt}}%%r$   c                8    |j                  | j                        S r)   )_patternr5  rz   s     r"   r\   zPattern.parseY  s    ||DLL))r$   c                r    | }t        | j                  j                  d            rt        d|fg      S |fhS )Nr>   r   )boolr6  matchr:   )r!   r1   r   r;   s       r"   r   zPattern._first\  s8    

  $%aT
##D6Mr$   c                    g }d | j                   D        D ]6  }d|v r|j                  dd      }d| d}nd| d}|j                  |       8 dj                  |      S )Nc              3  2   K   | ]  }t        |        y wr)   )str)r/   ps     r"   r2   z"Pattern._to_str.<locals>.<genexpr>e  s     2qCF2   /"z\"z?"z
+ )r3  rO   appendrF   )r!   r   partspatnewpatr6  s         r"   r   zPattern._to_strc  sm    2DMM2 	 CczS%0VHAC5
LL	  {{5!!r$   c                J    t        | j                  j                  d            S r8  )r<  r6  r=  r    s    r"   rs   zPattern._nullablen  s    DJJ$$R())r$   c                :    | j                   j                  dd      S )Nz\\\)r5  rO   r    s    r"   r#   zPattern.__repr__q  s    ||##FD11r$   r   )r%   r&   r'   r  r`   r5  r\   r   r   rs   r#   ra   rb   s   @r"   r1  r1  L  s5    . & &*	"*2r$   r1  c                  ,     e Zd Z fdZddZd Z xZS )	Lookaheadc                n    |j                         5  t        | 	  |      cd d d        S # 1 sw Y   y xY wr)   )_ifrP   r\   r,  s     r"   r\   zLookahead.parsev  s-    WWY 	&7=%	& 	& 	&   +4c                @    d| j                   j                  |      z   S )N&r   r   r   s     r"   r   zLookahead._to_strz  s    TXX%%4%000r$   c                     yr   r   r    s    r"   rs   zLookahead._nullable}  r   r$   r   r%   r&   r'   r\   r   rs   ra   rb   s   @r"   rM  rM  u  s    &1r$   rM  c                  ,     e Zd Z fdZddZd Z xZS )NegativeLookaheadc                n    |j                         5  t        | 	  |      cd d d        S # 1 sw Y   y xY wr)   )_ifnotrP   r\   r,  s     r"   r\   zNegativeLookahead.parse  s-    ZZ\ 	&7=%	& 	& 	&rP  c                R    dt        | j                  j                  |            z   S )N!r   )r@  r   r   r   s     r"   r   zNegativeLookahead._to_str  s$    S))t)4555r$   c                     yr   r   r    s    r"   rs   zNegativeLookahead._nullable  r   r$   r   rT  rb   s   @r"   rV  rV    s    &6r$   rV  c                  0     e Zd Z fdZ fdZddZ xZS )SkipToc                F    t         |   j                  fd      S )Nc                             S r)   r   )rn   super_parses   r"   <lambda>zSkipTo.parse.<locals>.<lambda>  s    K$4 r$   )rP   r\   _skip_to)r!   rn   r`  rU   s    `@r"   r\   zSkipTo.parse  s    gm||455r$   c                >    t        dh      t        | 	  ||      z  S )Nr)   )r:   rP   r   )r!   r1   r   rU   s      r"   r   zSkipTo._first  s    WI1!555r$   c                @    d| j                   j                  |      z   S )Nz->r   r   r   s     r"   r   zSkipTo._to_str  s    dhh&&D&111r$   r   )r%   r&   r'   r\   r   r   ra   rb   s   @r"   r]  r]    s    662r$   r]  c                  \     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
dd	Zd
 Zd Z xZS )Sequencec                P    |j                   sJ d| _         t        | 	  |       y )Nr   r   )sequencerP   rQ   r   s      r"   rQ   zSequence.__init__  s&    |||S!r$   c                    | j                   D cg c]  }|j                  |       c}|_        |j                  S c c}w r)   )rh  r\   ry   )r!   rn   ss      r"   r\   zSequence.parse  s/    /3}}=!=}} >s   ;c                p    | j                   D cg c]  }|j                         D ]  }|  c}}S c c}}w r)   )rh  r|   )r!   rj  ds      r"   r|   zSequence.defines  s,    ==>a!))+>Q>>>>   2c                     t               j                  | j                  D cg c]  }|j                  |       c} S c c}w r)   )r:   unionrh  r   )r!   rR   rj  s      r"   r   zSequence.missing_rules  s0    tv||dmmLaooe4LMML   ?c                     t               j                  | j                  D cg c]  }|j                          c} S c c}w r)   )r:   ro  rh  r   )r!   rj  s     r"   r   zSequence._used_rule_names  s0    tv||DMMJqa002JKKJ   >c                z    dh}| j                   D ]!  }|j                  ||      }t        |||      }# || _        |S r!  )rh  r   r<   rp   )r!   r1   r   resultrj  r;   s         r"   r   zSequence._first  sI     	(AAA &!Q'F	(  r$   c                    |}t        | j                        D ]Y  }t        |t              r||j                  xx   |z  cc<   |j                  |||       t        |j                  |      ||      }[ |S )N)r1   )reversedrh  rh   RuleRefr+   r   r<   r   )r!   r1   r   r0   fsr;   s         r"   r   zSequence._follow  sj    $--( 	.A!W%166
b 
IIaR ajj1jor1-B		.
 r$   c                @    dt        d | j                  D              z   S )Nr	   c              3  <   K   | ]  }|j                           y wr)   r   )r/   rj  s     r"   r2   z%Sequence.nodecount.<locals>.<genexpr>  s     <q{{}<   )sumrh  r    s    r"   r   zSequence.nodecount  s    3<dmm<<<<r$   c                @   | j                         }| j                  D cg c]  }t        |j                  |             }}dj	                  |      }t        |      t        k  r!t        |j                               dk  r||z   S |dj	                  |      z   S c c}w )Nr   r   r	   r   )r   rh  r@  r   rF   r  	PEP8_LLENr  )r!   r   r   rj  seqsingles         r"   r   zSequence._to_str  s    $$&26--@Qs199$9'(@@#v;)#F,=,=,?(@A(Ef$$diin,, As   "Bc                @    t        j                  | j                        S r)   )r   allrh  r    s    r"   rs   zSequence._nullable  s    ||DMM**r$   c                    t        t        fd| j                              }t        |      t        | j                        k  r'|j	                  | j                  t        |                |S )Nc                &    | j                        S r)   )r   )rD   rn   s    r"   ra  z&Sequence.at_same_pos.<locals>.<lambda>  s    c(: r$   )r   r   rh  r  rE  )r!   rn   heads    ` r"   r   zSequence.at_same_pos  sL    I:DMMJKt9s4==))KKc$i01r$   r   r  rb   s   @r"   rf  rf    s<    "
?NL	=-+r$   rf  c                  ^     e Zd Zd fd	Zd Zd Zd Zd Zd Zd Z	d Z
dd	Zd
 Zd Z xZS )Choicec                    g | _         t        | 	  t        |             t	        | j                   t
              sJ t        | j                                y )Noptionsr   )r  rP   rQ   r
   rh   r   r   r   s      r"   rQ   zChoice.__init__  sA    S-.$,,-AtDLL/AA-r$   c                   |j                         5  | j                  D ]H  }|j                         5  |j                  |      |_        |j                  cd d d        c cd d d        S  | j                         }|r|j                  d| d       |j                  d       	 d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nzexpecting one of: :zno available options)_choicer  _optionr\   ry   r   _error)r!   rn   or   s       r"   r\   zChoice.parse  s    [[] 
	\\ )[[] )$%GGCLCM==) )
	 
	)
 **,I

/	{!<=JJ-.
	 
	) )
	 
	s(    B7"B+B7(:B7+B40B77C c                p    | j                   D cg c]  }|j                         D ]  }|  c}}S c c}}w r)   )r  r|   )r!   r  rl  s      r"   r|   zChoice.defines  s,    <<=a=A====rm  c                     t               j                  | j                  D cg c]  }|j                  |       c} S c c}w r)   )r:   ro  r  r   )r!   rR   r  s      r"   r   zChoice.missing_rules  s0    tv||dllKaooe4KLLKrp  c                     t               j                  | j                  D cg c]  }|j                          c} S c c}w r)   )r:   ro  r  r   )r!   r  s     r"   r   zChoice._used_rule_names  s0    tv||DLLIqa002IJJIrr  c                t    t               }| j                  D ]  }||j                  ||      z  } || _        |S r)   )r:   r  r   rp   )r!   r1   r   rt  r  s        r"   r   zChoice._first  s<     	%Aahhq!n$F	%r$   c                N    | j                   D ]  }|j                  |||        |S r)   )r  r   )r!   r1   r   r0   r  s        r"   r   zChoice._follow  s*     	 AIIaQ	 r$   c                @    dt        d | j                  D              z   S )Nr	   c              3  <   K   | ]  }|j                           y wr)   r{  r/   r  s     r"   r2   z#Choice.nodecount.<locals>.<genexpr>   s     ;q{{};r|  )r}  r  r    s    r"   r   zChoice.nodecount  s    3;dll;;;;r$   c                l   | j                   D cg c]  }t        |j                  |             }}t        d |D              }dj	                  d |D              }|rdj	                  d |D              S t        |      r-t        |      t        kD  rddj	                  d	 |D              z   S |S c c}w )
Nr   c              3  T   K   | ]   }t        |j                               d kD   " yw)r	   N)r  r  r  s     r"   r2   z!Choice._to_str.<locals>.<genexpr>  s      =C'!+=s   &(z | c              3      K   | ]  }|  y wr)   r   r  s     r"   r2   z!Choice._to_str.<locals>.<genexpr>  s     /!A/   z
|
c              3  2   K   | ]  }t        |        y wr)   )r   r  s     r"   r2   z!Choice._to_str.<locals>.<genexpr>	  s     ;aq	;rB  z| z
| c              3      K   | ]  }|  y wr)   r   r  s     r"   r2   z!Choice._to_str.<locals>.<genexpr>  s     %9Aa%9r  )r  r@  r   anyrF   r  r  )r!   r   r  r  multir  s         r"   r   zChoice._to_str  s    6:llC3qyydy+,CC=W==/w//<<;7;;;\c&kI5&++%9%9999M Ds   "B1c                @    t        j                  | j                        S r)   )r   r  r  r    s    r"   rs   zChoice._nullable  s    ||DLL))r$   c                    | j                   S r)   r  rz   s     r"   r   zChoice.at_same_pos  s    ||r$   r)   r   r  rb   s   @r"   r  r    s=    B
>MK
<*r$   r  c                       e Zd Z fdZ xZS )Optionc                J    t         |   |      }| j                  ||       |S r)   )rP   r\   r   )r!   rn   rt  rU   s      r"   r\   zOption.parse  s&    s#$$S&1r$   )r%   r&   r'   r\   ra   rb   s   @r"   r  r    s     r$   r  c                  &    e Zd Zd Zd ZddZd Zy)Closurec                0     j                   fd      S )Nc                 :    j                   j                         S r)   r   rn   r!   s   r"   ra  zClosure.parse.<locals>.<lambda>  s    DHHNN3$7 r$   )_closurerz   s   ``r"   r\   zClosure.parse  s    ||788r$   c                    | j                   j                  ||      }dh}t        |      D ]  }t        |||      } t	        dh      |z  S r!  )r   r   ranger<   r:   r!   r1   r   efirstrt  _is         r"   r   zClosure._first!  sO    A&( 	-B&&!,F	-RDzF""r$   c                    t        | j                  j                  |            }t        |j	                               dk  rd| dS dt        |       dS Nr   r	   {}z{
z
})r@  r   r   r  r  r   )r!   r   sexps      r"   r   zClosure._to_str(  sS    488###./t !Q&vR= &,t,,r$   c                     yr   r   r    s    r"   rs   zClosure._nullable/  r   r$   Nr   r%   r&   r'   r\   r   r   rs   r   r$   r"   r  r    s    9#-r$   r  c                  2     e Zd Zd Zd Zd fd	Zd Z xZS )PositiveClosurec                0     j                   fd      S )Nc                 :    j                   j                         S r)   r   r  s   r"   ra  z'PositiveClosure.parse.<locals>.<lambda>5  s    TXX^^C-@ r$   )_positive_closurerz   s   ``r"   r\   zPositiveClosure.parse4  s    $$%@AAr$   c                ~    | j                   j                  ||      }dh}t        |      D ]  }t        |||      } |S r!  )r   r   r  r<   r  s         r"   r   zPositiveClosure._first7  sC    A&( 	-B&&!,F	-r$   c                *    t         |   |      dz   S Nr   +rP   r   r/  s     r"   r   zPositiveClosure._to_str>      wD)C//r$   c                @    t        j                  | j                        S r)   r   r    s    r"   rs   zPositiveClosure._nullableA  r  r$   r   )r%   r&   r'   r\   r   r   rs   ra   rb   s   @r"   r  r  3  s    B0%r$   r  c                  >     e Zd ZdZd fd	Zd Zd ZddZd Z xZ	S )	Join%c                Z    t         |   |j                         |j                  | _        y r)   )rP   rQ   r   sepr   s      r"   rQ   zJoin.__init__H  s    !77r$   c                D      fd} fd} j                  ||      S )Nc                 :    j                   j                         S r)   )r  r\   r  s   r"   r  zJoin.parse.<locals>.sepM      88>>#&&r$   c                 :    j                   j                         S r)   r   r  s   r"   r   zJoin.parse.<locals>.expP  r  r$   )	_do_parse)r!   rn   r  r   s   ``  r"   r\   z
Join.parseL  s"    	'	' ~~c3,,r$   c                &    |j                  ||      S r)   )_joinr!   rn   r   r  s       r"   r  zJoin._do_parseU  s    yyc""r$   c                   | j                   j                  |      }t        | j                  j                  |            }t	        |j                               dk  r| | j                   d| dS | | j                   d| dS r  )r  r   r@  r   r  r  JOINOP)r!   r   ssepr  s       r"   r   zJoin._to_strX  s    xxT*488###./t !Q&VDKK=4&33VDKK=TF$77r$   c                     yr   r   r    s    r"   rs   zJoin._nullable`  r   r$   r)   r   )
r%   r&   r'   r  rQ   r\   r  r   rs   ra   rb   s   @r"   r  r  E  s!    F-#8r$   r  c                  ,     e Zd Zd Zd fd	Zd Z xZS )PositiveJoinc                &    |j                  ||      S r)   )_positive_joinr  s       r"   r  zPositiveJoin._do_parsee  s    !!#s++r$   c                *    t         |   |      dz   S r  r  r/  s     r"   r   zPositiveJoin._to_strh  r  r$   c                @    t        j                  | j                        S r)   r   r    s    r"   rs   zPositiveJoin._nullablek  r  r$   r   r%   r&   r'   r  r   rs   ra   rb   s   @r"   r  r  d  s    ,0%r$   r  c                      e Zd ZdZd Zy)LeftJoinr   c                &    |j                  ||      S r)   )
_left_joinr  s       r"   r  zLeftJoin._do_parser  s    ~~c3''r$   Nr%   r&   r'   r  r  r   r$   r"   r  r  o  s    F(r$   r  c                      e Zd ZdZd Zy)	RightJoinr   c                &    |j                  ||      S r)   )_right_joinr  s       r"   r  zRightJoin._do_parsey  s    sC((r$   Nr  r   r$   r"   r  r  v  s    F)r$   r  c                      e Zd ZdZd Zy)Gather.c                &    |j                  ||      S r)   )_gatherr  s       r"   r  zGather._do_parse  s    {{3$$r$   Nr  r   r$   r"   r  r  }  s    F%r$   r  c                  ,     e Zd Zd Zd fd	Zd Z xZS )PositiveGatherc                &    |j                  ||      S r)   )_positive_gatherr  s       r"   r  zPositiveGather._do_parse  s    ##C--r$   c                *    t         |   |      dz   S r  r  r/  s     r"   r   zPositiveGather._to_str  r  r$   c                @    t        j                  | j                        S r)   r   r    s    r"   rs   zPositiveGather._nullable  r  r$   r   r  rb   s   @r"   r  r    s    .0%r$   r  c                  &    e Zd Zd Zd ZddZd Zy)EmptyClosurec                "    |j                         S r)   )_empty_closurerz   s     r"   r\   zEmptyClosure.parse  s    !!##r$   c                    dhS r!  r   r   s      r"   r   zEmptyClosure._first  r"  r$   c                     y)Nz{}r   r   s     r"   r   zEmptyClosure._to_str  r   r$   c                     yr   r   r    s    r"   rs   zEmptyClosure._nullable  r   r$   Nr   r  r   r$   r"   r  r    s    $r$   r  c                  *    e Zd Zd Zd ZddZdZd Zy)Optionalc                    d |_         | j                  ||j                         |j                         5  | j                  j                  |      cd d d        S # 1 sw Y   y xY wr)   )ry   r   rm   	_optionalr   r\   rz   s     r"   r\   zOptional.parse  sK    $$S#''2]]_ 	'88>>#&	' 	' 	's   AA"c                T    t        dh      | j                  j                  ||      z  S r!  )r:   r   r   r   s      r"   r   zOptional._first  s"    RDzDHHOOAq111r$   c                "   t        | j                  j                  |            }d}t        | j                  t              rt        | j                        }||z  S t        | j                  t              r| j                  j                  }||z  S )Nr   z[%s])r@  r   r   rh   r  r   str_templater  )r!   r   r   templates       r"   r   zOptional._to_str  st    $(("""-.dhh'D--.H #~ %(((,,C#~r$   z8
            [
            %s
            ]
            c                     yr   r   r    s    r"   rs   zOptional._nullable  r   r$   Nr   )r%   r&   r'   r\   r   r   r  rs   r   r$   r"   r  r    s    '2Lr$   r  c                  &    e Zd Zd Zd ZddZd Zy)Cutc                $    |j                          y r)   )_cutrz   s     r"   r\   z	Cut.parse  s    
r$   c                    dhS )N)~r   r   s      r"   r   z
Cut._first  s	    xr$   c                     y)Nr  r   r   s     r"   r   zCut._to_str  r   r$   c                     yr   r   r    s    r"   rs   zCut._nullable  r   r$   Nr   r  r   r$   r"   r  r    s    r$   r  c                  8     e Zd Zd fd	Zd Z fdZddZ xZS )Namedc                Z    t         |   |j                         |j                  | _        y r)   )rP   rQ   r   r+   r   s      r"   rQ   zNamed.__init__  s    !HH	r$   c                n    | j                   j                  |      }||j                  | j                  <   |S r)   )r   r\   rm   r+   r!   rn   rr   s      r"   r\   zNamed.parse  s+    s#"		r$   c                >    | j                   dfgt        | 	         S r   r+   rP   r|   r  s    r"   r|   zNamed.defines  s!    E"7UW_%677r$   c                    |r| j                   j                  d      S | j                   d| j                   j                  |       S )NTr   r  r   r   r+   r   s     r"   r   zNamed._to_str  sE    88###..))Adhh..D.9:;;r$   r)   r   )r%   r&   r'   rQ   r\   r|   r   ra   rb   s   @r"   r
  r
    s    
8<r$   r
  c                  ,     e Zd Zd Z fdZddZ xZS )	NamedListc                    | j                   j                  |      }|j                  j                  | j                  |       |S r)   )r   r\   rm   _setlistr+   r  s      r"   r\   zNamedList.parse  s1    s#E*r$   c                >    | j                   dfgt        | 	         S r   r  r  s    r"   r|   zNamedList.defines  s!    D!6EGO$566r$   c                    |r| j                   j                  d      S | j                   d| j                   j                  |      S )NTr   z+:r  r   s     r"   r   zNamedList._to_str  sE    88###..))Btxx//T/:=>>r$   r   )r%   r&   r'   r\   r|   r   ra   rb   s   @r"   r  r    s    
7?r$   r  c                  &     e Zd Zd fd	Zd Z xZS )Overridec                <    t         |   t        d|             y N@)r+   r   r   rP   rQ   r
   r   s      r"   rQ   zOverride.__init__      Scs34r$   c                    g S r)   r   r    s    r"   r|   zOverride.defines  r}   r$   r)   r%   r&   r'   rQ   r|   ra   rb   s   @r"   r  r        5r$   r  c                  &     e Zd Zd fd	Zd Z xZS )OverrideListc                <    t         |   t        d|             y r  r  r   s      r"   rQ   zOverrideList.__init__  r  r$   c                    g S r)   r   r    s    r"   r|   zOverrideList.defines  r}   r$   r)   r   rb   s   @r"   r#  r#    r!  r$   r#  c                       e Zd Zd ZddZd Zy)Specialc                    | j                   fhS r)   rr   r   s      r"   r   zSpecial._first  r  r$   c                "    d| j                    dS )N?r)  r   s     r"   r   zSpecial._to_str  s    4::,a  r$   c                     yr   r   r    s    r"   rs   zSpecial._nullable  r   r$   Nr   )r%   r&   r'   r   r   rs   r   r$   r"   r'  r'    s    !r$   r'  c                  T     e Zd Z fdZd Zd Zd Zd Zd Zd
dZ	ddZ
dd	Z xZS )rw  c                D    t         |           | j                  | _        y r)   )rP   r  rm   r+   r  s    r"   r  zRuleRef.__post_init__  s    HH	r$   c                    	 |j                  | j                        } |       S # t        $ r$ |j                  | j                  t               Y y w xY w)N)exclass)r]   r+   KeyErrorr  r   )r!   rn   rT   s      r"   r\   zRuleRef.parse
  sG    	>>$)),D 6M  	5JJtyy)J4	5s   $ *AAc                ^    | j                   |vrt        | j                   h      S t               S r)   r+   r:   r   s     r"   r   zRuleRef.missing_rules  s&    99E!$$vr$   c                    | j                   hS r)   r*   r    s    r"   r   zRuleRef._used_rule_names  s    		{r$   c                    t        || j                           t        | j                        hz  | _        | j                  S r)   )r:   r+   r,   rp   r   s      r"   r   zRuleRef._first  s0    a		l+s499~.>>~~r$   c                b    || j                   xx   |z  cc<   t        |      | j                   hz  S r)   r3  r   s       r"   r   zRuleRef._follow  s)    
499Aw$))$$r$   c                h    | j                   t        | j                        h| _         | j                   S r)   )rp   r,   r+   r   s     r"   r   zRuleRef.firstset"  s(    >>!!$))n-DN~~r$   c                    | j                   S r)   r*   r   s     r"   r   zRuleRef._to_str'  s    yyr$   c                >    || j                      j                  |      S r)   )r+   r   rz   s     r"   r   zRuleRef.is_nullable*  s    499~))#..r$   r   r   r)   )r%   r&   r'   r  r\   r   r   r   r   r   r   r   ra   rb   s   @r"   rw  rw    s0    
%
/r$   rw  c                  &     e Zd Z fdZddZ xZS )RuleIncludec                    t        |t              sJ t        |j                               t        |   |j                         || _        y r)   )rh   Ruler@  r+   rP   rQ   r   rT   )r!   rT   rU   s     r"   rQ   zRuleInclude.__init__/  s8    $%5s499~5%"	r$   c                4    d| j                   j                   S )Nr   )rT   r+   r   s     r"   r   zRuleInclude._to_str4  s    499>>"##r$   r   r   rb   s   @r"   r;  r;  .  s    
$r$   r;  c                  Z     e Zd Zd
 fd	Zd Zd Zd Zd Zd Ze	d        Z
ddZd	Z xZS )r=  c                   |t        |t              sJ |       t        |   ||       || _        || _        || _        |xs g | _        d| j                  v | _        d | _	        d| _
        d| j                  v| _        y )N)r   rm   r+   Fnomemo)rh   r   rP   rQ   r+   paramskwparams
decoratorsis_namebase
is_leftrecis_memoizable)r!   rm   r+   r   rB  rC  rD  rU   s          r"   rQ   zRule.__init__9  s    :h#@J(J@Sc*	 $*0	%T__<r$   c                :    | j                  || j                        S r)   )
_parse_rhsr   rz   s     r"   r\   z
Rule.parseF      sDHH--r$   c           	         t        | j                  |j                  | j                  | j                  | j
                  | j                  | j                        }|j                  |      S r)   )	r   r+   r\   rG  rH  rE  rB  rC  _call)r!   rn   r   ruleinfos       r"   rJ  zRule._parse_rhsI  sP    IIIIOOLLKKMM
 yy""r$   c                |    | j                   j                  ||      || j                     z  | _        | j                  S r)   )r   r   r+   rp   r   s      r"   r   zRule._firstX  s/    A.499=~~r$   c                V    | j                   j                  |||| j                           S r)   )r   r   r+   r   s       r"   r   zRule._follow\  s#    xx2r$))}55r$   c                @    t        j                  | j                        S r)   r   r    s    r"   rs   zRule._nullable_  r  r$   c                    t        | t        t        z        s t        | t              r| j	                         rt        |       S t        |       S r)   )rh   ru   floatr@  isalnumr   )rA  s    r"   
param_reprzRule.param_reprb  s3    au%*Q*<q6M7Nr$   c           
          j                         }|rd}n j                  r$dj                   fd j                  D              nd}d} j                  r2dj                   fd j                  j	                         D              }|r|r
d| d| d}n.|rd| d}n%|r#t         j                        dk(  rd| nd| d} j                  rd	 j                  j                  nd}t         j                        j                   j                  ||t         j                  j                  |
            | j                  rd      S d      S )Nr>   z, c              3  @   K   | ]  }j                  |        y wr)   rU  )r/   rA  r!   s     r"   r2   zRule._to_str.<locals>.<genexpr>o  s     B$//!,Bs   c              3  P   K   | ]  \  }}| d j                  |         yw)=NrX  )r/   r1   vr!   s      r"   r2   zRule._to_str.<locals>.<genexpr>v  s2      %A c4??1-./%s   #&r
  r  r	   z::z < r   z@name
)r+   rF  rB  r   r   rE  )r   rB  rF   rC  r   r  rF  r+   r   r  r   r   r   r   rE  )r!   r   r   rB  rC  rF  s   `     r"   r   zRule._to_stri  s]   $$&F ;; 		BdkkBB  H}}99 %"&--"5"5"7% 
 (VHBxj2XJa 4;;'1, MVHA  ,099TYY^^&'"D%%&--txx''T'23!%I . 
 	
 46 . 
 	
r$   z                {is_name}{comments}{name}{base}{params}
                    =
                {exp}
                    ;
                r)   r   )r%   r&   r'   rQ   r\   rJ  r   r   rs   r   rU  r   r  ra   rb   s   @r"   r=  r=  8  sB    =.
#6%  &
PLr$   r=  c                  .     e Zd Z	 d fd	Zd Zd Z xZS )	BasedRulec                :   t         |   ||||xs |j                  |xs |j                  |       || _        t        | j                  j                  | j                  g      }|j                  | j                  j                         t        |      | _
        y )N)rD  )rh  r   )rP   rQ   rB  rC  rF  r
   r   set_parseinfo	parseinforf  rhs)	r!   rm   r+   r   rF  rB  rC  rD  rU   s	           r"   rQ   zBasedRule.__init__  s     	!dkk%! 	 	
 	DIIMM48845$))--.$r$   c                :    | j                  || j                        S r)   )rJ  ra  rz   s     r"   r\   zBasedRule.parse  rK  r$   c                6    | j                   j                         S r)   )ra  r|   r    s    r"   r|   zBasedRule.defines  r   r$   r)   )r%   r&   r'   rQ   r\   r|   ra   rb   s   @r"   r]  r]    s    AE% ."r$   r]  c                       e Zd Z	 	 d	 	 	 d fdZed        Zed        Zej                  d        Zd Zd Z	d Z
ed        Zdd	Zdd
ZddZdddZd ZddZ xZS )Grammarc                  t         	|           t        |t              sJ t	        |             |xs i }|| _        t        j                  d|| d|} |j                  di |}|| _	        || _
        |D ci c]  }|j                  | c}| _         |j                  di |}|| j
                  j                  d      }|t        |j                         j"                  }|| _        | j%                  t'        d | j                  D                    }|r+dj)                  dgt+        |            }t-        d|z         | j/                          |j0                  rt3        |        y y c c}w )N)rM   ownergrammarc              3  4   K   | ]  }|j                     y wr)   r*   r/   rs     r"   r2   z#Grammar.__init__.<locals>.<genexpr>  s     )EQ!&&)Es   r   r>   z#Unknown rules, no parser generated:r   )rP   rQ   rh   r   r@  
directivesr   rN   rO   rM   rR   r+   rulemapmergegetr   filenamestemr   r:   rF   r   r   _calc_lookahead_setsleft_recursionr   )
r!   r+   rR   rM   rl  rS   rT   missingmsgrU   s
            r"   rQ   zGrammar.__init__  sO    	%&2E
2&%2
$!!JtJzJ+(+
49:D		4:+
+<??&&y1D<(--D	$$T)E$**)E%EF))R2&/23CDsJKK!!#  % !! ;s   9E-c                .    | j                   j                  S r)   )rM   keywordsr    s    r"   rw  zGrammar.keywords  s    {{###r$   c                .    | j                   j                  S r)   rM   	semanticsr    s    r"   rz  zGrammar.semantics  s    {{$$$r$   c                &    || j                   _        y r)   ry  )r!   rr   s     r"   rz  zGrammar.semantics  s     %r$   c                     t               j                  | j                  D cg c]  }|j                  |       c} S c c}w r)   )r:   ro  rR   r   )r!   rR   rT   s      r"   r   zGrammar.missing_rules  s7    tv||48JJ?Dd  '?
 	
?rp  c                   | j                   si S d| j                   d   j                  h}i }||k7  rV|}| t               j                  | j                   D cg c]   }|j                  |v r|j	                         " c} z  }||k7  rV|S c c}w )NrK   r   )rR   r+   r:   ro  r   )r!   usedprevrT   s       r"   r   zGrammar._used_rule_names  s    zzIA++,dlDLDFLL !%

yyD( ))+ D dl s   %B	
c                ~    | j                         }| j                  D cg c]  }|j                  |v s| c}S c c}w r)   )r   rR   r+   )r!   r~  rT   s      r"   
used_ruleszGrammar.used_rules  s3    $$&!%AtyyD/@AAAs   ::c                    | j                   S r)   )rp   r    s    r"   
first_setszGrammar.first_sets  s    ~~r$   c                D    | j                          | j                          y r)   )_calc_first_sets_calc_follow_setsr   s     r"   rr  zGrammar._calc_lookahead_sets  s     r$   c                   t        t              }d }||k7  rIt        |      }| j                  D ])  }||j                  xx   |j                  ||      z  cc<   + ||k7  rI| j                  D ]  }||j                     |_         y r)   )r   r:   r   rR   r+   r   rp   )r!   r1   r   f1rT   s        r"   r  zGrammar._calc_first_sets  s~    AgaB

 2$))Aq 112 Ag JJ 	*Dtyy\DN	*r$   c                    t        t              }d }||k7  r=t        |      }| j                  D ]  }|j	                  ||t                       ||k7  r=| j                  D ]  }||j
                     |_         y r)   )r   r:   r   rR   r   r+   rq   )r!   r1   r   fl1rT   s        r"   r  zGrammar._calc_follow_sets  st    Rir(C

 ,QDF+, Ri
 JJ 	-D!$))}D	-r$   c                  | j                   j                  |      } |j                  di |}|j                         }| | j                  d   j
                  }||_        |t        | j                  |      }|j                  ||      S )Nr   rL   r   )	rM   replace_configrO   effective_rule_namerR   r+   
start_rulerI   r\   )r!   textrM   rn   rS   rK   s         r"   r\   zGrammar.parse  s    ++F3+(+**,=JJqM&&E %F;tzz&9Cyyfy--r$   c                @    dt        d | j                  D              z   S )Nr	   c              3  <   K   | ]  }|j                           y wr)   r{  rj  s     r"   r2   z$Grammar.nodecount.<locals>.<genexpr>+  s     9q{{}9r|  )r}  rR   r    s    r"   r   zGrammar.nodecount*  s    39djj9999r$   c                   h d}ddh}dh}d}| j                   j                         D ]L  \  }}t        |||v rdnd||v rt        |      n||v rt	        |      n|      }| dj
                  di |z  }N |r|d	z  }d	j                  d
 t        t        | j                        d      D              j                         }	|	rd|	z   d	z   nd}	dj                  fd| j                  D              j                         d	z   }
||	z   |
z   S )N>   r   
whitespaceeol_commentsr   rh  	namecharsr>   rC  )r+   framerr   z"@@{name} :: {frame}{value}{frame}
r   c              3  R   K   | ]  }d dj                  d |D              z    ! yw)z@@keyword :: r   c              3  8   K   | ]  }|t        |        y wr)   r   )r/   r1   s     r"   r2   z,Grammar._to_str.<locals>.<genexpr>.<genexpr>D  s     &K1Q]tAw&Ks   NrE   rC   s     r"   r2   z"Grammar._to_str.<locals>.<genexpr>C  s,      
 chh&K&KKK
s   %'   z

c              3  T   K   | ]  }t        |j                                ! yw)r   N)r@  r   )r/   rT   r   s     r"   r2   z"Grammar._to_str.<locals>.<genexpr>J  s!     LDLLdL34Ls   %(r   )rl  r   r   r   r@  r   rF   r   r   rw  r   rR   rstrip)r!   r   regex_directivesustr_directivesstring_directivesrl  	directiverr   fmtrw  rR   s    `         r"   r   zGrammar._to_str-  s:   E%y1(M
 $ 5 5 7 	NIu&*::c !$55 K !O3 U
C F?FFMMMJ	N $J99 
F4==115
 
 %' 	 086H$t+R KKLLL
&(T H$u,,r$   r^   )rM   r_   rl  zdict | Noner   )rM   r_   r  r@  r   )r%   r&   r'   rQ   r`   rw  rz  setterr   r   r  r  rr  r  r  r\   r   r   ra   rb   s   @r"   re  re    s     '+"&$&
 $$&  $&L $ $ % % & &

"B  !
*	-.:-r$   re  )T
__future__r   rZ   collectionsr   collections.abcr   r   	itertoolsr   pathlibr   rm   r
   r   r:   contextsr   
exceptionsr   r   infosr   r   leftrecr   r   objectmodelr   utilr   r   r   r   r   r  	PRAGMA_REr@  r   r,   r<   rG   rI   rd   r   r   r   r   r   r   r   
_Decoratorr  r  r  r'  r1  rM  rV  r]  rf  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r#  r'  rw  r;  r=  r]  re  r   r$   r"   <module>r     s]   "  # #     + " / ) 2  8 8	 	3 
7H?< ?0fD fR5 % 5 'e '' '
% ' 'V 
$I $ E   u $
8H 
8&2e &2R		 			 	
2Y 
2:u :z<U <~Y i ,%g %$9 >%4 %(| () )%T %%V %5 y :% <I <&? ?u 9 e &/e &/R$) $^9 ^B" "0[-e [-r$   