U
    :qLeb                     @   s   d dl mZmZ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 d dlmZmZ d d	lmZ d d
lmZ d dlmZ d dlmZmZ G dd deZdZdZ G dd deZ ede e _![dS )    )PredictionContextCacheSingletonPredictionContextPredictionContext)InputStream)Token)ATN)LexerATNConfig)ATNSimulator)ATNConfigSetOrderedATNConfigSet)RuleStopStateATNState)LexerActionExecutor)
Transition)DFAState)LexerNoViableAltExceptionUnsupportedOperationExceptionc                   @   s   e Zd Zdd Zdd ZdS )SimStatec                 C   s   |    d S N)resetself r   s/home/p21-0144/sympy/latex2sympy2solve-back-end/sympyEq/lib/python3.8/site-packages/antlr4/atn/LexerATNSimulator.py__init__&   s    zSimState.__init__c                 C   s   d| _ d| _d| _d | _d S )Nr   indexlinecolumndfaStater   r   r   r   r   )   s    zSimState.resetN)__name__
__module____qualname__r   r   r   r   r   r   r   $   s   r   Nc                       s  e Zd ZdZdZdZdZdZdZe	e
eed fddZedd	d
ZeedddZdd ZedddZeedddZeedddZeeedddZeeeedddZeeeedd d!Zeeeeeed"d#d$Zeed%d&d'Z ee!d(d)d*Z"ee#ee$e$e$d+d,d-Z%ee#eee$e$d.d/d0Z&eeee$d1d2d3Z'eeed4d5d6Z(dGeeeeed7d8d9Z)eed:d;d<Z*ed=d>d?Z+edd@dAZ,eddBdCZ-edDdEdFZ.  Z/S )HLexerATNSimulatorFr      N)recogatndecisionToDFAsharedContextCachec                    sL   t  || || _|| _d| _d| _d| _ddlm} |j	| _
t | _d S Nr      r   Lexer)superr   r(   r&   
startIndexr   r   antlr4.Lexerr-   DEFAULT_MODEmoder   
prevAccept)r   r&   r'   r(   r)   r-   	__class__r   r   r   ?   s    zLexerATNSimulator.__init__)	simulatorc                 C   s$   |j | _ |j| _|j| _|j| _d S r   )r   r   r2   r/   )r   r6   r   r   r   	copyStateR   s    zLexerATNSimulator.copyState)inputr2   c              	   C   sx   |  j d7  _ || _| }zJ|j| _| j  | j| }|j	d krR| 
|W S | ||j	W S W 5 || X d S Nr+   )match_callsr2   markreleaser   r/   r3   r   r(   s0matchATNexecATN)r   r8   r2   r;   dfar   r   r   matchX   s    


zLexerATNSimulator.matchc                 C   s4   | j   d| _d| _d| _ddlm} |j| _d S r*   )	r3   r   r/   r   r   r0   r-   r1   r2   )r   r-   r   r   r   r   g   s    
zLexerATNSimulator.reset)r8   c                 C   s   | j j| j }tjr2tdt| j d t|  | j}| ||}|j}d|_| 	|}|sl|| j
| j _| ||}tjrtdt| j
|    |S )NzmatchATN mode z start: FzDFA after matchATN: )r'   ZmodeToStartStater2   r$   debugprintstrcomputeStartStatehasSemanticContextaddDFAStater(   r=   r?   ZtoLexerString)r   r8   Z
startStateZold_modeZ
s0_closuresuppressEdgenextZpredictr   r   r   r>   o   s    
zLexerATNSimulator.matchATN)r8   ds0c                 C   s   t jrtdt|j  |jr.| | j|| |d}|}t jrRtdt|j | 	||}|d krt| 
|||}|| jkrq|tjkr| | |jr| | j|| |tjkrq|d}|}q<| | j||j|S )Nzstart state closure=r+   zexecATN loop starting closure:)r$   rB   rC   rD   configsisAcceptStatecaptureSimStater3   LAgetExistingTargetStatecomputeTargetStateERRORr   EOFconsumefailOrAccept)r   r8   rJ   tstargetr   r   r   r?      s,    





