o
    ‹Ù·i×2  ã                   @   s8  d dl mZmZ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ÚParserRuleContextÚTerminalNode)ÚInputStream)ÚParser)ÚRuleContext)ÚToken)ÚATNDeserializer)ÚErrorListener)ÚLexerNoViableAltException)Ú	ParseTree)ÚTrees)ÚStringIOc                  C   s  t ƒ z} |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d	¡ |  d
¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  ¡ W  d   ƒ S 1 s€w   Y  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   úF/home/ubuntu/.local/lib/python3.10/site-packages/antlr4/xpath/XPath.pyÚserializedATN?   s2   





















$é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g d¢Zg d¢Zg d¢ZdZd‡ fdd„	Zdededefdd„Zdedefdd„Z‡  ZS )Ú
XPathLexerc                 C   s   g | ]	\}}t ||ƒ‘qS r   )r   )Ú.0ÚiÚdsr   r   r   Ú
<listcomp>^   s    zXPathLexer.<listcomp>é   é   é   é   é   é   é   é   ÚDEFAULT_MODE)ú	<INVALID>z'//'z'/'z'*'z'!')	r'   Ú	TOKEN_REFÚRULE_REFÚANYWHEREÚROOTÚWILDCARDÚBANGÚIDÚSTRING)r*   r+   r,   r-   r.   ÚNameCharÚNameStartCharr/   zXPathLexer.g4Nc                    s<   t ƒ  |¡ |  d¡ t| | j| jtƒ ƒ| _d | _d | _	d S )Nz4.9.1)
ÚsuperÚ__init__ÚcheckVersionr   ÚatnÚdecisionsToDFAr   Ú_interpÚ_actionsÚ_predicates)ÚselfÚinput©Ú	__class__r   r   r3   x   s
   

zXPathLexer.__init__ÚlocalctxÚ	ruleIndexÚactionIndexc                 C   sP   | j d u rtƒ }| j|d< || _ | j  |d ¡}|d ur"|||ƒ d S td| ƒ‚)Nr!   zNo registered action for: %d)r8   ÚdictÚ	ID_actionÚgetÚ	Exception)r:   r>   r?   r@   ÚactionsÚ_actionr   r   r   Úaction€   s   

zXPathLexer.actionc                 C   s6   |dkr| j d }| ¡ rtj| _d S tj| _d S d S )Nr   )ÚtextÚisupperr   r(   Útyper)   )r:   r>   r@   Úcharr   r   r   rB   ‹   s   
ûzXPathLexer.ID_action©N)Ú__name__Ú
__module__Ú__qualname__r   Údeserializer   r5   Ú	enumerateÚdecisionToStater6   r(   r)   r*   r+   r,   r-   r.   r/   Ú	modeNamesÚliteralNamesÚsymbolicNamesÚ	ruleNamesÚgrammarFileNamer3   r   ÚintrG   rB   Ú__classcell__r   r   r<   r   r   Z   s&    r   c                   @   sn   e Zd ZdZdZdedefdd„Zdefdd„Zd	e	d
e
fdd„Zedededefdd„ƒZdefdd„ZdS )ÚXPathÚ*ú!ÚparserÚpathc                 C   s   || _ || _|  |¡| _d S rL   )r]   r^   ÚsplitÚelements)r:   r]   r^   r   r   r   r3   ˜   s   zXPath.__init__c              
   C   sp  t |ƒ}t|ƒ}dd„ }||_| ¡  | tƒ ¡ t|ƒ}z| ¡  W n ty= } z|j	}d||f }t
||ƒ‚d }~ww t|jƒ}	tƒ }
|	D ]m}d}d}|jtjtjfv rn|jtjk}t|	d ƒ}|slt
d| ¡  ƒ‚|}|jtjkr‡d}t|	d ƒ}|s…t
d| ¡  ƒ‚|}|jtjtjtjtjfv r£|  ||¡}||_|
 |¡ qH|jtjkr¬ |
