U
    :qLe+                     @   s   d dl mZ d dlmZ d dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d d	lmZmZmZ G d
d deZG dd deeZdS )    )StringIO)TextION)CommonTokenFactory)LexerATNSimulator)InputStream)
Recognizer)Token)IllegalStateExceptionLexerNoViableAltExceptionRecognitionExceptionc                   @   s   e Zd ZdS )TokenSourceN)__name__
__module____qualname__ r   r   c/home/p21-0144/sympy/latex2sympy2solve-back-end/sympyEq/lib/python3.8/site-packages/antlr4/Lexer.pyr      s   r   c                       s  e Zd ZdZdZdZejZej	Z
dZdZejfeed fddZdd	 Zd
d Zdd Zdd ZedddZedddZdd Zedd ZejedddZedd ZedddZd d! Zd"d# Z ed$d% Z!e!jed&d'd%Z!ed(d) Z"e"jed*d+d)Z"ed,d- Z#e#jed.d/d-Z#d0d1 Z$ed2d3 Z%e%je&d4d5d3Z%d6d7 Z'e(d8d9d:Z)e&d;d<d=Z*e&d>d?d@Z+e&d>dAdBZ,e-dCdDdEZ.  Z/S )FLexerr   i )inputoutputc                    st   t    || _|| _tj| _| |f| _d | _d | _	d| _
d| _d| _d| _tj| _tj| _g | _| j| _d | _d S )NF)super__init___input_outputr   DEFAULT_factory_tokenFactorySourcePair_interp_token_tokenStartCharIndex_tokenStartLine_tokenStartColumn_hitEOFr   DEFAULT_CHANNEL_channelINVALID_TYPE_type
_modeStackDEFAULT_MODE_mode_text)selfr   r   	__class__r   r   r   %   s     

	zLexer.__init__c                 C   sf   | j d k	r| j d d | _tj| _tj| _d| _d| _	d| _
d | _d| _tj| _g | _| j  d S )Nr   r   F)r   seekr    r   r'   r(   r%   r&   r!   r#   r"   r,   r$   r   r*   r+   r)   r   resetr-   r   r   r   r1   U   s    
zLexer.resetc              
   C   sV  | j d krtd| j  }z$| jr:|   | jW S d | _tj| _	| j j
| _| jj| _| jj| _d | _d}tj| _| j}z| j| j | j}W n6 tk
r } z| | | | W 5 d }~X Y nX | j dtjkrd| _| jtjkr|| _| j| jkrd}q| j| jkrpqqp|r&q | jd kr:|   | jW S | j | X d S )Nz+nextToken requires a non-null input stream.F   T)r   r	   markreleaser$   emitEOFr    r   r%   r&   indexr!   r   columnr#   liner"   r,   r'   r(   SKIPmatchr+   r
   notifyListenersrecoverLAEOFMOREemit)r-   ZtokenStartMarkerZcontinueOuterttypeer   r   r   	nextTokeni   sH    






zLexer.nextTokenc                 C   s   | j | _d S N)r:   r(   r2   r   r   r   skip   s    z
Lexer.skipc                 C   s   | j | _d S rE   )r@   r(   r2   r   r   r   more   s    z
Lexer.more)mc                 C   s
   || _ d S rE   )r+   r-   rH   r   r   r   mode   s    z
Lexer.modec                 C   s:   | j jrtdt| | jd | j| j | | d S )Nz	pushMode file)	r   debugprintstrr   r)   appendr+   rJ   rI   r   r   r   pushMode   s    zLexer.pushModec                 C   sP   t | jdkrtd| jjr:td| jd d  | jd | | j  | j	S )Nr   zEmpty StackzpopMode back to r   rK   )
lenr)   	Exceptionr   rM   rN   r   rJ   popr+   r2   r   r   r   popMode   s    zLexer.popModec                 C   s   | j S rE   )r   r2   r   r   r   inputStream   s    zLexer.inputStream)r   c                 C   s0   d | _ | | j f| _|   || _ | | j f| _d S rE   )r   r   r1   )r-   r   r   r   r   rV      s
    c                 C   s   | j jS rE   )r   