zLexerATNSimulator.execATN)rV   rU   c                 C   s^   |j d ks|| jk s|| jkr"d S |j || j  }tjrZ|d k	rZtdt|jdt|j |S )Nzreuse statezedge to)edgesMIN_DFA_EDGEMAX_DFA_EDGEr$   rB   rC   rD   stateNumber)r   rV   rU   rW   r   r   r   rO      s    z(LexerATNSimulator.getExistingTargetState)r8   rV   rU   c                 C   sP   t  }| ||j|| t|dkr@|js:| ||| j | jS | j|||dS )Nr   )cfgs)r   getReachableConfigSetrK   lenrF   
addDFAEdgerQ   )r   r8   rV   rU   reachr   r   r   rP      s    z$LexerATNSimulator.computeTargetState)r3   r8   r`   rU   c                 C   sj   | j jd k	r8|jj}| ||| j|j|j|j |jjS |t	j
krT|j| jkrTt	j
S t| j|| j|d S r   )r3   r    lexerActionExecutoracceptr/   r   r   r   
predictionr   rR   r   r&   )r   r3   r8   r`   rU   ra   r   r   r   rT      s    zLexerATNSimulator.failOrAccept)r8   closurer`   rU   c              
   C   s   t j}|D ]}|j|k}|r$|jr$q
tjrBtd| |dt| |j	j
D ]j}| ||}	|	d k	rJ|j}
|
d k	r|
|j| j }
|tjk}t|	|
|d}| ||||d|rJ|j}qJq
d S )NZtestingat)statera   configT)r   ZINVALID_ALT_NUMBERaltpassedThroughNonGreedyDecisionr$   rB   rC   getTokenNamerD   rf   transitionsgetReachableTargetra   ZfixOffsetBeforeMatchr   r/   r   rR   r   rd   )r   r8   rd   r`   rU   ZskipAltcfgcurrentAltReachedAcceptStatetransrW   ra   treatEofAsEpsilonrg   r   r   r   r]      s"    


z'LexerATNSimulator.getReachableConfigSet)r8   ra   r/   r   r   charPosc                 C   sL   t jrtd| || || _|| _|d k	rH| jd k	rH|| j|| d S )NACTION)r$   rB   rC   seekr   r   r&   Zexecute)r   r8   ra   r/   r   r   rq   r   r   r   rb     s    

zLexerATNSimulator.accept)ro   rU   c                 C   s*   ddl m} ||d|jr"|jS d S d S )Nr   r,   )r0   r-   matchesMAX_CHAR_VALUErW   )r   ro   rU   r-   r   r   r   rl   %  s    z$LexerATNSimulator.getReachableTarget)r8   pc              	   C   sX   t j}t }tdt|jD ]6}|j| j}t||d |d}| |||ddd q|S )Nr   r+   )rf   rh   contextF)	r   EMPTYr   ranger^   rk   rW   r   rd   )r   r8   rv   ZinitialContextrK   irW   cr   r   r   rE   ,  s    z#LexerATNSimulator.computeStartState)r8   rg   rK   rn   speculativerp   c              	   C   s  t jrtdt| d  t|jtr>t jrf| jd k	rXtd| jj|jj	 dt| ntdt| |j
d ksz|j
 r|j
d ks|j
 r|| dS |t|j|tjd d}|j
d k	r:|j
 s:tdt|j
D ]X}|j
|tjkr|j
|}| jj|j
| }	t|	||d}
| ||
||||}q|S |jjs`|rV|js`|| |jjD ]8}| ||||||}
|
d k	rh| ||
||||}qh|S )	Nzclosure()z
closure atz	rule stopzclosure at rule stopTrf   rg   rw   r   )r$   rB   rC   rD   
isinstancerf   r   r&   ZsymbolicNames	ruleIndexrw   hasEmptyPathisEmptyaddr   r   rx   ry   r^   ZgetReturnStateZEMPTY_RETURN_STATE	getParentr'   statesrd   ZepsilonOnlyTransitionsri   rk   getEpsilonTarget)r   r8   rg   rK   rn   r|   rp   rz   
newContextZreturnStater{   rU   r   r   r   rd   =  sB    
 

  


zLexerATNSimulator.closure)r8   rg   rU   rK   r|   rp   c                 C   st  d }|j tjkr6t|j|jj}t|j	||d}n:|j tj
krNtdn"|j tjkrtjrtdt|j d t|j  d|_| ||j|j|rt|j	|d}n|j tjkr|jd ks|j rt|j| jj|j }	t|j	||	d}nt|j	|d}nj|j tjkr$t|j	|d}nL|j tjtjtj fkrp|rpdd	l!m"}
 |#t$j%d|