S t
d|j|j  ƒ‚|
S )Nc                 S   s   |‚rL   r   )r:   Úer   r   r   Úrecover    s   zXPath.split.<locals>.recoverz5Invalid tokens or characters at index %d in path '%s'FzMissing element after %sTzUnknown path element %s)r	   r   rb   ÚremoveErrorListenersÚaddErrorListenerr   r   Úfillr   ÚcolumnrD   ÚiterÚtokensÚlistrJ   r+   r*   ÚnextÚgetTextr-   r(   r)   r,   r/   ÚgetXPathElementÚinvertÚappendr   ÚEOFrU   )r:   r^   r;   Úlexerrb   ÚtokenStreamra   ÚposÚmsgrh   r`   Úelrm   ÚanywhereÚnext_elÚelementr   r   r   r_      sR   
€ý


ÿzXPath.splitÚ	wordTokenru   c                 C   s  |j tjkr
tdƒ‚|j}|j tjkr|rtƒ S tƒ S |j tj	tj
fv rf| j ¡ j}tj}|j tj	krA||jv r@|j |¡d }n||jv rL|j |¡}|tjkrZtd||jf ƒ‚|rat||ƒS t||ƒS || jjv rs| jj |¡nd}|dkr‚td||jf ƒ‚|r‰t||ƒS t||ƒS )Nz#Missing path element at end of pathr   z'%s at index %d isn't a valid token nameéÿÿÿÿz&%s at index %d isn't a valid rule name)rJ   r   ro   rD   rH   r   r,   ÚXPathWildcardAnywhereElementÚXPathWildcardElementr(   r/   r]   ÚgetTokenStreamÚtokenSourceÚINVALID_TYPErV   ÚindexrT   Ú
tokenIndexÚXPathTokenAnywhereElementÚXPathTokenElementÚXPathRuleAnywhereElementÚXPathRuleElement)r:   rx   ru   ÚwordÚtsourceÚttyper?   r   r   r   rl   Ò   s*   
€

zXPath.getXPathElementÚtreeÚxpathc                 C   s   t ||ƒ}| | ¡S rL   )rZ   Úevaluate)rˆ   r‰   r]   Úpr   r   r   ÚfindAllñ   s   

zXPath.findAllÚtc                    sn   t ƒ }|g|_|g}| jD ]'}tƒ ‰ |D ]}t|tƒs1|jr1| |¡}t‡ fdd„|ƒ}ˆ  |¡ qˆ }q|S )Nc                    s   | ˆ vS rL   r   )Úm©Ú	work_nextr   r   Ú<lambda>  s    z XPath.evaluate.<locals>.<lambda>)	r   Úchildrenr`   ri   Ú
isinstancer   rŠ   ÚfilterÚextend)r:   r   Ú	dummyRootÚworkrw   ÚnodeÚmatchingr   r   r   rŠ   û   s   


€zXPath.evaluateN)rM   rN   rO   r,   ÚNOTr
   Ústrr3   r_   r   Úboolrl   Ústaticmethodr   rŒ   rŠ   r   r   r   r   rZ   “   s    5	rZ   c                   @   s"   e Zd Zdefdd„Zdd„ ZdS )ÚXPathElementÚnodeNamec                 C   s   || _ d| _d S )NF)rŸ   rm   )r:   rŸ   r   r   r   r3     s   
