o
    ÃÚ·i&  ã                   @   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   úN/home/ubuntu/vllm_env/lib/python3.10/site-packages/antlr4/ParserInterpreter.pyÚ
<listcomp>/   s    z.ParserInterpreter.__init__.<locals>.<listcomp>)ÚsuperÚ__init__r   r   r   r   ÚdecisionToStater   r   r   Úlistr   Úsetr   ÚstatesÚ
isinstancer   Ú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   ÚINVALID_STATE_NUMBERÚisPrecedenceRuleÚenterRecursionRuler,   Ú	enterRuleÚgetATNStateÚ	stateTypeÚ	RULE_STOPÚlenÚ_ctxr   ÚpopÚunrollRecursionContextsÚaÚexitRuleÚvisitRuleStopStateÚ
visitStater   ÚruleToStopStateÚ	ruleIndexr    Ú	exceptionÚ_errHandlerÚreportErrorÚrecover)r.   r1   ÚstartRuleStartStateÚrootContextÚpÚresultÚparentContextÚer   r   r!   Úparse=   s6   
€üîzParserInterpreter.parseÚlocalctxr    rC   Ú
precedencec                    s*   | j  | j|jf¡ tƒ  ||||¡ d S ©N)r   Úappendr;   ÚinvokingStater#   r5   )r.   rO   r    rC   rP   r/   r   r!   r5   \   s   z$ParserInterpreter.enterRecursionRulec                 C   s   | j j| j S rQ   )r   r(   r    )r.   r   r   r!   r7   `   s   zParserInterpreter.getATNStaterJ   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.)7r:   ÚtransitionsrE   Úsyncr-   ÚadaptivePredictÚ_inputÚdecisionr;   ÚserializationTyper   ÚEPSILONr   r,   r)   Útargetr   r   r   rC   ÚpushNewRecursionContextr   r2   ÚATOMÚmatchÚlabelÚRANGEÚSETÚNOT_SETÚmatchesÚLAr	   ÚMIN_USER_TOKEN_TYPEr   ÚMAX_CHAR_VALUEÚrecoverInlineÚmatchWildcardÚWILDCARDÚRULEr4   r5   rP   r6   Ú	PREDICATEÚsempredÚ	predIndexr   ÚACTIONÚactionÚactionIndexÚ
PRECEDENCEÚprecpredÚstrr   r    )
r.   rJ   ÚedgeÚ
transitionÚttÚtÚctxÚruleStartStaterC   Úmsgr   r   r!   rA   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 )NrT   r   )r   r2   rC   r4   r   r<   r=   r>   r    r?   r(   rW   ÚfollowStater,   )r.   rJ   r|   rL   ÚruleTransitionr   r   r!   r@       s   
z$ParserInterpreter.visitRuleStopState)Ú__name__Ú
__module__Ú__qualname__Ú	__slots__rv   r&   r
   r   r$   ÚintrN   r   r5   r7   r   rA   r@   Ú__classcell__r   r   r/   r!   r   "   s    "=r   N)Úantlr4.dfa.DFAr   Úantlr4.BufferedTokenStreamr   Úantlr4.Lexerr   Úantlr4.Parserr   Úantlr4.ParserRuleContextr   r   Úantlr4.Tokenr	   Úantlr4.atn.ATNr
   Úantlr4.atn.ATNStater   r   r   Úantlr4.atn.ParserATNSimulatorr   Úantlr4.PredictionContextr   Úantlr4.atn.Transitionr   Úantlr4.error.Errorsr   r   r   r   r   r   r   r!   Ú<module>   s   