j&rpt|j	|d}|S )
Nr~   z2Precedence predicates are not supported in lexers.z
EVAL rule :T)rf   rg   )rf   rg   ra   r   r,   )'ZserializationTyper   ZRULEr   createrw   ZfollowStater[   r   rW   
PRECEDENCEr   Z	PREDICATEr$   rB   rC   rD   r   	predIndexrF   evaluatePredicaterr   r   r   appendra   r'   ZlexerActionsactionIndexEPSILONATOMRANGEZSETr0   r-   rt   r   rR   ru   )r   r8   rg   rU   rK   r|   rp   r{   r   ra   r-   r   r   r   r   i  s6     z"LexerATNSimulator.getEpsilonTarget)r8   r   r   r|   c           	   	   C   s   | j d krdS |s"| j d ||S | j}| j}|j}| }z| | | j d ||W S || _|| _|| || X d S )NT)	r&   sempredr   r   r   r;   rs   r<   rS   )	r   r8   r   r   r|   ZsavedcolumnZ	savedLiner   markerr   r   r   r     s    


z#LexerATNSimulator.evaluatePredicate)settingsr8   r    c                 C   s"   |j |_ | j|_| j|_||_d S r   r   )r   r   r8   r    r   r   r   rM     s    z!LexerATNSimulator.captureSimState)from_tktor\   returnc                 C   s   |d kr.|d k	r.|j }d|_ | |}|r.|S || jk sB|| jkrF|S tjrttdt| d t| d t|  |j	d krd g| j| j d  |_	||j	|| j < |S )NFzEDGE z -> z upon r+   )
rF   rG   rY   rZ   r$   rB   rC   rD   chrrX   )r   r   r   r   r\   rH   r   r   r   r_     s    
(
zLexerATNSimulator.addDFAEdge)rK   r   c                 C   s   t |d}tdd |D d }|d k	rFd|_|j|_| jj|jj |_| j	| j
 }|j|d }|d k	rl|S |}t|j|_|d ||_||j|< |S )N)rK   c                 s   s   | ]}t |jtr|V  qd S r   )r   rf   r   ).0rm   r   r   r   	<genexpr>
  s      z0LexerATNSimulator.addDFAState.<locals>.<genexpr>T)r   rI   rL   ra   r'   ZruleToTokenTyperf   r   rc   r(   r2   r   getr^   r[   ZsetReadonlyrK   )r   rK   ZproposedZfirstConfigWithRuleStopStater@   ZexistingZnewStater   r   r   rG     s     


zLexerATNSimulator.addDFAState)r2   c                 C   s
   | j | S r   )r(   )r   r2   r   r   r   getDFA  s    zLexerATNSimulator.getDFAc                 C   s   | | j|jd S r9   )getTextr/   r   )r   r8   r   r   r   r   "  s    zLexerATNSimulator.getTextc                 C   sF   | d}|tdkr,|  jd7  _d| _n|  jd7  _|  d S )Nr+   
r   )rN   ordr   r   rS   )r   r8   ZcurCharr   r   r   rS   &  s    
zLexerATNSimulator.consume)rU   c                 C   s    |dkrdS dt | d S d S )Nr   rR   ')r   )r   rU   r   r   r   rj   /  s    zLexerATNSimulator.getTokenName)NN)0r!   r"   r#   rB   Z	dfa_debugrY   rZ   rQ   r:   r-   r   listr   r   r$   r7   r   intrA   r   r>   r   r?   rO   rP   r   r
   rT   r]   r   rb   r   rl   r   rE   r   boolrd   r   r   rM   r_   rG   r   r   rS   rj   __classcell__r   r   r4   r   r$   3   sF   E , X+	r$   i)"antlr4.PredictionContextr   r   r   antlr4.InputStreamr   antlr4.Tokenr   antlr4.atn.ATNr   Zantlr4.atn.ATNConfigr   Zantlr4.atn.ATNSimulatorr	   Zantlr4.atn.ATNConfigSetr
   r   Zantlr4.atn.ATNStater   r   Zantlr4.atn.LexerActionExecutorr   antlr4.atn.Transitionr   Zantlr4.dfa.DFAStater   antlr4.error.Errorsr   r   objectr   r-   r$   rQ   r   r   r   r   <module>   s*       