a
    dcY                     @   s  d dl Z e jd dkr$d dlmZ n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 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 d dlmZmZ d dlmZ d dl m!Z!m"Z"m#Z# G dd de!Z$G dd deZ%dS )    N      )TextIO)TokenStream)TokenFactory)DefaultErrorStrategy)InputStream)
Recognizer)RuleContext)ParserRuleContext)Token)Lexer)ATNDeserializer)ATNDeserializationOptions)UnsupportedOperationExceptionRecognitionException)ParseTreePatternMatcher)ParseTreeListenerTerminalNode	ErrorNodec                   @   s8   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d ZdS )TraceListener_parserc                 C   s
   || _ d S N)r   )selfparser r   V/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/antlr4/Parser.py__init__   s    zTraceListener.__init__c                 C   s8   t d| jj|   d | jjdj | jjd d S )Nzenter   , LT(1)=r   fileprintr   	ruleNamesgetRuleIndex_inputLTtext_outputr   ctxr   r   r   enterEveryRule   s    zTraceListener.enterEveryRulec                 C   s6   t dt|j d | jj| jj   | jjd d S )Nzconsume z rule r   )r"   strsymbolr   r#   _ctxr$   r(   r   noder   r   r   visitTerminal"   s    zTraceListener.visitTerminalc                 C   s   d S r   r   r/   r   r   r   visitErrorNode&   s    zTraceListener.visitErrorNodec                 C   s8   t d| jj|   d | jjdj | jjd d S )Nzexit    r   r   r   r!   r)   r   r   r   exitEveryRule*   s    zTraceListener.exitEveryRuleN)	__name__
