U
    F[f                     @   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                       st   e Zd Zeeeeed fddZedddZ	e
eeed fdd	Zd
d ZedddZedddZ  ZS )ParserInterpreter)grammarFileName
tokenNames	ruleNamesatninputc                    s   t  | || _|| _|| _|| _dd |jD | _t | _	t
 | _t | _|jD ]$}t|tsdqT|jrT| j|j qTt| || j| j	| _d S )Nc                 S   s   g | ]}t |qS  r   ).0stater   r   o/home/p21-0144/sympy/latex2sympy2solve-back-end/sympyEq/lib/python3.8/site-packages/antlr4/ParserInterpreter.py
<listcomp>*   s     z.ParserInterpreter.__init__.<locals>.<listcomp>)super__init__r   r   r   r   ZdecisionToStateZdecisionToDFAr   ZsharedContextCachelist_parentContextStacksetpushRecursionContextStates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r4| ||j|d n| ||j| | 	 }|j
tjkrt| jdkr|jr| j}| j }| |j |S |   |S | | qDz| | W qD tk
r } z:| j j|j j| _|| j_| j| | | j| | W 5 d }~X Y qDX qDd S )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   parse8   s.    
zParserInterpreter.parse)localctxr   r;   
precedencec                    s*   | j | j|jf t |||| d S N)r"   appendr4   ZinvokingStater   r0   )r*   rC   r   r;   rD   r+   r   r   r0   W   s    z$ParserInterpreter.enterRecursionRulec                 C   s   | j j| j S rE   )r   r%   r   )r*   r   r   r   r2   [   s    zParserInterpreter.getATNState)r>   c           
      C   s(  d}t |jdkr6| j|  | j| j|j| j}nd}|j|d  }|j	}|t
jkr| j|j rt|jts| jd }t|d |d | jj}| || jj|j j| jj nf|t
jkr| |j nL|t
jt
jt
jfkr|| jdtj t!j"s| j#|  | $  n|t
j%kr.| $  n|t
j&kr|j}|j}t| j|j|}|j'rt| (||j||j) n| *||jj| n|t
j+kr| ,| j|j|j-st.| nf|t
j/kr| 0| j|j|j1 nD|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.)7r3   transitionsr=   syncr)   ZadaptivePredict_inputZdecisionr4   ZserializationTyper   ZEPSILONr$   r(   r&   targetr   r"   r   r;   ZpushNewRecursionContextr   r.   ZATOMmatchlabelRANGEZSETZNOT_SETmatchesZLAr	   ZMIN_USER_TOKEN_TYPEr   ZMAX_CHAR_VALUEZrecoverInlineZmatchWildcardZWILDCARDZRULEr/   r0   rD   r1   Z	PREDICATEZsempredZ	predIndexr   ZACTIONactionZactionIndexZ
PRECEDENCEZprecpredstrr   r   )
r*   r>   ZedgeZ
transitiontttctxruleStartStater;   msgr   r   r   r:   ^   sL    

"


zParserInterpreter.visitStatec                 C   s`   | j j|j }|jr6| j }| |j |d | _n| 	  | j j
| j jd }|jj| _d S )NrG   r   )r   r.   r;   r/   r"   r5   r6   r7   r   r8   r%   rJ   ZfollowStater(   )r*   r>   rW   r@   ZruleTransitionr   r   r   r9      s    
z$ParserInterpreter.visitRuleStopState)__name__
__module____qualname__rS   r!   r
   r   r    intrB   r   r0   r2   r   r:   r9   __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   