sourceNamer2   r   r   r   rW      s    zLexer.sourceName)tokenc                 C   s
   || _ d S rE   )r    )r-   rX   r   r   r   	emitToken   s    zLexer.emitTokenc              
   C   s>   | j | j| j| j| j| j|  d | j| j	}| 
| |S Nr3   )r   creater   r(   r,   r&   r!   getCharIndexr"   r#   rY   )r-   tr   r   r   rA      s    
  
z
Lexer.emitc              
   C   sF   | j }| j}| j| jtjd tj| jj	| jj	d ||}| 
| |S rZ   )r8   r9   r   r[   r   r   r?   r%   r   r7   rY   )r-   cposlposeofr   r   r   r6      s    
  
zLexer.emitEOFc                 C   s   | j S rE   r(   r2   r   r   r   type   s    z
Lexer.type)rb   c                 C   s
   || _ d S rE   ra   )r-   rb   r   r   r   rb      s    c                 C   s   | j jS rE   r   r9   r2   r   r   r   r9      s    z
Lexer.line)r9   c                 C   s   || j _d S rE   rc   )r-   r9   r   r   r   r9      s    c                 C   s   | j jS rE   r   r8   r2   r   r   r   r8      s    zLexer.column)r8   c                 C   s   || j _d S rE   rd   )r-   r8   r   r   r   r8      s    c                 C   s   | j jS rE   )r   r7   r2   r   r   r   r\      s    zLexer.getCharIndexc                 C   s"   | j d k	r| j S | j| jS d S rE   )r,   r   getTextr   r2   r   r   r   text   s    
z
Lexer.text)txtc                 C   s
   || _ d S rE   )r,   )r-   rg   r   r   r   rf     s    c                 C   s0   g }|   }|jtjkr,|| |   }q|S rE   )rD   rb   r   r?   rP   )r-   tokensr]   r   r   r   getAllTokens  s    

zLexer.getAllTokens)rC   c                 C   sR   | j }| jj}| j||}d| | d }|  }|| d | j| j|| d S )Nztoken recognition error at: '')	r!   r   r7   re   getErrorDisplaygetErrorListenerDispatchsyntaxErrorr"   r#   )r-   rC   startstoprf   msglistenerr   r   r   r<     s    zLexer.notifyListeners)sc              
   C   s@   t  0}|D ]}|| | q| W  5 Q R  S Q R X d S rE   )r   writegetErrorDisplayForChargetvalue)r-   rr   bufcr   r   r   rk     s    zLexer.getErrorDisplay)rw   c                 C   sB   t |d tjkrdS |dkr"dS |dkr.dS |dkr:dS |S d S )	Nr   z<EOF>
z\n	z\tz\r)ordr   r?   r-   rw   r   r   r   rt   %  s    zLexer.getErrorDisplayForCharc                 C   s   d|  | d S )Nrj   )rt   r|   r   r   r   getCharErrorDisplay1  s    zLexer.getCharErrorDisplay)rec                 C   s:   | j dtjkr6t|tr,| j| j  n
| j   d S rZ   )r   r>   r   r?   
isinstancer
   r   consume)r-   r~   r   r   r   r=   9  s    
zLexer.recover)0r   r   r   r*   r@   r:   r   r%   DEFAULT_TOKEN_CHANNELHIDDEN_CHANNELZHIDDENZMIN_CHAR_VALUEZMAX_CHAR_VALUEsysstdoutr   r   r   r1   rD   rF   rG   intrJ   rQ   rU   propertyrV   setterrW   rY   rA   r6   rb   r9   r8   r\   rf   rO   ri   r
   r<   rk   rt   r}   r   r=   __classcell__r   r   r.   r   r      s^   04	

	



r   )ior   Z	typing.ior   r   Zantlr4.CommonTokenFactoryr   antlr4.atn.LexerATNSimulatorr   antlr4.InputStreamr   antlr4.Recognizerr   antlr4.Tokenr   antlr4.error.Errorsr	   r
   r   objectr   r   r   r   r   r   <module>   s   