o
    iT                     @   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r2|j| _d | _	|dkr.t |jr.|j|d  nd | _
n||f| _|j| | _	|dkrMt |jrM|j|d  nd | _
t| j| j| jf| _d S )N       )len	expansionr   r   r   r   r	   originr   r   r   hashr
   )selfr   r   r    r   W/home/ubuntu/veenaModal/venv/lib/python3.10/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o| j|jkS N)r   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       | ]}|j V  qd S r   name.0r   r   r   r   	<genexpr>#       z Item.__repr__.<locals>.<genexpr>c                 s   r   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    