a
    þdV  ã                   @   s   d Z G dd„ dƒZdS )zDThis module implements useful building blocks for the Earley parser
c                   @   s<   e Zd ZdZdZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dS )ÚItemz*An Earley Item, the atom of the algorithm.)	ÚsÚruleÚptrÚstartÚis_completeÚexpectÚpreviousÚnodeÚ_hashc                 C   s¶   t |jƒ|k| _|| _|| _|| _d | _| jrd|j| _d | _	|dkr\t |jƒr\|j|d  nd | _
n<||f| _|j| | _	|dkršt |jƒrš|j|d  nd | _
t| j| jfƒ| _d S )Né    é   )ÚlenÚ	expansionr   r   r   r   r	   Úoriginr   r   r   Úhashr
   )Úselfr   r   r   © r   úc/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/lark/parsers/earley_common.pyÚ__init__	   s    (
&zItem.__init__c                 C   s   t | j| jd | jƒS )Nr   )r   r   r   r   ©r   r   r   r   Úadvance   s    zItem.advancec                 C   s    | |u p| j |j ko| j|jkS ©N)r   r   )r   Úotherr   r   r   Ú__eq__   s    zItem.__eq__c                 C   s   | j S r   )r
   r   r   r   r   Ú__hash__   s    zItem.__hash__c                 C   sf   dd„ | j jd | j… D ƒ}dd„ | j j| jd … D ƒ}d | j jjd |¡d |¡¡}d|| jf S )Nc                 s   s   | ]}|j V  qd S r   ©Úname©Ú.0r   r   r   r   Ú	<genexpr>#   ó    z Item.__repr__.<locals>.<genexpr>c                 s   s   | ]}|j V  qd S r   r   r   r   r   r   r   $   r    z{} ::= {}* {}ú z%s (%d))r   r   r   Úformatr   r   Újoinr   )r   ÚbeforeÚafterÚsymbolr   r   r   Ú__repr__"   s     zItem.__repr__N)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r   r   r   r   r'   r   r   r   r   r      s   r   N)r+   r   r   r   r   r   Ú<module>   s   