a
    d                     @   sX   d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	m
Z
mZ dZG dd deZdS )    )StringIO)Token)escapeWhitespace)RuleNode	ErrorNodeTerminalNodeTree	ParseTreeNc                   @   s   e Zd ZedeeedddZedeeedddZeeddd	Z	eedd
dZ
eeedddZeeedddZeeeedddZeeeeedddZeedddZdS )TreesN)t	ruleNamesrecogc              	   C   s   |d ur|j }t| ||d}| dkr0|S t ~}|d || |d td| D ].}|dkrz|d || ||| qd|d |	 W  d    S 1 s0    Y  d S )NFr   ( ))
r   r   getNodeTextgetChildCountr   writerangetoStringTreegetChildgetvalue)clsr   r   r   sbufi r   Z/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/antlr4/tree/Trees.pyr      s    




zTrees.toStringTreec                 C   s   |d ur|j }|d urt|trT| dkrH||  d t|  S ||  S t|trft|S t|tr|jd ur|jj	S |
 }t|tr|j	S t|
 S )Nr   :)r   
isinstancer   ZgetAltNumberZgetRuleIndexstrr   r   symboltextZ
getPayloadr   )r   r   r   r   payloadr   r   r   r   (   s     




zTrees.getNodeTextr   c                    s    fddt d  D S )Nc                    s   g | ]}  |qS r   )r   ).0r   r$   r   r   
<listcomp>@       z%Trees.getChildren.<locals>.<listcomp>r   )r   r   )r   r   r   r$   r   getChildren>   s    zTrees.getChildrenc                 C   s.   g }|  }|d ur*|d| |  }q|S Nr   )	getParentinsert)r   r   Z	ancestorsr   r   r   getAncestorsE   s    
zTrees.getAncestors)r   ttypec                 C   s   |  ||dS )NTfindAllNodes)r   r   r-   r   r   r   findAllTokenNodesN   s    zTrees.findAllTokenNodes)r   	ruleIndexc                 C   s   |  ||dS )NFr.   )r   r   r1   r   r   r   findAllRuleNodesR   s    zTrees.findAllRuleNodes)r   index
findTokensc                 C   s   g }|  |||| |S )N)_findAllNodes)r   r   r3   r4   nodesr   r   r   r/   V   s    zTrees.findAllNodes)r   r3   r4   r6   c                 C   s   ddl m} |r2t|tr2|jj|krT|| n"|sTt||rT|j|krT|| td|	 D ]}| 
||||| qbd S )Nr   )ParserRuleContext)Zantlr4.ParserRuleContextr7   r   r   r!   typeappendr1   r   r   r5   r   )r   r   r3   r4   r6   r7   r   r   r   r   r5   \   s    

zTrees._findAllNodesc                 C   s4   |g}t d| D ]}|| || q|S r)   )r   r   extenddescendantsr   )r   r   r6   r   r   r   r   r;   j   s    zTrees.descendants)NN)NN)__name__
__module____qualname__classmethodr   listParserr   r   r(   r,   r	   intr0   r2   boolr/   r5   r;   r   r   r   r   r
      s$   r
   )ior   Zantlr4.Tokenr   Zantlr4.Utilsr   Zantlr4.tree.Treer   r   r   r   r	   rA   objectr
   r   r   r   r   <module>	   s
   