U
    :qLeó)  ã                   @   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	   úq/home/p21-0144/sympy/latex2sympy2solve-back-end/sympyEq/lib/python3.8/site-packages/antlr4/BufferedTokenStream.pyr      s   r   c                   @   sX  e 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d@e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.d/„ZdAeed1œd2d3„ZdBeed1œd4d5„Zeeed6œd7d8„Zd9d:„ ZdCed;œd<d=„Zd>d?„ ZdS )DÚBufferedTokenStream)ÚtokenSourcec                 C   s   || _ g | _d| _d| _d S ©NéÿÿÿÿF©r   ÚtokensÚindexÚ
fetchedEOF©Úselfr   r	   r	   r
   Ú__init__   s    zBufferedTokenStream.__init__c                 C   s   dS ©Nr   r	   ©r   r	   r	   r
   Úmark@   s    zBufferedTokenStream.mark)Úmarkerc                 C   s   d S ©Nr	   )r   r   r	   r	   r
   ÚreleaseC   s    zBufferedTokenStream.releasec                 C   s   |   d¡ d S r   )Úseekr   r	   r	   r
   ÚresetG   s    zBufferedTokenStream.reset)r   c                 C   s   |   ¡  |  |¡| _d S r   )ÚlazyInitÚadjustSeekIndexr   ©r   r   r	   r	   r
   r   J   s    zBufferedTokenStream.seekc                 C   s   |   ¡  | j| S r   )r   r   r    r	   r	   r
   ÚgetN   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
   ÚconsumeR   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&   l   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   Ú	nextTokenr#   r   Ú
tokenIndexÚappendÚtyper   r%   )r   r*   r(   Útr	   r	   r
   r)   w   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 ksv|j|krF| |¡ qF|S ©Nr   r"   )r   r#   r   r+   r/   r   r%   r.   )r   r1   r2   r3   Úsubsetr(   r0   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   r9   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 r4   )r   r:   r   r&   r#   r   )r   r9   r(   r	   r	   r
   r7   œ   s    
zBufferedTokenStream.LTc                 C   s   |S r   r	   r8   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
   r;   ¼   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   sb   |   |¡ |t| jƒkrdS | j| }|j|kr^|jtjkr@dS |d7 }|   |¡ | j| }q&|S )Nr   r"   )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 r4   )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.LexerrC   r?   ÚDEFAULT_TOKEN_CHANNELÚfilterForChannel)r   r-   r=   rC   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   rA   r"   rB   )
r   r#   r   rD   rE   rF   rC   r@   rG   rH   )r   r-   r=   rC   ZprevOnChannelrI   rJ   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   rB   )r+   r   rF   rC   r=   rG   r.   r#   )r   rM   rN   r=   Zhiddenr(   r0   rC   r	   r	   r
   rH     s    

z$BufferedTokenStream.filterForChannelc                 C   s
   | j  ¡ S r   )r   ÚgetSourceNamer   r	   r	   r
   rO     s    z!BufferedTokenStream.getSourceName)Úintervalc              
   C   sú   |   ¡  |  ¡  |d kr*dt| jƒd f}|d }t|tƒrB|j}|d }t|tƒrZ|j}|d ksz|d ksz|dk sz|dk r~dS |t| jƒkršt| jƒd }tƒ P}t||d ƒD ]*}| j| }|j	tj
krÎ qÜ| |j¡ q°| ¡ W  5 Q R £ S Q R X d S )Nr   r"   Ú )r   Úfillr#   r   Ú
isinstancer   r-   r   r+   r/   r%   ÚwriteÚtextÚgetvalue)r   rP   r1   r2   Úbufr(   r0   r	   r	   r
   ÚgetText  s*    

 
zBufferedTokenStream.getTextc                 C   s   |   ¡  |  d¡dkrqd S )Niè  )r   r)   r   r	   r	   r
   rR   ,  s    zBufferedTokenStream.fill)N)r   )r   )N) r   r   r   rC   r   r   Úintr   r   r   r!   r'   r&   r)   Úsetr6   r$   r:   r7   r   r   r;   r<   r?   r@   rK   rL   rH   rO   ÚtuplerX   rR   r	   r	   r	   r
   r      s2   !r   )
Úior   Úantlr4.Tokenr   Úantlr4.error.Errorsr   rC   Úobjectr   r   r	   r	   r	   r
   Ú<module>   s
   