
    <i                     ^    S SK Jr  S SKJr  S SKJr  S SKJrJrJ	r	J
r
Jr  Sr " S S\5      rg)    )StringIO)Token)escapeWhitespace)RuleNode	ErrorNodeTerminalNodeTree	ParseTreeNc            	           \ rS rSr\SS\S\S\4S jj5       r\SS\S\S\4S jj5       r	\S\4S j5       r
\S\4S	 j5       r\S\S
\4S j5       r\S\S\4S j5       r\S\S\S\4S j5       r\S\S\S\S\4S j5       r\S\4S j5       rSrg)Trees   Nt	ruleNamesrecogc           	      D   Ub  UR                   n[        U R                  X5      S5      nUR                  5       S:X  a  U$ [	        5        nUR                  S5        UR                  U5        UR                  S5        [        SUR                  5       5       HJ  nUS:  a  UR                  S5        UR                  U R                  UR                  U5      U5      5        ML     UR                  S5        UR                  5       sS S S 5        $ ! , (       d  f       g = f)NFr   ( ))
r   r   getNodeTextgetChildCountr   writerangetoStringTreegetChildgetvalue)clsr   r   r   sbufis          K/home/james-whalen/.local/lib/python3.13/site-packages/antlr4/tree/Trees.pyr   Trees.toStringTree   s    IS__Q:EB??aHZ3IIcNIIaLIIcN1aoo/0q5IIcN		#**1::a=)DE 1 IIcN<<> ZZs   B<D
Dc                 >   Ub  UR                   nUb  [        U[        5      (       aU  UR                  5       S:w  a/  X!R	                  5          S-   [        UR                  5       5      -   $ X!R	                  5          $ [        U[        5      (       a  [        U5      $ [        U[        5      (       a#  UR                  b  UR                  R                  $ UR                  5       n[        U[        5      (       a  UR                  $ [        UR                  5       5      $ )Nr   :)r   
isinstancer   getAltNumbergetRuleIndexstrr   r   symboltext
getPayloadr   )r   r   r   r   payloads        r    r   Trees.getNodeText(   s    I !X&&>>#Q&$^^%56s:3q~~?O;PPP !122Q	**1vA|,,88'88==(,,.gu&&<<1<<>""    c                 ~    [        SUR                  5       5       Vs/ s H  o!R                  U5      PM     sn$ s  snf Nr   )r   r   r   )r   r   r   s      r    getChildrenTrees.getChildren>   s0    (-a1B(CE(C1A(CEEEs   :c                 ~    / nUR                  5       nUb'  UR                  SU5        UR                  5       nUb  M'  U$ r/   )	getParentinsert)r   r   	ancestorss      r    getAncestorsTrees.getAncestorsE   sA    	KKMmQ"A m r-   ttypec                 &    U R                  XS5      $ )NTfindAllNodes)r   r   r8   s      r    findAllTokenNodesTrees.findAllTokenNodesN   s    $//r-   	ruleIndexc                 &    U R                  XS5      $ )NFr:   )r   r   r>   s      r    findAllRuleNodesTrees.findAllRuleNodesR   s    e44r-   index
findTokensc                 .    / nU R                  XX45        U$ )N)_findAllNodes)r   r   rB   rC   nodess        r    r;   Trees.findAllNodesV   s    !J6r-   rF   c                    SSK Jn  U(       aA  [        U[        5      (       a,  UR                  R
                  U:X  a  UR                  U5        O8U(       d1  [        X5      (       a!  UR                  U:X  a  UR                  U5        [        SUR                  5       5       H%  nU R                  UR                  U5      X#U5        M'     g )Nr   )ParserRuleContext)antlr4.ParserRuleContextrI   r$   r   r(   typeappendr>   r   r   rE   r   )r   r   rB   rC   rF   rI   r   s          r    rE   Trees._findAllNodes\   s    >*Q55xx}}e#Q
1 @ @{{e#Qq!//+,AajjmUF -r-   c                     U/n[        SUR                  5       5       H2  nUR                  U R                  UR	                  U5      5      5        M4     U$ r/   )r   r   extenddescendantsr   )r   r   rF   r   s       r    rP   Trees.descendantsj   sC    q!//+,ALLA78 -r-    )NN)__name__
__module____qualname____firstlineno__classmethodr	   listParserr   r   r0   r6   r
   intr<   r@   boolr;   rE   rP   __static_attributes__rR   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
   rY   objectr   rR   r-   r    <module>rb      s+      ) O O ^F ^r-   