
    Ng                     f    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e          ZdS )    )StringIO)Token)escapeWhitespace)RuleNode	ErrorNodeTerminalNodeTree	ParseTreeNc            	       :   e Zd Zeddededefd            Zeddededefd            Zedefd            Z	edefd            Z
eded	efd
            Zededefd            Zedededefd            Zededededefd            Zedefd            ZdS )TreesNt	ruleNamesrecogc           	         ||j         }t          |                     ||          d          }|                                dk    r|S t	                      5 }|                    d           |                    |           |                    d           t          d|                                          D ]Y}|dk    r|                    d           |                    |                     |                    |          |                     Z|                    d           |	                                cd d d            S # 1 swxY w Y   d S )NFr   ( ))
r   r   getNodeTextgetChildCountr   writerangetoStringTreegetChildgetvalue)clsr   r   r   sbufis          M/var/www/html/ai-engine/env/lib/python3.11/site-packages/antlr4/tree/Trees.pyr   zTrees.toStringTree   sd   IS__Q	::EBB??aHZZ 		"3IIcNNNIIaLLLIIcNNN1aoo//00 F Fq55IIcNNN		#**1::a==)DDEEEEIIcNNN<<>>		" 		" 		" 		" 		" 		" 		" 		" 		" 		" 		" 		" 		" 		" 		" 		" 		" 		"s   C$EEEc                 ^   ||j         }|t          |t                    rq|                                dk    r?||                                         dz   t          |                                          z   S ||                                         S t          |t                    rt          |          S t          |t                    r|j        |j        j	        S |
                                }t          |t                    r|j	        S t          |
                                          S )Nr   :)r   
isinstancer   getAltNumbergetRuleIndexstrr   r   symboltext
getPayloadr   )r   r   r   r   payloads        r   r   zTrees.getNodeText(   s    I !X&& )>>##Q&&$Q^^%5%56s:3q~~?O?O;P;PPP !1!122Q	** )1vvA|,, )8'8=(,,..gu&& 	 <1<<>>"""    c                 `    fdt          d                                          D             S )Nc                 :    g | ]}                     |          S  )r   ).0r   r   s     r   
<listcomp>z%Trees.getChildren.<locals>.<listcomp>@   s#    EEE1AEEEr*   r   )r   r   )r   r   s    `r   getChildrenzTrees.getChildren>   s1    EEEEa1B1B(C(CEEEEr*   c                     g }|                                 }|,|                    d|           |                                 }|,|S Nr   )	getParentinsert)r   r   	ancestorss      r   getAncestorszTrees.getAncestorsE   sK    	KKMMmQ"""A m r*   ttypec                 0    |                      ||d          S )NTfindAllNodes)r   r   r7   s      r   findAllTokenNodeszTrees.findAllTokenNodesN   s    5$///r*   	ruleIndexc                 0    |                      ||d          S )NFr9   )r   r   r<   s      r   findAllRuleNodeszTrees.findAllRuleNodesR   s    9e444r*   index
findTokensc                 :    g }|                      ||||           |S )N)_findAllNodes)r   r   r?   r@   nodess        r   r:   zTrees.findAllNodesV   s&    !UJ666r*   rC   c                    ddl m} |r;t          |t                    r&|j        j        |k    r|                    |           n2|s0t          ||          r |j        |k    r|                    |           t          d|	                                          D ]-}| 
                    |                    |          |||           .d S )Nr   )ParserRuleContext)antlr4.ParserRuleContextrE   r"   r   r&   typeappendr<   r   r   rB   r   )r   r   r?   r@   rC   rE   r   s          r   rB   zTrees._findAllNodes\   s    >>>>>> 	 *Q55 	 x}e##Q 	 
1.? @ @ 	 {e##Qq!//++,, 	G 	GAajjmmUJFFFF	G 	Gr*   c                     |g}t          d|                                          D ]=}|                    |                     |                    |                               >|S r2   )r   r   extenddescendantsr   )r   r   rC   r   s       r   rK   zTrees.descendantsj   s\    q!//++,, 	9 	9ALLA778888r*   )NN)__name__
__module____qualname__classmethodr	   listParserr   r   r0   r6   r
   intr;   r>   boolr:   rB   rK   r-   r*   r   r   r      s       
 " "D "D "V " " " ["" # #4 #4 #F # # # [#* F4 F F F [F D    [ 0 0# 0 0 0 [0 5	 5S 5 5 5 [5 I S T    [
 GY Gc Gd G$ G G G [G 9    [  r*   r   )ior   antlr4.Tokenr   antlr4.Utilsr   antlr4.tree.Treer   r   r   r	   r
   rQ   objectr   r-   r*   r   <module>rY      s                ) ) ) ) ) ) O O O O O O O O O O O O O O ^ ^ ^ ^ ^F ^ ^ ^ ^ ^r*   