
    c                         d dl mZmZmZ ddlm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y)    )OptionalTupleClassVar   )	Serializec                   n    e Zd ZU dZeed<   eZee	   ed<   deddfdZ
d Zd Zd	 Zd
 Z ee      Zd Zy)Symbolnamer   is_termreturnNc                     || _         y Nr
   )selfr   s     lib/third_party/lark/grammar.py__init__zSymbol.__init__   s	    	    c                     t        |t              sJ |       | j                  |j                  k(  xr | j                  |j                  k(  S r   )
isinstancer	   r   r   r   others     r   __eq__zSymbol.__eq__   s<    %(/%/(||u}},Hejj1HHr   c                     | |k(   S r    r   s     r   __ne__zSymbol.__ne__   s    EM""r   c                 ,    t        | j                        S r   )hashr   r   s    r   __hash__zSymbol.__hash__   s    DIIr   c                 L    t        |       j                  d| j                  dS )N())type__name__r   r   s    r   __repr__zSymbol.__repr__   s    :..		::r   c                 D     t        |        || j                              S r   )r#   r   r   fs     r   renamedzSymbol.renamed!   s    tDz!DII,''r   )r$   
__module____qualname__	__slots__str__annotations__NotImplementedr   r   boolr   r   r   r   r%   propertyfullreprr)   r   r   r   r	   r	   	   sS    I
I,GXd^,S T I#; !H(r   r	   c                   D    e Zd ZU dZdZee   ed<   ddZe	d        Z
d Zy)	Terminalr   
filter_outTr   c                      || _         || _        y r   r5   )r   r   r6   s      r   r   zTerminal.__init__*   s    	$r   c                 f    t        |       j                  d| j                  d| j                  dS )Nr!   , r"   )r#   r$   r   r6   r   s    r   r2   zTerminal.fullrepr.   s!    #Dz22DIItOOr   c                 Z     t        |        || j                        | j                        S r   )r#   r   r6   r'   s     r   r)   zTerminal.renamed2   s!    tDz!DII,88r   N)F)r$   r*   r+   __serialize_fields__r   r   r0   r.   r   r1   r2   r)   r   r   r   r4   r4   %   s6    /"GXd^"% P P9r   r4   c                   &    e Zd ZU dZdZee   ed<   y)NonTerminalr
   Fr   N)r$   r*   r+   r;   r   r   r0   r.   r   r   r   r=   r=   6   s    "#GXd^#r   r=   c                       e Zd ZU dZeed<   eed<   ee   ed<   ee   ed<   e	edf   ed<   ddededee   dee   de	edf   d	dfd
Z
d Zy)RuleOptionskeep_all_tokensexpand1prioritytemplate_sourceempty_indicesrA   rB   rC   rD   .rE   Nr   c                 J    || _         || _        || _        || _        || _        y r   r@   )r   rA   rB   rC   rD   rE   s         r   r   zRuleOptions.__init__E   s(    . .*r   c           	      p    d| j                   d| j                  d| j                  d| j                  d	S )NzRuleOptions(r9   r"   )rA   rB   rC   rD   r   s    r   r%   zRuleOptions.__repr__L   s,      LLMM  	
 	
r   )FFNNr   )r$   r*   r+   r;   r0   r.   r   intr-   r   r   r%   r   r   r   r?   r?   <   s    gMsmc]"s##+ +T +S[\_S` +  yA  BE  yF +  \a  bf  hk  bk  \l +  tx +
r   r?   c                   H    e Zd ZdZdZdZeeefZ	ddZ
d Zd Zd Zd	 Zd
 Zy)Rulez
        origin : a symbol
        expansion : a list of symbols
        order : index of this expansion amongst all rules of the same name
    )origin	expansionaliasoptionsorder_hash)rK   rL   rO   rM   rN   Nc                     || _         || _        || _        || _        |xs
 t	               | _        t        | j                   t        | j                        f      | _        y r   )	rK   rL   rM   rO   r?   rN   r   tuplerP   )r   rK   rL   rO   rM   rN   s         r   r   zRule.__init__`   sJ    "

/+-4;;dnn(=>?
r   c                 b    t        | j                  t        | j                        f      | _        y r   )r   rK   rR   rL   rP   r   s    r   _deserializezRule._deserializeh   s     4;;dnn(=>?
r   c                 |    d| j                   j                  ddj                  d | j                  D              dS )N<z :  c              3   4   K   | ]  }|j                     y wr   r
   ).0xs     r   	<genexpr>zRule.__str__.<locals>.<genexpr>l   s     8XAs   >)rK   r   joinrL   r   s    r   __str__zRule.__str__k   s*    "kk..8X8X0XYYr   c           	      p    d| j                   d| j                  d| j                  d| j                  d	S )NzRule(r9   r"   )rK   rL   rM   rN   r   s    r   r%   zRule.__repr__n   s$    )-dnndjjRVR^R^__r   c                     | j                   S r   )rP   r   s    r   r   zRule.__hash__q   s    zzr   c                     t        |t              sy| j                  |j                  k(  xr | j                  |j                  k(  S )NF)r   rJ   rK   rL   r   s     r   r   zRule.__eq__t   s4    %&{{ell*Pt~~/PPr   )r   NN)r$   r*   r+   __doc__r,   r;   r4   r=   r?   __serialize_namespace__r   rT   r^   r%   r   r   r   r   r   rJ   rJ   U   sE    
 NIM&[@@@Z`Qr   rJ   N)typingr   r   r   utilsr   TOKEN_DEFAULT_PRIORITYr	   r4   r=   r?   rJ   r   r   r   <module>rg      sT    , ,   (Y (89v 9"$& $
) 
2"Q9 "Qr   