o
    9n0j*                     @   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	   a/home/wildlama/miniconda3/envs/lam_a2e/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   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*   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   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r3 |S |d u s<|j|v rA|| q#|S Nr   r$   )r    r%   r   r.   r1   r   r'   r0   )r   r3   r4   r5   Zsubsetr*   r2   r	   r	   r
   	getTokens   s   

zBufferedTokenStream.getTokensc                 C   s   |  |jS r   )LTr1   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 r6   )r    r;   r   r(   r%   r   )r   r:   r*   r	   r	   r
   r8      s   

zBufferedTokenStream.LTc                 C   s   |S r   r	   r9   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   r>   r1   r   r'   )r   r*   r>   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 r6   )r   r>   )r   r*   r>   r	   r	   r
   previousTokenOnChannel   s   z*BufferedTokenStream.previousTokenOnChannelr   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.LexerrD   r@   DEFAULT_TOKEN_CHANNELfilterForChannel)r   r/   r>   rD   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r7d S |d }|d }| 	|||S )Nr   rB   r$   rC   )
r    r%   r   rE   rF   rG   rD   rA   rH   rI   )r   r/   r>   rD   ZprevOnChannelrJ   rK   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   rC   )r.   r   rG   rD   r>   rH   r0   r%   )r   rN   rO   r>   Zhiddenr*   r2   rD   r	   r	   r
   rI     s   



z$BufferedTokenStream.filterForChannelc                 C   s
   | j  S r   )r   getSourceNamer   r	   r	   r
   rP     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   r/   r%   r   r   r.   r1   r'   writetextgetvalue)r   r3   r4   bufr*   r2   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
   rR   +  s   zBufferedTokenStream.fillr   )r   )NN) r   r   r   	__slots__rD   r   r   intr   r   r   r#   r)   r(   r+   setr7   r&   r;   r8   r!   r    r<   r=   r@   rA   rL   rM   rI   rP   rX   rR   r	   r	   r	   r
   r      s6    !r   )
ior   Zantlr4.Tokenr   Zantlr4.error.Errorsr   rD   objectr   r   r	   r	   r	   r
   <module>   s   