o
    9n0j-                     @   s   d dl mZ d dlZejd dkrd dlmZ n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 d dlmZmZmZ G dd deZG dd deeZdS )    )StringION      )TextIO)CommonTokenFactory)LexerATNSimulator)InputStream)
Recognizer)Token)IllegalStateExceptionLexerNoViableAltExceptionRecognitionExceptionc                   @   s   e Zd ZdS )TokenSourceN)__name__
__module____qualname__ r   r   S/home/wildlama/miniconda3/envs/lam_a2e/lib/python3.10/site-packages/antlr4/Lexer.pyr      s    r   c                       s  e Zd ZdZdZdZdZejZ	ej
ZdZdZejfdedef fdd	Zd
d Zdd Zdd Zdd ZdefddZdefddZdd Zedd ZejdefddZedd Zdefdd Zd!d" Z d#d$ Z!ed%d& Z"e"jd'efd(d&Z"ed)d* Z#e#jd+efd,d*Z#ed-d. Z$e$jd/efd0d.Z$d1d2 Z%ed3d4 Z&e&jd5e'fd6d4Z&d7d8 Z(d9e)fd:d;Z*d<e'fd=d>Z+d?e'fd@dAZ,d?e'fdBdCZ-dDe.fdEdFZ/  Z0S )GLexer)_input_output_factory_tokenFactorySourcePair_token_tokenStartCharIndex_tokenStartLine_tokenStartColumn_hitEOF_channel_type
_modeStack_mode_textr   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__r   r   r   DEFAULTr   r   _interpr   r   r   r   r   r
   DEFAULT_CHANNELr   INVALID_TYPEr   r    DEFAULT_MODEr!   r"   )selfr%   r&   	__class__r   r   r)   .   s    

	
zLexer.__init__c                 C   sf   | j d u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   r3   ^   s   
zLexer.resetc              
   C   s^  | j d u r	td| j  }z	 | jr!|   | jW | j | S d | _tj| _	| j j
| _| jj| _| jj| _d | _d}	 tj| _| j}z| j| j | j}W n tyk } z| | | | W Y d }~nd }~ww | j dtjkrxd| _| jtjkr|| _| j| jkrd}n| j| jkrnq=|rq| jd u r|   | jW | j | S | j | w )Nz+nextToken requires a non-null input stream.TFr   )r   r   markr   emitEOFr   releaser
   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   	nextTokenr   sT   

!




zLexer.nextTokenc                 C      | j | _d S N)r;   r   r4   r   r   r   skip      z
Lexer.skipc                 C   rF   rG   )rA   r   r4   r   r   r   more   rI   z
Lexer.moremc                 C   
   || _ d S rG   )r!   r/   rK   r   r   r   mode      
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!   rN   rM   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'   rP   )
lenr    	Exceptionr+   rR   rS   r   rN   popr!   r4   r   r   r   popMode   s   zLexer.popModec                 C      | j S rG   )r   r4   r   r   r   inputStream      zLexer.inputStreamc                 C   s0   d | _ | | j f| _|   || _ | | j f| _d S rG   )r   r   r3   )r/   r%   r   r   r   r\      s
   c                 C      | j jS rG   )r   
sourceNamer4   r   r   r   r_         zLexer.sourceNametokenc                 C   rL   rG   )r   )r/   ra   r   r   r   	emitToken   rO   zLexer.emitTokenc              
   C   s>   | j | j| j| j| j| j|  d | j| j	}| 
| |S Nr   )r   creater   r   r"   r   r   getCharIndexr   r   rb   )r/   tr   r   r   rB      s
   
z
Lexer.emitc              
   C   sF   | j }| j}| j| jtjd tj| jj	| jj	d ||}| 
| |S rc   )r9   r:   r   rd   r   r
   r@   r,   r   r8   rb   )r/   cposlposeofr   r   r   r6      s   
zLexer.emitEOFc                 C   r[   rG   r   r4   r   r   r   type   r]   z
Lexer.typerk   c                 C   rL   rG   rj   )r/   rk   r   r   r   rk         
c                 C   r^   rG   r+   r:   r4   r   r   r   r:      r`   z
Lexer.liner:   c                 C      || j _d S rG   rm   )r/   r:   r   r   r   r:         c                 C   r^   rG   r+   r9   r4   r   r   r   r9      r`   zLexer.columnr9   c                 C   rn   rG   rp   )r/   r9   r   r   r   r9      ro   c                 C   r^   rG   )r   r8   r4   r   r   r   re     s   zLexer.getCharIndexc                 C   s   | j d ur| j S | j| jS rG   )r"   r+   getTextr   r4   r   r   r   text  s   
z
Lexer.texttxtc                 C   rL   rG   )r"   )r/   rs   r   r   r   rr     rl   c                 C   s:   g }|   }|jtjkr|| |   }|jtjks|S rG   )rE   rk   r
   r@   rU   )r/   tokensrf   r   r   r   getAllTokens  s   
zLexer.getAllTokensrD   c                 C   sR   | j }| jj}| j||}d| | d }|  }|| d | j| j|| d S )Nztoken recognition error at: '')	r   r   r8   rq   getErrorDisplayZgetErrorListenerDispatchZsyntaxErrorr   r   )r/   rD   startstoprr   msgZlistenerr   r   r   r=      s   zLexer.notifyListenerssc                 C   sL   t  }|D ]
}|| | q| W  d    S 1 sw   Y  d S rG   )r   writegetErrorDisplayForChargetvalue)r/   r{   bufcr   r   r   rw   (  s
   $zLexer.getErrorDisplayr   c                 C   s>   t |d tjkrdS |dkrdS |dkrdS |dkrdS |S )	Nr   z<EOF>
z\n	z\tz\r)ordr
   r@   r/   r   r   r   r   r}   .  s   zLexer.getErrorDisplayForCharc                 C   s   d|  | d S )Nrv   )r}   r   r   r   r   getCharErrorDisplay:  s   zLexer.getCharErrorDisplayrec                 C   s@   | j dtjkrt|tr| j| j  d S | j   d S d S rc   )r   r?   r
   r@   
isinstancer   r+   consume)r/   r   r   r   r   r>   B  s
   
zLexer.recover)1r   r   r   	__slots__r.   rA   r;   r
   r,   ZDEFAULT_TOKEN_CHANNELZHIDDEN_CHANNELZHIDDENZMIN_CHAR_VALUEZMAX_CHAR_VALUEsysstdoutr   r   r)   r3   rE   rH   rJ   intrN   rV   rZ   propertyr\   setterr_   rb   rB   r6   rk   r:   r9   re   rr   rT   ru   r   r=   rw   r}   r   r   r>   __classcell__r   r   r0   r   r      sb    04	

	



r   )ior   r   version_infotypingr   Z	typing.ioZantlr4.CommonTokenFactoryr   Zantlr4.atn.LexerATNSimulatorr   Zantlr4.InputStreamr   Zantlr4.Recognizerr	   Zantlr4.Tokenr
   Zantlr4.error.Errorsr   r   r   objectr   r   r   r   r   r   <module>   s   
