a
    d*                     @   sL   d dl mZ d dlmZ d dlmZ dZG dd deZG dd deZ	dS )	    )StringIO)Token)IllegalStateExceptionNc                   @   s   e Zd ZdS )TokenStreamN)__name__
__module____qualname__ r	   r	   c/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/antlr4/BufferedTokenStream.pyr      s   r   c                   @   s^  e Zd ZdZedddZdd Zeddd	Zd
d Z	edddZ
edddZdd ZedddZedddZdAeeedddZedddZedd d!Zedd"d#Zedd$d%Zd&d' Zd(d) Zedd*d+Zeed,d-d.Zeed,d/d0ZdBeed2d3d4ZdCeed2d5d6Zeeed7d8d9Zd:d; ZdDeed<d=d>Zd?d@ ZdS )EBufferedTokenStreamtokenSourcetokensindex
fetchedEOF)r   c                 C   s   || _ g | _d| _d| _d S NFr   selfr   r	   r	   r
   __init__    s    zBufferedTokenStream.__init__c                 C   s   dS Nr   r	   r   r	   r	   r
   markA   s    zBufferedTokenStream.mark)markerc                 C   s   d S Nr	   )r   r   r	   r	   r
   releaseD   s    zBufferedTokenStream.releasec                 C   s   |  d d S r   )seekr   r	   r	   r
   resetH   s    zBufferedTokenStream.reset)r   c                 C   s   |    | || _d S r   )lazyInitadjustSeekIndexr   r   r   r	   r	   r
   r   K   s    zBufferedTokenStream.seekc                 C   s   |    | j| S r   )r   r   r    r	   r	   r
   getO   s    zBufferedTokenStream.getc                 C   s   d}| j dkr<| jr*| j t| jd k }q@| j t| jk }nd}|s\| dtjkr\td| | j d r~| 	| j d | _ d S )NFr      zcannot consume EOF)
r   r   lenr   LAr   EOFr   syncr   )r   ZskipEofCheckr	   r	   r
   consumeS   s    
zBufferedTokenStream.consume)ic                 C   s0   |t | j d }|dkr,| |}||kS dS )Nr"   r   T)r#   r   fetch)r   r(   nZfetchedr	   r	   r
   r&   m   s
    
zBufferedTokenStream.sync)r*   c                 C   s^   | j r
dS td|D ]D}| j }t| j|_| j| |jt	j
krd| _ |d   S q|S )Nr   Tr"   )r   ranger   Z	nextTokenr#   r   
tokenIndexappendtyper   r%   )r   r*   r(   tr	   r	   r
   r)   x   s    
zBufferedTokenStream.fetchN)startstoptypesc                 C   s   |dk s|dk rd S |    g }|t| jkr<t| jd }t||D ]:}| j| }|jtjkrd q|d u sv|j|v rF|| qF|S Nr   r"   )r   r#   r   r+   r.   r   r%   r-   )r   r0   r1   r2   Zsubsetr(   r/   r	   r	   r
   	getTokens   s    
zBufferedTokenStream.getTokensc                 C   s   |  |jS r   )LTr.   r   r(   r	   r	   r
   r$      s    zBufferedTokenStream.LA)kc                 C   s"   | j | dk rd S | j| j |  S r   )r   r   )r   r7   r	   r	   r
   LB   s    zBufferedTokenStream.LBc                 C   sl   |    |dkrd S |dk r(| | S | j| d }| | |t| jkrb| jt| jd  S | j| S r3   )r   r8   r   r&   r#   r   )r   r7   r(   r	   r	   r
   r5      s    
zBufferedTokenStream.LTc                 C   s   |S r   r	   r6   r	   r	   r
   r      s    z#BufferedTokenStream.adjustSeekIndexc                 C   s   | j dkr|   d S )Nr   )r   setupr   r	   r	   r
   r      s    
zBufferedTokenStream.lazyInitc                 C   s   |  d | d| _d S r   )r&   r   r   r   r	   r	   r
   r9      s    
zBufferedTokenStream.setupc                 C   s   || _ g | _d| _d| _d S r   r   r   r	   r	   r
   setTokenSource   s    z"BufferedTokenStream.setTokenSource)r(   channelc                 C   sl   |  | |t| jkr&t| jd S | j| }|j|krh|jtjkrJ|S |d7 }|  | | j| }q0|S )Nr"   )r&   r#   r   r;   r.   r   r%   )r   r(   r;   tokenr	   r	   r
   nextTokenOnChannel   s    



z&BufferedTokenStream.nextTokenOnChannelc                 C   s&   |dkr"| j | j|kr"|d8 }q |S r3   )r   r;   )r   r(   r;   r	   r	   r
   previousTokenOnChannel   s    
z*BufferedTokenStream.previousTokenOnChannelr   )r,   r;   c                 C   s   |    |dk s|t| jkr@tt|d tt| jd  ddlm} | |d |j}|d }|dkr|t| jd n|}| 	|||S )Nr    not in 0..r"   Lexerr   )
r   r#   r   	Exceptionstrantlr4.LexerrA   r=   DEFAULT_TOKEN_CHANNELfilterForChannel)r   r,   r;   rA   ZnextOnChannelfrom_tor	   r	   r
   getHiddenTokensToRight   s    "z*BufferedTokenStream.getHiddenTokensToRightc                 C   s   |    |dk s|t| jkr@tt|d tt| jd  ddlm} | |d |j}||d krnd S |d }|d }| 	|||S )Nr   r?   r"   r@   )
r   r#   r   rB   rC   rD   rA   r>   rE   rF   )r   r,   r;   rA   ZprevOnChannelrG   rH   r	   r	   r
   getHiddenTokensToLeft   s    "z)BufferedTokenStream.getHiddenTokensToLeft)leftrightr;   c                 C   sv   g }t ||d D ]N}| j| }|dkrLddlm} |j|jkr`|| q|j|kr|| qt|dkrrd S |S )Nr"   r   r   r@   )r+   r   rD   rA   r;   rE   r-   r#   )r   rK   rL   r;   hiddenr(   r/   rA   r	   r	   r
   rF     s    

z$BufferedTokenStream.filterForChannelc                 C   s
   | j  S r   )r   getSourceNamer   r	   r	   r
   rN     s    z!BufferedTokenStream.getSourceName)r0   r1   c                 C   s   |    |   t|tr"|j}n|d u r.d}t|tr@|j}n$|d u sV|t| jkrdt| jd }|dk s||dk s|||k rdS t R}t||d D ]*}| j| }|j	tj
kr q||j q| W  d    S 1 s0    Y  d S )Nr   r"    )r   fill
isinstancer   r,   r#   r   r   r+   r.   r%   writetextgetvalue)r   r0   r1   bufr(   r/   r	   r	   r
   getText  s&    


zBufferedTokenStream.getTextc                 C   s   |    | ddkrqd S )Ni  )r   r)   r   r	   r	   r
   rP   +  s    zBufferedTokenStream.fill)N)r   )r   )NN) r   r   r   	__slots__rA   r   r   intr   r   r   r!   r'   r&   r)   setr4   r$   r8   r5   r   r   r9   r:   r=   r>   rI   rJ   rF   rN   rV   rP   r	   r	   r	   r
   r      s4   !r   )
ior   Zantlr4.Tokenr   Zantlr4.error.Errorsr   rA   objectr   r   r	   r	   r	   r
   <module>   s
   