o
    V۷iQ                     @   s|   d dl mZmZmZmZ ddlmZ d ZG dd deZG dd deZ	G dd	 d	eZ
G d
d deZG dd deZdS )    )OptionalTupleClassVarSequence   )	Serializec                   @   sl   e Zd ZU dZeed< eZee	 ed< deddfddZ
dd	 Zd
d Zdd Zdd ZeeZdd ZdS )Symbolnamer
   is_termreturnNc                 C   s
   || _ d S Nr	   )selfr
    r   B/home/ubuntu/vllm_env/lib/python3.10/site-packages/lark/grammar.py__init__      
zSymbol.__init__c                 C   s*   t |ts	J || j|jko| j|jkS r   )
isinstancer   r   r
   r   otherr   r   r   __eq__   s   zSymbol.__eq__c                 C   s
   | |k S r   r   r   r   r   r   __ne__   r   zSymbol.__ne__c                 C   s
   t | jS r   )hashr
   r   r   r   r   __hash__   r   zSymbol.__hash__c                 C   s   dt | j| jf S )Nz%s(%r))type__name__r
   r   r   r   r   __repr__   s   zSymbol.__repr__c                 C   s   t | || jS r   )r   r
   r   fr   r   r   renamed!   s   zSymbol.renamed)r   
__module____qualname__	__slots__str__annotations__NotImplementedr   r   boolr   r   r   r   r   propertyfullreprr    r   r   r   r   r   	   s   
 r   c                   @   s@   e Zd ZU dZdZee ed< dddZe	dd Z
d	d
 ZdS )Terminalr
   
filter_outTr   Fc                 C   s   || _ || _d S r   r+   )r   r
   r,   r   r   r   r   *   s   
zTerminal.__init__c                 C   s   dt | j| j| jf S )Nz
%s(%r, %r))r   r   r
   r,   r   r   r   r   r)   .   s   zTerminal.fullreprc                 C   s   t | || j| jS r   )r   r
   r,   r   r   r   r   r    2   s   zTerminal.renamedN)F)r   r!   r"   __serialize_fields__r   r   r'   r%   r   r(   r)   r    r   r   r   r   r*   %   s   
 

r*   c                   @   s"   e Zd ZU dZdZee ed< dS )NonTerminalr	   Fr   N)r   r!   r"   r-   r   r   r'   r%   r   r   r   r   r.   6   s   
 r.   c                   @   s   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dZ
dd Zd	S )RuleOptionskeep_all_tokensexpand1prioritytemplate_sourceempty_indicesr1   r2   r3   r4   .r5   FNr   r   c                 C   s"   || _ || _|| _|| _|| _d S r   r0   )r   r1   r2   r3   r4   r5   r   r   r   r   E   s
   
zRuleOptions.__init__c                 C      d| j | j| j| jf S )NzRuleOptions(%r, %r, %r, %r))r1   r2   r3   r4   r   r   r   r   r   L   s   zRuleOptions.__repr__)FFNNr   )r   r!   r"   r-   r'   r%   r   intr$   r   r   r   r   r   r   r   r/   <   s   
 4r/   c                   @   s   e Zd ZU dZdZdZeeefZ	ee
d< ee e
d< ee
d< ee e
d< ee
d< ee
d	< 	ddedee dedee dee f
ddZdd Zdd Zdd Zdd Zdd ZdS )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)r9   r:   r=   r;   r<   r9   r:   r=   r;   r<   r>   r   Nc                 C   s>   || _ || _|| _|| _|pt | _t| j t| jf| _d S r   )	r9   r:   r;   r=   r/   r<   r   tupler>   )r   r9   r:   r=   r;   r<   r   r   r   r   g   s   zRule.__init__c                 C   s   t | jt| jf| _d S r   )r   r9   r?   r:   r>   r   r   r   r   _deserializep   s   zRule._deserializec                 C   s"   d| j jddd | jD f S )Nz	<%s : %s> c                 s   s    | ]}|j V  qd S r   r	   ).0xr   r   r   	<genexpr>t   s    zRule.__str__.<locals>.<genexpr>)r9   r
   joinr:   r   r   r   r   __str__s   s   "zRule.__str__c                 C   r6   )NzRule(%r, %r, %r, %r))r9   r:   r;   r<   r   r   r   r   r   v   s   zRule.__repr__c                 C   s   | j S r   )r>   r   r   r   r   r   y   s   zRule.__hash__c                 C   s&   t |tsdS | j|jko| j|jkS )NF)r   r8   r9   r:   r   r   r   r   r   |   s   
zRule.__eq__)r   NN)r   r!   r"   __doc__r#   r-   r*   r.   r/   __serialize_namespace__r%   r   r   r7   r   r$   r   r@   rF   r   r   r   r   r   r   r   r8   U   s0   
 

	r8   N)typingr   r   r   r   utilsr   TOKEN_DEFAULT_PRIORITYr   r*   r.   r/   r8   r   r   r   r   <module>   s    