zXPathElement.__init__c                 C   s&   t | ƒjd | jrdnd | j d S )Nú[r\   Ú ú])rJ   rM   rm   rŸ   ©r:   r   r   r   Ú__str__  s   &zXPathElement.__str__N)rM   rN   rO   r›   r3   r¤   r   r   r   r   rž     s    rž   c                       ó4   e Zd Zdedef‡ fdd„Zdefdd„Z‡  ZS )rƒ   ÚruleNamer?   c                    ó   t ƒ  |¡ || _d S rL   ©r2   r3   r?   ©r:   r¦   r?   r<   r   r   r3   #  ó   
z!XPathRuleAnywhereElement.__init__r   c                    ó   t ‡ fdd„t |¡ƒS )Nc                    ó   t | tƒoˆ j|  ¡ ˆ jkA S rL   ©r“   r   rm   ÚgetRuleIndexr?   ©Úcr£   r   r   r‘   )  ó    z3XPathRuleAnywhereElement.evaluate.<locals>.<lambda>©r”   r   Údescendants©r:   r   r   r£   r   rŠ   '  ó   z!XPathRuleAnywhereElement.evaluate©	rM   rN   rO   r›   rX   r3   r   rŠ   rY   r   r   r<   r   rƒ   !  ó    rƒ   c                       r¥   )r„   r¦   r?   c                    r§   rL   r¨   r©   r<   r   r   r3   -  rª   zXPathRuleElement.__init__r   c                    r«   )Nc                    r¬   rL   r­   r¯   r£   r   r   r‘   3  r±   z+XPathRuleElement.evaluate.<locals>.<lambda>©r”   r   ÚgetChildrenr´   r   r£   r   rŠ   1  rµ   zXPathRuleElement.evaluater¶   r   r   r<   r   r„   +  r·   r„   c                       r¥   )r   r¦   Ú	tokenTypec                    r§   rL   ©r2   r3   rº   ©r:   r¦   rº   r<   r   r   r3   7  rª   z"XPathTokenAnywhereElement.__init__r   c                    r«   )Nc                    ó   t | tƒoˆ j| jjˆ jkA S rL   ©r“   r   rm   ÚsymbolrJ   rº   r¯   r£   r   r   r‘   =  r±   z4XPathTokenAnywhereElement.evaluate.<locals>.<lambda>r²   r´   r   r£   r   rŠ   ;  rµ   z"XPathTokenAnywhereElement.evaluater¶   r   r   r<   r   r   5  r·   r   c                       r¥   )r‚   r¦   rº   c                    r§   rL   r»   r¼   r<   r   r   r3   A  rª   zXPathTokenElement.__init__r   c                    r«   )Nc                    r½   rL   r¾   r¯   r£   r   r   r‘   G  r±   z,XPathTokenElement.evaluate.<locals>.<lambda>r¸   r´   r   r£   r   rŠ   E  rµ   zXPathTokenElement.evaluater¶   r   r   r<   r   r‚   ?  r·   r‚   c                       ó*   e Zd Z‡ fdd„Zdefdd„Z‡  ZS )rz   c                    ó   t ƒ  tj¡ d S rL   ©r2   r3   rZ   r,   r£   r<   r   r   r3   L  ó   z%XPathWildcardAnywhereElement.__init__r   c                 C   ó   | j rtƒ S t |¡S rL   )rm   ri   r   r³   r´   r   r   r   rŠ   O  ó   
z%XPathWildcardAnywhereElement.evaluate©rM   rN   rO   r3   r   rŠ   rY   r   r   r<   r   rz   J  s    rz   c                       rÀ   )r{   c                    rÁ   rL   rÂ   r£   r<   r   r   r3   X  rÃ   zXPathWildcardElement.__init__r   c                 C   rÄ   rL   )rm   ri   r   r¹   r´   r   r   r   rŠ   \  rÅ   zXPathWildcardElement.evaluaterÆ   r   r   r<   r   r{   V  s    r{   N)'Úantlr4r   r   r   r   r   r   r   Úantlr4.InputStreamr	   Úantlr4.Parserr
   Úantlr4.RuleContextr   Úantlr4.Tokenr   Úantlr4.atn.ATNDeserializerr   Úantlr4.error.ErrorListenerr   Úantlr4.error.Errorsr   Úantlr4.tree.Treer   Úantlr4.tree.Treesr   Úior   r   r   ÚobjectrZ   rž   rƒ   r„   r   r‚   rz   r{   r   r   r   r   Ú<module>   s,   $19 


