o
    ٷiyc                     @   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Zdd Zdd ZdS )SimStateindexlinecolumndfaStatec                 C   s   |    d S N)resetself r   P/home/ubuntu/.local/lib/python3.10/site-packages/antlr4/atn/LexerATNSimulator.py__init__'   s   zSimState.__init__c                 C   s   d| _ d| _d| _d | _d S )Nr   r   r   r   r   r   r   *   s   
zSimState.resetN)__name__
__module____qualname__	__slots__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de	de
ded	ef fd
dZdefddZdedefddZdd ZdefddZdedefddZdedefddZdededefddZd eded!edefd"d#Zded$ed!edefd%d&Zded'ed(ed)ed*ed+efd,d-Zd.edefd/d0Z ded1e!fd2d3Z"ded4e#d5ed6e$d7e$d8e$fd9d:Z%ded4e#ded5ed7e$d8e$fd;d<Z&ded=ed>ed7e$fd?d@Z'dAededBefdCdDZ(dVdEedFedGedHedIef
dJdKZ)d5edIefdLdMZ*defdNdOZ+defdPdQZ,defdRdSZ-defdTdUZ.  Z/S )WLexerATNSimulator)	decisionToDFArecog
startIndexr   r   modeDEFAULT_MODEMAX_CHAR_VALUE
prevAcceptFr      Nr'   atnr&   sharedContextCachec                    s\   t  || || _|| _d| _d| _d| _ddlm} |j	| _
|j	| _	|j| _t | _d S )Nr       r   )Lexer)superr   r&   r'   r(   r   r   antlr4.Lexerr1   r*   r)   r+   r   r,   )r   r'   r.   r&   r/   r1   	__class__r   r   r   B   s   zLexerATNSimulator.__init__	simulatorc                 C   s$   |j | _ |j| _|j| _|j| _d S r   )r   r   r)   r(   )r   r6   r   r   r   	copyStateX   s   zLexerATNSimulator.copyStateinputr)   c              	   C   sr   || _ | }z+|j| _| j  | j| }|jd u r&| |W |	| S | 
||jW |	| S |	| w r   )r)   markr   r(   r,   r   r&   s0matchATNreleaseexecATN)r   r8   r)   r9   dfar   r   r   match^   s   



zLexerATNSimulator.matchc                 C   s(   | j   d| _d| _d| _| j| _d S )Nr    r0   r   )r,   r   r(   r   r   r*   r)   r   r   r   r   r   l   s
   
zLexerATNSimulator.resetc                 C   s   | j j| j }tjrtdt| j d t|  | j}| ||}|j}d|_| 	|}|s6|| j
| j _| ||}tjrLtdt| j
|    |S )NzmatchATN mode z start: FzDFA after matchATN: )r.   modeToStartStater)   r%   debugprintstrcomputeStartStatehasSemanticContextaddDFAStater&   r:   r=   toLexerString)r   r8   
startStateold_mode
s0_closuresuppressEdgenextpredictr   r   r   r;   s   s   
zLexerATNSimulator.matchATNds0c                 C   s   t jrtdt|j  |jr| | j|| |d}|}	 t jr*tdt|j | 	||}|d u r;| 
|||}|| jkrAn#|tjkrK| | |jr\| | j|| |tjkr\n|d}|}q| | j||j|S )Nzstart state closure=r0   TzexecATN loop starting closure:)r%   rA   rB   rC   configsisAcceptStatecaptureSimStater,   LAgetExistingTargetStatecomputeTargetStateERRORr   EOFconsumefailOrAccept)r   r8   rN   tstargetr   r   r   r=      s0   





