U
    (#\-                     @   s0  d dl mZmZ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 d dlmZ d d	lmZ d d
lmZ d dlmZ dd ZG dd deZG dd deZG dd deZG dd deZG dd deZ G dd deZ!G dd deZ"G dd deZ#G dd deZ$d S )!    )CommonTokenStreamDFAPredictionContextCacheLexerLexerATNSimulator)InputStream)Parser)RuleContext)Token)ATNDeserializer)ErrorListener)LexerNoViableAltException)	ParseTree)Trees)StringIOc               
   C   s  t  } | d | d | d | d | d | d | d | d | d	 | d
 | d | d | d | d | d | d | d | d | d | d | d | d |  W  5 Q R  S Q R X d S )Nu   а훑舆괭䐗껱趀ꫝ
z4						z				z
"z(
			.
			1		z	/
		
u   2;aa¹¹̂ͱ⁁⁂C\cu   |ÂØÚøú́ͲͿ΁u    ‎‏⁲↑Ⰲ⿱〃u   車﷑ﷲ￿4z	z	z')+1z11z,#
z "z  !!#" #$z$%(&(	'%'&z()*	*+/),.z-,.1/0/-02z1/23)3 'z/)r   writegetvalue)buf r   i/home/p21-0144/sympy/latex2sympy2solve-back-end/sympyEq/lib/python3.8/site-packages/antlr4/xpath/XPath.pyserializedATN?   s0    





















r   c                	       s   e Zd Ze e Zdd eejD Z	dZ
dZdZdZdZdZd	Zd
ZdgZdddddgZdddddddddg	ZddddddddgZdZd% fdd	Zeeedd d!Zeed"d#d$Z  ZS )&
XPathLexerc                 C   s   g | ]\}}t ||qS r   )r   ).0iZdsr   r   r   
<listcomp>^   s     zXPathLexer.<listcomp>                        DEFAULT_MODEz	<INVALID>z'//'z'/'z'*'z'!'	TOKEN_REFRULE_REFANYWHEREROOTWILDCARDBANGIDSTRINGZNameCharZNameStartCharzXPathLexer.g4Nc                    s<   t  | | d t| | j| jt | _d | _d | _	d S )Nz4.7.2)
super__init__ZcheckVersionr   atndecisionsToDFAr   Z_interp_actionsZ_predicates)selfinput	__class__r   r   r-   x   s
    
zXPathLexer.__init__)localctx	ruleIndexactionIndexc                 C   sV   | j d kr t }| j|d< || _ | j |d }|d k	rB||| ntdt| d S )Nr   zNo registered action for:)r0   dict	ID_actionget	Exceptionstr)r1   r5   r6   r7   Zactions_actionr   r   r   action   s    

zXPathLexer.action)r5   r7   c                 C   s0   |dkr,| j d }| r$tj| _ntj| _d S )Nr   )textisupperr   r$   typer%   )r1   r5   r7   charr   r   r   r9      s
    

zXPathLexer.ID_action)N)__name__
__module____qualname__r   Zdeserializer   r.   	enumerateZdecisionToStater/   r$   r%   r&   r'   r(   r)   r*   r+   Z	modeNamesZliteralNamesZsymbolicNamesZ	ruleNamesZgrammarFileNamer-   r	   intr>   r9   __classcell__r   r   r3   r   r   Z   sF             r   c                   @   sf   e Zd ZdZdZeedddZedddZe	e
d	d
dZeeeedddZedddZdS )XPath*!)parserpathc                 C   s   || _ || _| || _d S N)rL   rM   splitelements)r1   rL   rM   r   r   r   r-      s    zXPath.__init__)rM   c              
   C   s  t |}t|}dd }||_|  |t  t|}z|  W nL tk
r } z.|	 }dt
| d | d }t||W 5 d }~X Y nX | }	t }
t|	}d}||k r|	| }d }|jtjtjfkr<|jtjk}|d7 }|	| }|jtjk}|r|d7 }|	| }| ||}||_|
| |d7 }q|jtjtjtjfkrp|
| |d |d7 }q|jtjkrqqtd	t
| q|
S )
Nc                 S   s   |d S rN   r   )r1   er   r   r   recover   s    zXPath.split.<locals>.recoverz&Invalid tokens or characters at index z
 in path ''r   r   FzUnknown path element )r   r   rR   ZremoveErrorListenersZaddErrorListenerr   r   fillr   Z	getColumnr<   r;   Z	getTokenslistlenrA   r'   r&   r)   getXPathElementinvertappendr$   r%   r(   r
   EOF)r1   rM   r2   ZlexerrR   ZtokenStreamrQ   posmsgtokensrP   nr   elnextanywhererX   ZpathElementr   r   r   rO      sN    