__module____qualname__	__slots__r   r+   r1   r2   r3   r   r   r   r   r      s   r   c                       s  e Zd ZdZe Zejfee	d fddZ
dd Zeddd	Zd
d Zdd ZedddZedddZdd Zdd Zdd Zdd Zdd ZedddZd d! Zdieeed#d$d%Zd&d' Zed(d)d*Z d+d, Z!ed(d-d.Z"d/d0 Z#djee$e%d1d2d3Z&d4d5 Z'd6d7 Z(e)eed8d9d:Z*d;d< Z+e)ed=d>d?Z,d@dA Z-e)eeedBdCdDZ.e)eed8dEdFZ/e)dGdHdIZ0edJdKdLZ1e2edMdNdOZ3edPdQdRZ4edSdTdUZ5dVdW Z6dXdY Z7edZd[d\Z8dke2d]d^d_Z9d`da Z:dbdc Z;ddde Z<e=dfdgdhZ>  Z?S )lParser)	r%   r(   _errHandler_precedenceStackr.   buildParseTrees_tracer_parseListeners_syntaxErrors)inputoutputc                    s^   t    d | _|| _t | _t | _| jd d | _	d| _
d | _d | _d| _| | d S )Nr   T)superr   r%   r(   r   r9   listr:   appendr.   r;   r<   r=   r>   setInputStream)r   r?   r@   	__class__r   r   r   <   s    
zParser.__init__c                 C   sd   | j d ur| j d | j|  d | _d| _| d t | _| j	d | j
d ur`| j
  d S )Nr   F)r%   seekr9   resetr.   r>   setTracerB   r:   rC   _interpr   r   r   r   rH   [   s    


zParser.reset)ttypec                 C   sT   |   }|j|kr(| j|  |   n(| j| }| jrP|jdkrP| j	| |S N
getCurrentTokentyper9   ZreportMatchconsumeZrecoverInliner;   Z
tokenIndexr.   addErrorNode)r   rL   tr   r   r   matchx   s    

zParser.matchc                 C   sT   |   }|jdkr(| j|  |   n(| j| }| jrP|jdkrP| j	| |S Nr   rN   rO   )r   rT   r   r   r   matchWildcard   s    

zParser.matchWildcardc                 C   s   | j d u rt S | j S r   )r=   rB   rK   r   r   r   getParseListeners   s    zParser.getParseListeners)listenerc                 C   s0   |d u rt d| jd u r g | _| j| d S )NrY   )ReferenceErrorr=   rC   r   rY   r   r   r   addParseListener   s
    
zParser.addParseListenerc                 C   s.   | j d ur*| j | t| j dkr*d | _ d S Nr   )r=   removelenr[   r   r   r   removeParseListener   s    
zParser.removeParseListenerc                 C   s
   d | _ d S r   )r=   rK   r   r   r   removeParseListeners   s    zParser.removeParseListenersc                 C   s2   | j d ur.| j D ]}|| j | j| qd S r   )r=   r+   r.   	enterRuler[   r   r   r   triggerEnterRuleEvent   s    

zParser.triggerEnterRuleEventc                 C   s6   | j d ur2t| j D ]}| j| || j qd S r   )r=   reversedr.   exitRuler3   r[   r   r   r   triggerExitRuleEvent   s    
zParser.triggerExitRuleEventc                 C   s   | j S r   )r>   rK   r   r   r   getNumberOfSyntaxErrors   s    zParser.getNumberOfSyntaxErrorsc                 C   s
   | j jjS r   r%   tokenSource_factoryrK   r   r   r   getTokenFactory   s    zParser.getTokenFactory)factoryc                 C   s   || j j_d S r   rh   )r   rl   r   r   r   setTokenFactory   s    zParser.setTokenFactoryc                 C   sV   |   }|d u rtd| j|d }|d u rRt }d|_t||}|| j|< |S )NzDThe current parser does not support an ATN with bypass alternatives.T)ZgetSerializedATNr   bypassAltsAtnCachegetr   ZgenerateRuleBypassTransitionsr   Zdeserialize)r   ZserializedAtnresultZdeserializationOptionsr   r   r   getATNWithBypassAlts  s    
zParser.getATNWithBypassAltsN)patternpatternRuleIndexlexerc                 C   sR   |d u r,|   d ur,|   j}t|tr,|}|d u r<tdt|| }|||S )Nz$Parser can't discover a lexer to use)getTokenStreamri   
isinstancer   r   r   compile)r   rr   rs   rt   ri   mr   r   r   compileParseTreePattern  s    


zParser.compileParseTreePatternc                 C   s   |   S r   )ru   rK   r   r   r   getInputStream&  s    zParser.getInputStream)r?   c                 C   s   |  | d S r   )setTokenStreamr   r?   r   r   r   rD   )  s    zParser.setInputStreamc                 C   s   | j S r   )r%   rK   r   r   r   ru   ,  s    zParser.getTokenStreamc                 C   s   d | _ |   || _ d S r   )r%   rH   r|   r   r   r   r{   0  s    zParser.setTokenStreamc                 C   s   | j dS Nr   )r%   r&   rK   r   r   r   rP   8  s    zParser.getCurrentToken)msgoffendingTokenec                 C   sJ   |d u r|   }|  jd7  _|j}|j}|  }|| ||||| d S r}   )rP   r>   linecolumnZgetErrorListenerDispatchZsyntaxError)r   r~   r   r   r   r   rY   r   r   r   notifyErrorListeners;  s    zParser.notifyErrorListenersc                 C   s   |   }|jtjkr |    | jd uo6t| jdk}| jsB|r| j	
| r\| j|}n| j|}|r| jD ].}t|tr|| qrt|trr|| qr|S r]   )rP   rQ   r   EOFrz   rR   r=   r_   r;   r9   ZinErrorRecoveryModer.   rS   ZaddTokenNoderv   r   r2   r   r1   )r   oZhasListenerr0   rY   r   r   r   rR   Y  s    



zParser.consumec                 C   s    | j jd ur| j j| j  d S r   )r.   	parentCtxaddChildrK   r   r   r   addContextToParseTreek  s    zParser.addContextToParseTree)localctxstate	ruleIndexc                 C   s@   || _ || _| jd| j_| jr*|   | jd ur<|   d S r}   )	r   r.   r%   r&   startr;   r   r=   rc   )r   r   r   r   r   r   r   rb   s  s    
zParser.enterRulec                 C   s:   | j d| j_| jd ur"|   | jj| _| jj| _d S rM   )	r%   r&   r.   stopr=   rf   invokingStater   r   rK   r   r   r   re   |  s
    

zParser.exitRule)r   altNumc                 C   sJ   | | | jr@| j|kr@| jjd ur@| jj  | jj| || _d S r   )ZsetAltNumberr;   r.   r   ZremoveLastChildr   )r   r   r   r   r   r   enterOuterAlt  s    
zParser.enterOuterAltc                 C   s    t | jdkrdS | jd S d S rV   )r_   r:   rK   r   r   r   getPrecedence  s    zParser.getPrecedence)r   r   r   
precedencec                 C   s>   || _ | j| || _| jd| j_| jd ur:|   d S r}   )	r   r:   rC   r.   r%   r&   r   r=   rc   )r   r   r   r   r   r   r   r   enterRecursionRule  s    
zParser.enterRecursionRulec                 C   sX   | j }||_||_| jd|_|| _ |j| j _| jrB| j | | j	d urT| 
  d S rM   )r.   r   r   r%   r&   r   r   r;   r   r=   rc   )r   r   r   r   previousr   r   r   pushNewRecursionContext  s    

zParser.pushNewRecursionContext)r   c                 C   sr   | j   | jd| j_| j}| jd urJ| j|urP|   | jj| _q*n|| _||_| j	rn|d urn|
| d S rM   )r:   popr%   r&   r.   r   r=   rf   r   r;   r   )r   r   ZretCtxr   r   r   unrollRecursionContexts  s    


zParser.unrollRecursionContexts)r   c                 C   s*   | j }|d ur&| |kr|S |j}qd S r   )r.   r$   r   )r   r   r*   r   r   r   getInvokingContext  s    zParser.getInvokingContext)r   r   c                 C   s   || j d kS rM   )r:   )r   r   r   r   r   r   precpred  s    zParser.precpred)contextc                 C   s   dS )NFr   )r   r   r   r   r   	inContext  s    zParser.inContext)r-   c                 C   s   | j j}| j}|j| j }||}||v r0dS tj|vr>dS |d ur|jdkrtj|v r|j|j }|j	d }||j
}||v rdS |j}q>tj|v r|tjkrdS dS d S )NTFr   )rJ   atnr.   statesr   
nextTokensr   ZEPSILONr   ZtransitionsZfollowStater   r   )r   r-   r   r*   sZ	followingr   rtr   r   r   isExpectedToken  s$    


zParser.isExpectedTokenc                 C   s   | j j| j| jS r   )rJ   r   getExpectedTokensr   r.   rK   r   r   r   r      s    zParser.getExpectedTokensc                 C   s   | j j}|j| j }||S r   )rJ   r   r   r   r   )r   r   r   r   r   r   "getExpectedTokensWithinCurrentRule  s    z)Parser.getExpectedTokensWithinCurrentRule)ruleNamec                 C   s$   |   |d }|d ur|S dS d S rM   )ZgetRuleIndexMapro   )r   r   r   r   r   r   r$   	  s    zParser.getRuleIndex)pc                 C   sT   |d u r| j }t }|d urP| }|dk r8|d n|| j|  |j}q|S )Nr   zn/a)r.   rB   r$   rC   r#   r   )r   r   stackr   r   r   r   getRuleInvocationStack  s    zParser.getRuleInvocationStackc                 C   s   dd | j jD S )Nc                 S   s   g | ]}t |qS r   )r,   ).0dfar   r   r   
<listcomp>'      z(Parser.getDFAStrings.<locals>.<listcomp>)rJ   decisionToDFArK   r   r   r   getDFAStrings&  s    zParser.getDFAStringsc                 C   s   d}t dt| jjD ]j}| jj| }t|jdkr|rDt| jd tdt|j d | jd t|	| j
| jd| jd d}qd S )	NFr   r   z	Decision : )endr    T)ranger_   rJ   r   r   r"   r(   r,   ZdecisiontoStringZliteralNamesZsymbolicNames)r   ZseenOneir   r   r   r   dumpDFA*  s    zParser.dumpDFAc                 C   s   | j jS r   )r%   Z
sourceNamerK   r   r   r   getSourceName6  s    zParser.getSourceName)tracec                 C   sH   |s|  | j d | _n,| jd ur.|  | j t| | _| | j d S r   )r`   r<   r   r\   )r   r   r   r   r   rI   <  s    

zParser.setTrace)N)NN)N)@r4   r5   r6   r7   dictrn   sysstdoutr   r   r   rH   intrU   rW   rX   r   r\   r`   ra   rc   rf   rg   rk   r   rm   rq   r,   r   ry   rz   r   rD   ru   r{   rP   r   r   r   rR   r   r   rb   re   r   r   r   r   r   r   r
   r   r   r   r   r   r$   r   r   r   r   boolrI   __classcell__r   r   rE   r   r8   /   sX   
			r8   )&r   version_infotypingr   Z	typing.ioZantlr4.BufferedTokenStreamr   Zantlr4.CommonTokenFactoryr   Zantlr4.error.ErrorStrategyr   Zantlr4.InputStreamr   Zantlr4.Recognizerr	   Zantlr4.RuleContextr
   Zantlr4.ParserRuleContextr   Zantlr4.Tokenr   Zantlr4.Lexerr   Zantlr4.atn.ATNDeserializerr   Z$antlr4.atn.ATNDeserializationOptionsr   Zantlr4.error.Errorsr   r   Z#antlr4.tree.ParseTreePatternMatcherr   Zantlr4.tree.Treer   r   r   r   r8   r   r   r   r   <module>   s&   