o
    9n0j&  ã                   @   s¸   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 d dlmZ 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mZmZ G dd„ deƒZdS )é    ©ÚDFA)ÚTokenStream)ÚLexer)ÚParser)ÚInterpreterRuleContextÚParserRuleContext)ÚToken)ÚATN)ÚStarLoopEntryStateÚATNStateÚLoopEndState)ÚParserATNSimulator)ÚPredictionContextCache)Ú
Transition)ÚRecognitionExceptionÚUnsupportedOperationExceptionÚFailedPredicateExceptionc                
       s†   e Zd ZdZdededededef
‡ fdd„Zd	e	fd
d„Z
dede	de	de	f‡ fdd„Zdd„ Zdefdd„Zdefdd„Z‡  ZS )ÚParserInterpreter)ÚgrammarFileNameÚatnÚ
tokenNamesÚ	ruleNamesÚdecisionToDFAÚsharedContextCacheÚ_parentContextStackÚpushRecursionContextStatesr   r   r   r   Úinputc                    s’   t ƒ  |¡ || _|| _|| _|| _dd„ |jD ƒ| _tƒ | _	t
ƒ | _tƒ | _|jD ]}t|tƒs2q*|jr<| j |j¡ q*t| || j| j	ƒ| _d S )Nc                 S   s   g | ]}t |ƒ‘qS © r   )Ú.0Ústater   r   ú_/home/wildlama/miniconda3/envs/lam_a2e/lib/python3.10/site-packages/antlr4/ParserInterpreter.pyÚ
<listcomp>/   s    z.ParserInterpreter.__init__.<locals>.<listcomp>)ÚsuperÚ__init__r   r   r   r   ZdecisionToStater   r   r   Úlistr   Úsetr   ÚstatesÚ
isinstancer   ZisPrecedenceDecisionÚaddÚstateNumberr   Ú_interp)Úselfr   r   r   r   r   r    ©Ú	__class__r   r!   r$   )   s    

€zParserInterpreter.__init__ÚstartRuleIndexc              
   C   s  | j j| }td tj|ƒ}|jr|  ||j|d¡ n|  ||j|¡ 	 |  	¡ }|j
tjkrSt| jƒdkrM|jrG| j}| j ¡ }|  |j¡ |S |  ¡  |S |  |¡ n5z|  |¡ W n- ty‡ } z!| j j|j j| _|| j_| j | |¡ | j | |¡ W Y d }~nd }~ww q#)Nr   )r   ÚruleToStartStater   r   ZINVALID_STATE_NUMBERÚisPrecedenceRuleÚenterRecursionRuler*   Ú	enterRuleÚgetATNStateZ	stateTypeZ	RULE_STOPÚlenÚ_ctxr   ÚpopÚunrollRecursionContextsÚaÚexitRuleÚvisitRuleStopStateÚ
visitStater   ZruleToStopStateÚ	ruleIndexr    Ú	exceptionÚ_errHandlerZreportErrorZrecover)r,   r/   ZstartRuleStartStateZrootContextÚpÚresultÚparentContextÚer   r   r!   Úparse=   s6   
€üîzParserInterpreter.parseÚlocalctxr    r=   Ú
precedencec                    s*   | j  | j|jf¡ tƒ  ||||¡ d S ©N)r   Úappendr6   ZinvokingStater#   r2   )r,   rE   r    r=   rF   r-   r   r!   r2   \   s   z$ParserInterpreter.enterRecursionRulec                 C   s   | j j| j S rG   )r   r'   r    )r,   r   r   r!   r4   `   s   zParserInterpreter.getATNStater@   c           
      C   s  d}t |jƒdkr| j | ¡ | j | j|j| j¡}nd}|j|d  }|j	}|t
jkrY| j|j rXt|jtƒsX| jd }t|d |d | jjƒ}|  || jj|j j| jj¡ n§|t
jkre|  |j¡ n›|t
jt
jt
jfv r‡| | j d¡tj t!j"¡s‚| j #| ¡ |  $¡  ny|t
j%kr‘|  $¡  no|t
j&kr¼|j}|j}t| j|j|ƒ}|j'r²|  (||j||j)¡ nN|  *||jj|¡ nD|t
j+krÐ|  ,| j|j|j-¡sÏt.| ƒ‚n0|t
j/krà|  0| j|j|j1¡ n |t
j2krü|  3| j|j)¡sûdt4|j)ƒ d }	t.| |	ƒ‚nt5dƒ‚|jj| _6d S )Nr   é   éÿÿÿÿzprecpred(_ctx, ú)z!Unrecognized ATN transition type.)7r5   Útransitionsr?   Úsyncr+   ZadaptivePredictÚ_inputZdecisionr6   ZserializationTyper   ZEPSILONr   r*   r(   Útargetr   r   r   r=   ZpushNewRecursionContextr   r0   ÚATOMÚmatchÚlabelÚRANGEZSETZNOT_SETÚmatchesZLAr	   ZMIN_USER_TOKEN_TYPEr   ZMAX_CHAR_VALUEZrecoverInlineZmatchWildcardZWILDCARDZRULEr1   r2   rF   r3   Z	PREDICATEZsempredZ	predIndexr   ZACTIONÚactionZactionIndexZ
PRECEDENCEZprecpredÚstrr   r    )
r,   r@   ÚedgeZ
transitionÚttÚtÚctxÚruleStartStater=   Úmsgr   r   r!   r<   c   sR   

€





ÿ


þzParserInterpreter.visitStatec                 C   s`   | j j|j }|jr| j ¡ }|  |j¡ |d | _n|  	¡  | j j
| j jd }|jj| _d S )NrI   r   )r   r0   r=   r1   r   r7   r8   r9   r    r:   r'   rL   ZfollowStater*   )r,   r@   r[   rB   ZruleTransitionr   r   r!   r;       s   
z$ParserInterpreter.visitRuleStopState)Ú__name__Ú
__module__Ú__qualname__Ú	__slots__rV   r%   r
   r   r$   ÚintrD   r   r2   r4   r   r<   r;   Ú__classcell__r   r   r-   r!   r   "   s    "=r   N)Zantlr4.dfa.DFAr   Zantlr4.BufferedTokenStreamr   Zantlr4.Lexerr   Zantlr4.Parserr   Zantlr4.ParserRuleContextr   r   Zantlr4.Tokenr	   Zantlr4.atn.ATNr
   Zantlr4.atn.ATNStater   r   r   Zantlr4.atn.ParserATNSimulatorr   Zantlr4.PredictionContextr   Zantlr4.atn.Transitionr   Zantlr4.error.Errorsr   r   r   r   r   r   r   r!   Ú<module>   s   