o
    ٷi*                     @   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	   N/home/ubuntu/.local/lib/python3.10/site-packages/antlr4/BufferedTokenStream.pyr      s    r   c                   @   sp  e Zd ZdZdefddZdd Zdefdd	Zd
d Z	defddZ
defddZdd ZdefddZdefddZdCdede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efd&d'Zd(d) Zd*d+ Zdefd,d-Zded.efd/d0Zded.efd1d2ZdDd4ed.efd5d6ZdDd4ed.efd7d8Zd9ed:ed.efd;d<Zd=d> ZdEdedefd?d@ZdAdB ZdS )FBufferedTokenStreamtokenSourcetokensindex
fetchedEOFr   c                 C      || _ 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      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.resetr   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 }n| j t| jk }nd}|s.| dtjkr.td| | j d rA| 	| j d | _ d S d S )NFr      zcannot consume EOF)
r   r   lenr   LAr   EOFr   syncr!   )r   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+   nfetchedr	   r	   r
   r(   m   s
   
zBufferedTokenStream.syncr-   c                 C   s^   | j rdS td|D ]"}| j }t| j|_| j| |jt	j
kr,d| _ |d   S q
|S )Nr   Tr$   )r   ranger   	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r3 |S |d u s<|j|v rA|| q#|S Nr   r$   )r    r%   r   r/   r3   r   r'   r2   )r   r5   r6   r7   subsetr+   r4   r	   r	   r
   	getTokens   s   

zBufferedTokenStream.getTokensc                 C   s   |  |jS r   )LTr3   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   r=   r	   r	   r
   LB   s   zBufferedTokenStream.LBc                 C   sl   |    |dkr
d S |dk r| | S | j| d }| | |t| jkr1| jt| jd  S | j| S r8   )r    r>   r   r(   r%   r   )r   r=   r+   r	   r	   r
   r;      s   

zBufferedTokenStream.LTc                 C   s   |S r   r	   r<   r	   r	   r
   r!      r   z#BufferedTokenStream.adjustSeekIndexc                 C   s   | j dkr|   d S 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
   r?      s   
zBufferedTokenStream.setupc                 C   r   r   r   r   r	   r	   r
   setTokenSource   s   
z"BufferedTokenStream.setTokenSourcechannelc                 C   st   |  | |t| jkrt| jd S | j| }|j|kr8|jtjkr%|S |d7 }|  | | j| }|j|ks|S )Nr$   )r(   r%   r   rA   r3   r   r'   )r   r+   rA   tokenr	   r	   r
   nextTokenOnChannel   s   





z&BufferedTokenStream.nextTokenOnChannelc                 C   s<   |dkr| j | j|kr|d8 }|dkr| j | j|ks|S r8   )r   rA   )r   r+   rA   r	   r	   r
   previousTokenOnChannel   s   z*BufferedTokenStream.previousTokenOnChannelr   r1   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.LexerrG   rC   DEFAULT_TOKEN_CHANNELfilterForChannel)r   r1   rA   rG   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r7d S |d }|d }| 	|||S )Nr   rE   r$   rF   )
r    r%   r   rH   rI   rJ   rG   rD   rK   rL   )r   r1   rA   rG   prevOnChannelrN   rO   r	   r	   r
   getHiddenTokensToLeft   s   "z)BufferedTokenStream.getHiddenTokensToLeftleftrightc                 C   sv   g }t ||d D ]'}| j| }|dkr&ddlm} |j|jkr%|| q	|j|kr0|| q	t|dkr9d S |S )Nr$   r   r   rF   )r/   r   rJ   rG   rA   rK   r2   r%   )r   rS   rT   rA   hiddenr+   r4   rG   r	   r	   r
   rL     s   



z$BufferedTokenStream.filterForChannelc                 C   s
   | j  S r   )r   getSourceNamer   r	   r	   r
   rV     s   
z!BufferedTokenStream.getSourceNamec                 C   s   |    |   t|tr|j}n|d u rd}t|tr |j}n|d u s+|t| jkr2t| jd }|dk s>|dk s>||k r@dS t )}t||d D ]}| j| }|j	tj
krZ n||j qK| W  d    S 1 sow   Y  d S )Nr   r$    )r    fill
isinstancer   r1   r%   r   r   r/   r3   r'   writetextgetvalue)r   r5   r6   bufr+   r4   r	   r	   r
   getText  s(   


$zBufferedTokenStream.getTextc                 C   s.   |    | ddkr	 | ddksd S d S )Ni  )r    r,   r   r	   r	   r
   rX   +  s   zBufferedTokenStream.fillr   )r   )NN) r   r   r   	__slots__rG   r   r   intr   r   r   r#   r*   r(   r,   setr:   r&   r>   r;   r!   r    r?   r@   rC   rD   rP   rR   rL   rV   r^   rX   r	   r	   r	   r
   r      s6    !r   )
ior   antlr4.Tokenr   antlr4.error.Errorsr   rG   objectr   r   r	   r	   r	   r
   <module>   s   