/zLexerATNSimulator.execATNrZ   rY   c                 C   s^   |j d u s|| jk s|| jkrd S |j || j  }tjr-|d ur-tdt|jdt|j |S )Nzreuse statezedge to)edgesMIN_DFA_EDGEMAX_DFA_EDGEr%   rA   rB   rC   stateNumber)r   rZ   rY   r[   r   r   r   rS      s   z(LexerATNSimulator.getExistingTargetStatec                 C   sP   t  }| ||j|| t|dkr |js| ||| j | jS | j|||dS )Nr   )cfgs)r   getReachableConfigSetrO   lenrE   
addDFAEdgerU   )r   r8   rZ   rY   reachr   r   r   rT      s   z$LexerATNSimulator.computeTargetStater,   rd   c                 C   sf   | j jd ur|jj}| ||| j|j|j|j |jjS |t	j
kr*|j| jkr*t	j
S t| j|| j|r   )r,   r   lexerActionExecutoracceptr(   r   r   r   
predictionr   rV   r   r'   )r   r,   r8   rd   rY   re   r   r   r   rX      s   zLexerATNSimulator.failOrAcceptclosurec              
   C   s   t j}|D ]V}|j|k}|r|jrqtjr!td| |dt| |j	j
D ]5}| ||}	|	d urZ|j}
|
d urA|
|j| j }
|tjk}t|	|
|d}| ||||d|rZ|j}q%qd S )Ntestingat)statere   configT)r   INVALID_ALT_NUMBERaltpassedThroughNonGreedyDecisionr%   rA   rB   getTokenNamerC   rk   transitionsgetReachableTargetre   fixOffsetBeforeMatchr   r(   r   rV   r   rh   )r   r8   rh   rd   rY   skipAltcfgcurrentAltReachedAcceptStatetransr[   re   treatEofAsEpsilonrl   r   r   r   ra     s(   


z'LexerATNSimulator.getReachableConfigSetre   r(   r   r   charPosc                 C   sT   t jrtd| || || _|| _|d ur&| jd ur(|| j|| d S d S d S )NACTION)r%   rA   rB   seekr   r   r'   execute)r   r8   re   r(   r   r   ry   r   r   r   rf     s   

zLexerATNSimulator.acceptrw   c                 C   s   | |d| jr|jS d S )Nr   )matchesr+   r[   )r   rw   rY   r   r   r   rr   )  s   z$LexerATNSimulator.getReachableTargetpc              	   C   sX   t j}t }tdt|jD ]}|j| j}t||d |d}| |||ddd q|S )Nr   r0   )rk   rn   contextF)	r   EMPTYr   rangerb   rq   r[   r   rh   )r   r8   r~   initialContextrO   ir[   cr   r   r   rD   /  s   z#LexerATNSimulator.computeStartStaterl   rO   rv   speculativerx   c              	   C   s  t jrtdt| d  t|jtrt jr2| jd ur+td| jj|jj	 dt| ntdt| |j
d u s<|j
 r[|j
d u sF|j
 rM|| dS |t|j|tjd d}|j
d ur|j
 stdt|j
D ],}|j
|tjkr|j
|}| jj|j
| }	t|	||d}
| ||
||||}qm|S |jjs|r|js|| |jjD ]}| ||||||}
|
d ur| ||
||||}q|S )	Nzclosure()z
closure atz	rule stopzclosure at rule stopTrk   rl   r   r   )r%   rA   rB   rC   
isinstancerk   r   r'   symbolicNames	ruleIndexr   hasEmptyPathisEmptyaddr   r   r   r   rb   getReturnStateEMPTY_RETURN_STATE	getParentr.   statesrh   epsilonOnlyTransitionsro   rq   getEpsilonTarget)r   r8   rl   rO   rv   r   rx   r   
newContextreturnStater   rY   r   r   r   rh   @  sB   
 



zLexerATNSimulator.closurec           
      C   sb  d }|j tjkrt|j|jj}t|j	||d}|S |j tj
