
    kh                     ^    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y)    )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y)TreesNt	ruleNamesrecogc           	      2   ||j                   }t        | j                  ||      d      }|j                         dk(  r|S t	               5 }|j                  d       |j                  |       |j                  d       t        d|j                               D ]H  }|dkD  r|j                  d       |j                  | j                  |j                  |      |             J |j                  d       |j                         cd d d        S # 1 sw Y   y xY w)NFr   ( ))
r   r   getNodeTextgetChildCountr   writerangetoStringTreegetChildgetvalue)clsr   r   r   sbufis          M/var/www/teggl/fontify/venv/lib/python3.12/site-packages/antlr4/tree/Trees.pyr   zTrees.toStringTree   s    IS__Q	:EB??aHZ 		"3IIcNIIaLIIcN1aoo/0 Fq5IIcN		#**1::a=)DEF IIcN<<>		" 		" 		"s   
B9DDc                    ||j                   }|t        |t              rV|j                         dk7  r0||j	                            dz   t        |j                               z   S ||j	                            S t        |t              rt        |      S t        |t              r"|j                  |j                  j                  S |j                         }t        |t              r|j                  S t        |j                               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6s:3q~~?O;PPP !122Q	*1vA|,88'88==(,,.gu&<<1<<>""    c                 z    t        d|j                               D cg c]  }|j                  |       c}S c c}w Nr   )r   r   r   )r   r   r   s      r   getChildrenzTrees.getChildren>   s,    (-a1B(CE1AEEEs   8c                 x    g }|j                         }|%|j                  d|       |j                         }|%|S r,   )	getParentinsert)r   r   	ancestorss      r   getAncestorszTrees.getAncestorsE   sA    	KKMmQ"A m r*   ttypec                 (    | j                  ||d      S )NTfindAllNodes)r   r   r3   s      r   findAllTokenNodeszTrees.findAllTokenNodesN   s    5$//r*   	ruleIndexc                 (    | j                  ||d      S )NFr5   )r   r   r8   s      r   findAllRuleNodeszTrees.findAllRuleNodesR   s    9e44r*   index
findTokensc                 2    g }| j                  ||||       |S )N)_findAllNodes)r   r   r;   r<   nodess        r   r6   zTrees.findAllNodesV   s     !UJ6r*   r?   c                 j   ddl m} |r;t        |t              r+|j                  j
                  |k(  r@|j                  |       n.|s,t        ||      r |j                  |k(  r|j                  |       t        d|j                               D ]%  }| j                  |j                  |      |||       ' y )Nr   )ParserRuleContext)antlr4.ParserRuleContextrA   r"   r   r&   typeappendr8   r   r   r>   r   )r   r   r;   r<   r?   rA   r   s          r   r>   zTrees._findAllNodes\   s    >*Q5xx}}e#Q
1.? @{{e#Qq!//+, 	GAajjmUJF	Gr*   c                     |g}t        d|j                               D ]1  }|j                  | j                  |j	                  |                   3 |S r,   )r   r   extenddescendantsr   )r   r   r?   r   s       r   rG   zTrees.descendantsj   sH    q!//+, 	9ALLA78	9r*   )NN)__name__
__module____qualname__classmethodr	   listParserr   r   r-   r2   r
   intr7   r:   boolr6   r>   rG    r*   r   r   r      sK   
 "D "D "V " "" #4 #4 #F # #* F4 F F D   0 0# 0 0 5	 5S 5 5 I S T  
 GY Gc Gd G$ G G 9  r*   r   )ior   antlr4.Tokenr   antlr4.Utilsr   antlr4.tree.Treer   r   r   r	   r
   rM   objectr   rP   r*   r   <module>rV      s+      ) O O ^F ^r*   