zXPath.split)	wordTokenra   c                 C   s   |j tjkrtd|j}| j|}| j|}|j tj	krN|rHt
 S t S |j tjtjfkr|tjkrt|d t|j d |rt||S t||S |dkrt|d t|  d |rt||S t||S d S )Nz#Missing path element at end of pathz
 at index z isn't a valid token namez isn't a valid rule name)rA   r
   rZ   r;   r?   rL   ZgetTokenTypeZgetRuleIndexr   r(   XPathWildcardAnywhereElementXPathWildcardElementr$   r+   ZINVALID_TYPEr<   Z
startIndexXPathTokenAnywhereElementXPathTokenElementZgetStartIndexXPathRuleAnywhereElementXPathRuleElement)r1   rb   ra   wordZttyper6   r   r   r   rW      s    
zXPath.getXPathElement)treexpathrL   c                 C   s   t ||}|| S rN   )rI   evaluate)rk   rl   rL   pr   r   r   findAll   s    
zXPath.findAlltc                 C   sp   t  }|g|_|g}tdt| jD ]F}t }|D ]*}t|jdkr2| j| |}||O }q2|d7 }|}q$|S )Nr   r   )ParserRuleContextchildrenrangerV   rP   setrm   )r1   rq   Z	dummyRootZworkr   r`   nodeZmatchingr   r   r   rm      s    
zXPath.evaluateN)rC   rD   rE   r(   ZNOTr   r<   r-   rO   r
   boolrW   staticmethodr   ro   rm   r   r   r   r   rI      s   5	rI   c                   @   s"   e Zd ZedddZdd ZdS )XPathElement)nodeNamec                 C   s   || _ d| _d S )NF)rz   rX   )r1   rz   r   r   r   r-     s    zXPathElement.__init__c                 C   s&   t | jd | jrdnd | j d S )N[rK    ])rA   rC   rX   rz   r1   r   r   r   __str__  s    zXPathElement.__str__N)rC   rD   rE   r<   r-   r   r   r   r   r   ry   	  s   ry   c                       s2   e Zd Zeed fddZedddZ  ZS )rh   ruleNamer6   c                    s   t  | || _d S rN   r,   r-   r6   r1   r   r6   r3   r   r   r-     s    z!XPathRuleAnywhereElement.__init__rp   c                 C   s   t || jS rN   )r   ZfindAllRuleNodesr6   r1   rq   r   r   r   rm     s    z!XPathRuleAnywhereElement.evaluate	rC   rD   rE   r<   rG   r-   r   rm   rH   r   r   r3   r   rh     s   rh   c                       s2   e Zd Zeed fddZedddZ  ZS )ri   r   c                    s   t  | || _d S rN   r   r   r3   r   r   r-   #  s    zXPathRuleElement.__init__rp   c                    s    fddt |D S )Nc                    s.   g | ]&}t |tr|j jk j kr|qS r   )
isinstancerr   r6   rX   r   cr~   r   r   r   )  s     
  z-XPathRuleElement.evaluate.<locals>.<listcomp>r   getChildrenr   r   r~   r   rm   '  s    zXPathRuleElement.evaluater   r   r   r3   r   ri   !  s   ri   c                       s2   e Zd Zeed fddZedddZ  ZS )rf   r   	tokenTypec                    s   t  | || _d S rN   r,   r-   r   r1   r   r   r3   r   r   r-   .  s    z"XPathTokenAnywhereElement.__init__rp   c                 C   s   t || jS rN   )r   ZfindAllTokenNodesr   r   r   r   r   rm   2  s    z"XPathTokenAnywhereElement.evaluater   r   r   r3   r   rf   ,  s   rf   c                       s2   e Zd Zeed fddZedddZ  ZS )rg   r   c                    s   t  | || _d S rN   r   r   r3   r   r   r-   8  s    zXPathTokenElement.__init__rp   c                    s    fddt |D S )Nc                    s0   g | ](}t |tr|jj jk j kr|qS r   )r   ZTerminalNodesymbolrA   r   rX   r   r~   r   r   r   >  s     
  z.XPathTokenElement.evaluate.<locals>.<listcomp>r   r   r   r~   r   rm   <  s    zXPathTokenElement.evaluater   r   r   r3   r   rg   6  s   rg   c                       s*   e Zd Z fddZedddZ  ZS )rd   c                    s   t  tj d S rN   r,   r-   rI   r(   r~   r3   r   r   r-   C  s    z%XPathWildcardAnywhereElement.__init__rp   c                 C   s   | j rt S t|S d S rN   )rX   rU   r   Zdescendantsr   r   r   r   rm   F  s    z%XPathWildcardAnywhereElement.evaluaterC   rD   rE   r-   r   rm   rH   r   r   r3   r   rd   A  s   rd   c                       s*   e Zd Z fddZedddZ  ZS )re   c                    s   t  tj d S rN   r   r~   r3   r   r   r-   O  s    zXPathWildcardElement.__init__rp   c                 C   s   | j rt S t|S d S rN   )rX   rU   r   r   r   r   r   r   rm   S  s    zXPathWildcardElement.evaluater   r   r   r3   r   re   M  s   re   N)%antlr4r   r   r   r   r   Zantlr4.InputStreamr   Zantlr4.Parserr   Zantlr4.RuleContextr	   Zantlr4.Tokenr
   Zantlr4.atn.ATNDeserializerr   Zantlr4.error.ErrorListenerr   Zantlr4.error.Errorsr   Zantlr4.tree.Treer   Zantlr4.tree.Treesr   ior   r   r   objectrI   ry   rh   ri   rf   rg   rd   re   r   r   r   r   <module>2   s(   9v