kr%td|j tjkrTtjr>tdt|j d t|j  d|_| ||j|j|rRt|j	|d}|S |j tjkr|jd u sd|j rzt|j| jj|j }	t|j	||	d}|S t|j	|d}|S |j tjkrt|j	|d}|S |j tjtjtj fv r|r|!t"j#d| j$rt|j	|d}|S )	Nr   z2Precedence predicates are not supported in lexers.z
EVAL rule :T)rk   rl   )rk   rl   re   r   )%serializationTyper   RULEr   creater   followStater_   r   r[   
PRECEDENCEr   	PREDICATEr%   rA   rB   rC   r   	predIndexrE   evaluatePredicaterz   r   r   appendre   r.   lexerActionsactionIndexEPSILONATOMRANGESETr}   r   rV   r+   )
r   r8   rl   rY   rO   r   rx   r   r   re   r   r   r   r   l  s>   <  
z"LexerATNSimulator.getEpsilonTargetr   r   c           	   	   C   s   | j d u rdS |s| j d ||S | j}| j}|j}| }z| | | j d ||W || _|| _|| || S || _|| _|| || w )NT)	r'   sempredr   r   r   r9   rW   r{   r<   )	r   r8   r   r   r   savedcolumn	savedLiner   markerr   r   r   r     s&   



z#LexerATNSimulator.evaluatePredicatesettingsr   c                 C   s"   |j |_ | j|_| j|_||_d S r   r   )r   r   r8   r   r   r   r   rQ     s   
z!LexerATNSimulator.captureSimStatefrom_tktor`   returnc                 C   s   |d u r|d ur|j }d|_ | |}|r|S || jk s!|| jkr#|S tjr:tdt| d t| d t|  |j	d u rKd g| j| j d  |_	||j	|| j < |S )NFzEDGE z -> z upon r0   )
rE   rF   r]   r^   r%   rA   rB   rC   chrr\   )r   r   r   r   r`   rK   r   r   r   rc     s   
(
zLexerATNSimulator.addDFAEdgec                 C   s   t |d}tdd |D d }|d ur#d|_|j|_| jj|jj |_| j	| j
 }|j|d }|d ur6|S |}t|j|_|d ||_||j|< |S )N)rO   c                 s   s     | ]}t |jtr|V  qd S r   )r   rk   r   ).0ru   r   r   r   	<genexpr>  s    z0LexerATNSimulator.addDFAState.<locals>.<genexpr>T)r   rL   rP   re   r.   ruleToTokenTyperk   r   rg   r&   r)   r   getrb   r_   setReadonlyrO   )r   rO   proposedfirstConfigWithRuleStopStater>   existingnewStater   r   r   rF   	  s    


zLexerATNSimulator.addDFAStatec                 C   s
   | j | S r   )r&   )r   r)   r   r   r   getDFA   s   
zLexerATNSimulator.getDFAc                 C   s   | | j|jd S )Nr0   )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 )Nr0   
r   )rR   ordr   r   rW   )r   r8   curCharr   r   r   rW   (  s   
zLexerATNSimulator.consumec                 C   s   |dkrdS dt | d S )Nr    rV   ')r   )r   rY   r   r   r   rp   1  s   zLexerATNSimulator.getTokenName)NN)0r!   r"   r#   r$   rA   	dfa_debugr]   r^   rU   r1   r   listr   r   r%   r7   r   intr?   r   r;   r   r=   rS   rT   r   r
   rX   ra   r   rf   r   rr   r   rD   r   boolrh   r   r   rQ   rc   rF   r   r   rW   rp   __classcell__r   r   r4   r   r%   4   sL    E"
,
W +	r%   i)"antlr4.PredictionContextr   r   r   antlr4.InputStreamr   antlr4.Tokenr   antlr4.atn.ATNr   antlr4.atn.ATNConfigr   antlr4.atn.ATNSimulatorr	   antlr4.atn.ATNConfigSetr
   r   antlr4.atn.ATNStater   r   antlr4.atn.LexerActionExecutorr   antlr4.atn.Transitionr   antlr4.dfa.DFAStater   antlr4.error.Errorsr   r   objectr   r1   r%   rU   r   r   r   r   <module>   s,       