o
    ڷiM                     @   s0   d dl mZ d dlmZ dZG dd deZdS )    )StringIO)TokenNc                   @   s   e Zd ZdZdd Zdd Zdd Zdefd	d
Zde	fddZ
defddZdefddZdd Zdd Zdd Zdd Zdd Zdedefdd Zdeded!efd"d#Zd$S )%IntervalSet	intervalsreadonlyc                 C   s   d | _ d| _d S )NFr   self r
   H/home/ubuntu/vllm_env/lib/python3.10/site-packages/antlr4/IntervalSet.py__init__   s   
zIntervalSet.__init__c                 c   s0    | j d ur| j D ]}|D ]}|V  qq	d S d S N)r   )r	   icr
   r
   r   __iter__   s   

zIntervalSet.__iter__c                 C   s,   d}| D ]}||kr|  S |d7 }qt jS Nr      )r   INVALID_TYPE)r	   itemr   kr
   r
   r   __getitem__   s   
zIntervalSet.__getitem__vc                 C   s   |  t||d  d S Nr   )addRangerange)r	   r   r
   r
   r   addOne#   s   zIntervalSet.addOnec                 C   s   | j d u rt | _ | j | d S d}| j D ]I}|j|jk r(| j ||  d S |j|jkr;t|j|j| j |<  d S |j|jkr[tt|j|jt|j|j| j |< | 	|  d S |d7 }q| j | d S r   )
r   listappendstopstartinsertr   minmaxreduce)r	   r   r   r   r
   r
   r   r   &   s"   

$

zIntervalSet.addRangeotherc                 C   s$   |j d ur|j D ]}| | q| S r   )r   r   )r	   r$   r   r
   r
   r   addSet?   s   

zIntervalSet.addSetr   c                 C   s   |t | jd k rD| j| }| j|d  }|j|jkr*| j|d  | | d S |j|jkrFt|j|j| j|< | j|d  d S d S d S r   )lenr   r   popr#   r   r   )r	   r   lrr
   r
   r   r#   E   s   
zIntervalSet.reducec                 C   s4   t  }|t||d  | jD ]}|| q|S r   )r   r   r   r   removeRange)r	   r   r   resultr   r
   r
   r   
complementR   s
   
zIntervalSet.complementc                    s&   | j d u rdS t fdd| j D S )NFc                 3   s    | ]} |v V  qd S r   r
   .0r   r   r
   r   	<genexpr>]       z+IntervalSet.__contains__.<locals>.<genexpr>)r   any)r	   r   r
   r/   r   __contains__Y   s   
zIntervalSet.__contains__c                 C   s   t dd | jD S )Nc                 s   s    | ]}t |V  qd S r   )r&   r-   r
   r
   r   r0   `   r1   z&IntervalSet.__len__.<locals>.<genexpr>)sumr   r   r
   r
   r   __len___   s   zIntervalSet.__len__c                 C   s  |j |jd kr| |j  d S | jd urd}| jD ]p}|j|j kr% d S |j |j krL|j|jk rLt|j |j | j|< t|j|j}| j||  d S |j |j krc|j|jkrc| j| |d8 }n!|j |jk rtt|j |j | j|< n|j|jk rt|j|j| j|< |d7 }qd S d S )Nr   r   )r   r   	removeOner   r   r    r'   r	   r   r   r   xr
   r
   r   r*   b   s,   



zIntervalSet.removeRangec                 C   s   | j d urzd}| j D ]q}||jk r d S ||jkr)||jd kr)| j |  d S ||jkr=t|jd |j| j |<  d S ||jd krSt|j|jd | j |<  d S ||jd k rut|j|}t|d |j| j |< | j ||  d S |d7 }q
d S d S r   )r   r   r   r'   r   r    r7   r
   r
   r   r6   }   s,   




zIntervalSet.removeOneliteralNamessymbolicNamesc              
   C   s   | j d u rdS t B}t| dkr|d d}| j D ]}|D ]}|s(|d || ||| d}qqt| dkrA|d | W  d    S 1 sOw   Y  d S )Nz{}r   {Tz, F})r   r   r&   writeelementNamegetvalue)r	   r9   r:   buffirstr   jr
   r
   r   toString   s"   




$zIntervalSet.toStringac                 C   sT   |t jkrdS |t jkrdS |t|k r|| dkr|| S |t|k r(|| S dS )Nz<EOF>z	<EPSILON>z	<INVALID>z	<UNKNOWN>)r   EOFEPSILONr&   )r	   r9   r:   rD   r
   r
   r   r>      s   

zIntervalSet.elementNameN)__name__
__module____qualname__	__slots__r   r   r   intr   r   r   r   r%   r#   r,   r3   r5   r*   r6   r   rC   r>   r
   r
   r
   r   r      s     	r   )ior   antlr4.Tokenr   r   objectr
   r
   r
   r   <module>   s   