o
    ?i                     @   s   d dl mZ 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
dZG dd deZ[G dd deZG dd dee	ZG dd deZe e_dS )    )Token)c                   @      e Zd ZdS )TreeN__name__
__module____qualname__ r   r   M/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/antlr4/tree/Tree.pyr          r   c                   @   r   )
SyntaxTreeNr   r   r   r   r   r      r   r   c                   @   r   )	ParseTreeNr   r   r   r   r   r      r   r   c                   @   r   )RuleNodeNr   r   r   r   r   r      r   r   c                   @   r   )TerminalNodeNr   r   r   r   r   r      r   r   c                   @   r   )	ErrorNodeNr   r   r   r   r   r      r   r   c                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )ParseTreeVisitorc                 C   
   | | S N)accept)selftreer   r   r   visit!      
zParseTreeVisitor.visitc                 C   sV   |   }| }t|D ]}| ||s|  S ||}|| }| ||}q|S r   )defaultResultgetChildCountrangeshouldVisitNextChildgetChildr   aggregateResult)r   noderesultnicchildResultr   r   r   visitChildren$   s   

zParseTreeVisitor.visitChildrenc                 C      |   S r   r   r   r!   r   r   r   visitTerminal1      zParseTreeVisitor.visitTerminalc                 C   r(   r   r)   r*   r   r   r   visitErrorNode4   r,   zParseTreeVisitor.visitErrorNodec                 C      d S r   r   r   r   r   r   r   7      zParseTreeVisitor.defaultResultc                 C   s   |S r   r   )r   	aggregate
nextResultr   r   r   r    :   r0   z ParseTreeVisitor.aggregateResultc                 C      dS )NTr   )r   r!   currentResultr   r   r   r   =   r0   z%ParseTreeVisitor.shouldVisitNextChildN)
r   r	   r
   r   r'   r+   r-   r   r    r   r   r   r   r   r       s    r   Nc                   @   sD   e Zd ZdefddZdefddZdefddZdefd	d
Z	dS )ParseTreeListenerr!   c                 C   r.   r   r   r*   r   r   r   r+   D   r0   zParseTreeListener.visitTerminalc                 C   r.   r   r   r*   r   r   r   r-   G   r0   z ParseTreeListener.visitErrorNodectxc                 C   r.   r   r   r   r6   r   r   r   enterEveryRuleJ   r0   z ParseTreeListener.enterEveryRulec                 C   r.   r   r   r7   r   r   r   exitEveryRuleM   r0   zParseTreeListener.exitEveryRuleN)
r   r	   r
   r   r+   r   r-   ParserRuleContextr8   r9   r   r   r   r   r5   B   s
    r5   c                       s   e Zd ZdZdefddZ fddZdefdd	Zd
d Z	dd Z
dd Zdd Zdd ZdefddZdd Zdd Z  ZS )TerminalNodeImpl	parentCtxsymbolr>   c                 C   s   d | _ || _d S r   r<   )r   r>   r   r   r   __init__U   s   
zTerminalNodeImpl.__init__c                    s   t  || d S r   )super__setattr__)r   keyvalue	__class__r   r   rA   X   s   zTerminalNodeImpl.__setattr__r$   c                 C   r.   r   r   )r   r$   r   r   r   r   [   r0   zTerminalNodeImpl.getChildc                 C      | j S r   r>   r/   r   r   r   	getSymbol^      zTerminalNodeImpl.getSymbolc                 C   rF   r   )r=   r/   r   r   r   	getParenta   rI   zTerminalNodeImpl.getParentc                 C   rF   r   rG   r/   r   r   r   
getPayloadd   rI   zTerminalNodeImpl.getPayloadc                 C   s   | j d u rtS | j j}||fS r   )r>   INVALID_INTERVAL
tokenIndex)r   rM   r   r   r   getSourceIntervalg   s   
z"TerminalNodeImpl.getSourceIntervalc                 C   r3   )Nr   r   r/   r   r   r   r   m   r0   zTerminalNodeImpl.getChildCountvisitorc                 C   r   r   )r+   r   rO   r   r   r   r   p   r   zTerminalNodeImpl.acceptc                 C   s   | j jS r   )r>   textr/   r   r   r   getTexts   r,   zTerminalNodeImpl.getTextc                 C   s   | j jtjkr	dS | j jS )Nz<EOF>)r>   typer   EOFrQ   r/   r   r   r   __str__v   s   zTerminalNodeImpl.__str__)r   r	   r
   	__slots__r   r?   rA   intr   rH   rJ   rK   rN   r   r   r   rR   rU   __classcell__r   r   rD   r   r;   R   s    r;   c                       s0   e Zd Zdef fddZdefddZ  ZS )ErrorNodeImpltokenc                    s   t  | d S r   )r@   r?   )r   rZ   rD   r   r   r?      s   zErrorNodeImpl.__init__rO   c                 C   r   r   )r-   rP   r   r   r   r      r   zErrorNodeImpl.accept)r   r	   r
   r   r?   r   r   rX   r   r   rD   r   rY      s    rY   c                   @   sF   e Zd ZdZdedefddZdedefddZdedefd	d
Z	dS )ParseTreeWalkerNlistenertc                 C   sf   t |tr|| dS t |tr|| dS | || | D ]}| || q"| || dS )a  
	    Performs a walk on the given parse tree starting at the root and going down recursively
	    with depth-first search. On each node, {@link ParseTreeWalker#enterRule} is called before
	    recursively walking down into child nodes, then
	    {@link ParseTreeWalker#exitRule} is called after the recursive call to wind up.
	    @param listener The listener used by the walker to process grammar rules
	    @param t The parse tree to be walked on
        N)	
isinstancer   r-   r   r+   	enterRulegetChildrenwalkexitRule)r   r\   r]   childr   r   r   ra      s   
	


zParseTreeWalker.walkrc                 C   s    |  }|| || dS )a9  
	    Enters a grammar rule by first triggering the generic event {@link ParseTreeListener#enterEveryRule}
	    then by triggering the event specific to the given parse tree node
	    @param listener The listener responding to the trigger events
	    @param r The grammar rule containing the rule context
        N)getRuleContextr8   r_   r   r\   rd   r6   r   r   r   r_         
zParseTreeWalker.enterRulec                 C   s    |  }|| || dS )a7  
	    Exits a grammar rule by first triggering the event specific to the given parse tree node
	    then by triggering the generic event {@link ParseTreeListener#exitEveryRule}
	    @param listener The listener responding to the trigger events
	    @param r The grammar rule containing the rule context
        N)re   rb   r9   rf   r   r   r   rb      rg   zParseTreeWalker.exitRule)
r   r	   r
   DEFAULTr5   r   ra   r   r_   rb   r   r   r   r   r[      s
    r[   )antlr4.Tokenr   rL   objectr   r   r   r   r   r   r   r:   r5   r;   rY   r[   rh   r   r   r   r   <module>   s    	 0	4