
    <i@                         S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJrJr  S S	KJrJr  S S
KJr  S SKJr  S SKJrJrJr  SrSr " S S\5      r " S S\5      r  " S S\!5      r"g)    )CommonTokenStream)InputStream)ParserRuleContext)Lexer)ListTokenSource)Token)BailErrorStrategy)RecognitionExceptionParseCancellationException)TagChunk	TextChunk)RuleTagToken)TokenTagToken)	ParseTreeTerminalNodeRuleNodeNc                   0   ^  \ rS rSrS\4U 4S jjrSrU =r$ )CannotInvokeStartRuleQ   ec                 $   > [         TU ]  U5        g N)super__init__)selfr   	__class__s     ]/home/james-whalen/.local/lib/python3.13/site-packages/antlr4/tree/ParseTreePatternMatcher.pyr   CannotInvokeStartRule.__init__S   s         )__name__
__module____qualname____firstlineno__	Exceptionr   __static_attributes____classcell__)r   s   @r   r   r   Q   s      r   r   c                       \ rS rSrSrg)"StartRuleDoesNotConsumeFullPatternV   r    N)r!   r"   r#   r$   r&   r    r   r   r)   r)   V   s    r   r)   c                       \ rS rSrSrS\S\4S jrS\S\S\4S	 jr	S
\
S\S\4S jrS
\
S\4S jrS
\
S\S\4S jrS
\
S\4S jrS\S\4S jrS
\
S\
S\4S jrS rS
\
4S jrS\4S jrS\4S jrSrg)ParseTreePatternMatcher[   lexerparserstartstopescaper/   r0   c                 F    Xl         X l        SU l        SU l        SU l        g )N<>\r.   )r   r/   r0   s      r   r    ParseTreePatternMatcher.__init__b   s!    

	r   r1   r2   
escapeLeftc                     Ub  [        U5      S:X  a  [        S5      eUb  [        U5      S:X  a  [        S5      eXl        X l        X0l        g )Nr   zstart cannot be null or emptyzstop cannot be null or empty)lenr%   r1   r2   r3   )r   r1   r2   r9   s       r   setDelimiters%ParseTreePatternMatcher.setDelimiterss   sG    =CJM;<<<3t9a<:;;
	 r   treepatternpatternRuleIndexc                 F    U R                  X#5      nU R                  X5      $ r   )compileTreePatternmatchesr   r>   r?   r@   ps        r   matchesRuleIndex(ParseTreePatternMatcher.matchesRuleIndex}   s!    ##G>||D$$r   c                 R    U R                  XR                  [        5       5      nUS L $ r   )	matchImplpatternTreedict)r   r>   r?   mismatchedNodes       r   matchesPattern&ParseTreePatternMatcher.matchesPattern   s%    .A.A46J%%r   c                 F    U R                  X#5      nU R                  X5      $ r   )rB   matchPatternrD   s        r   matchRuleIndex&ParseTreePatternMatcher.matchRuleIndex   s#    ##G>  ))r   c                 l    [        5       nU R                  XR                  U5      nSSKJn  U" XX45      $ )Nr   )ParseTreeMatch)rK   rI   rJ   antlr4.tree.ParseTreeMatchrT   )r   r>   r?   labelsrL   rT   s         r   rP   $ParseTreePatternMatcher.matchPattern   s/    .A.A6J=dVDDr   c                 x   U R                  U5      n[        U5      n[        U5      nSSKJn  U" U R
                  R                  U R
                  R                  U R
                  R                  U R
                  R                  5       U5      nS n UR                  [        5       5        UR                  U5      nUR%                  S5      [&        R(                  :w  a
  [+        5       eSSKJn
  U
" XX(5      $ ! [         a  n	U	R                  eS n	A	f[         a  n	U	eS n	A	f[          a  n	[#        U	5      eS n	A	ff = f)Nr   )ParserInterpreter   )ParseTreePattern)tokenizer   r   antlr4.ParserInterpreterrY   r0   grammarFileName
tokenNames	ruleNamesgetATNWithBypassAltssetErrorHandlerr	   parser   causer
   r%   r   LAr   EOFr)   antlr4.tree.ParseTreePatternr[   )r   r?   r@   	tokenListtokenSrctokensrY   parserInterpr>   r   r[   s              r   rB   *ParseTreePatternMatcher.compileTreePattern   s   MM'*	"9-"8,>()D)DdkkF\F\ $ 5 5t{{7W7W7YZ`b	+(():)<=%%&67D 99Q<"466A/?FF * 	''M# 	G 	+'**	+s0   *C7 7
D9DD9DD9)D44D9rJ   rV   c                    Uc  [        S5      eUc  [        S5      e[        U[        5      (       a  [        U[        5      (       a  S nUR                  R                  UR                  R                  :X  a  [        UR                  [
        5      (       aS  UR                  nU R                  X5R                  U5        UR                  b  U R                  X5R                  U5        U$ UR                  5       UR                  5       :X  a   U$ Uc  UnU$ Uc  UnU$ [        U[        5      (       Ga0  [        U[        5      (       Ga  S nU R                  U5      nUb~  S nUR                  R                  UR                  R                  :X  aG  U R                  X6R                  U5        UR                  b  U R                  X6R                  U5        U$ Uc  UnU$ UR                  5       UR                  5       :w  a  Uc  UnU$ UR                  5       n[!        SU5       H;  n	U R#                  UR%                  U	5      UR%                  U	5      U5      n
U
c  M9  U
s  $    U$ U$ )Nztree cannot be nullzpatternTree cannot be nullr   )r%   
isinstancer   symboltyper   map	tokenNamelabelgetTextr   getRuleTagTokenruleContext	ruleIndexruleNamegetChildCountrangerI   getChild)r   r>   rJ   rV   rL   tokenTagTokenruleTagTokenmni
childMatchs              r   rI   !ParseTreePatternMatcher.matchImpl   sA   <122899 dL))jl.T.T!N{{;#5#5#:#::{11=BB$/$6$6MHHV%<%<dC$**6)<)<dC "! \\^[%8%8%:: "! &-)-
 "! ")%)N!!d-..:kK\3]3]!N//<L'##--1H1H1R1RRHHV%:%:DA#))5););TB
 &% &-)-%% !!#[%>%>%@@!)%)N%%""$A1a[!^^DMM!,<k>R>RST>UW]^
)%% !
 "! r   c                 l    UR                  US 5      nUc  [        5       nXAU'   UR                  U5        g r   )getlistappend)r   rV   rs   r>   vs        r   rq   ParseTreePatternMatcher.map  s0    JJud#9A5M	r   c                    [        U[        5      (       at  UR                  5       S:X  a`  [        UR                  S5      [        5      (       a<  UR                  S5      n[        UR
                  [        5      (       a  UR
                  $ g )NrZ   r   )rn   r   ry   r{   r   ro   r   )r   r>   cs      r   ru   'ParseTreePatternMatcher.getRuleTagToken  s`    tX''!!#Q&:dmmA6F+V+VMM!$qxx7788Or   c                 4   U R                  U5      n[        5       nU GHu  n[        U[        5      (       Ga  UR                  S   R                  5       (       a  U R                  R                  UR                  5      nU[        R                  :X  a'  [        S[        UR                  5      -   S-   U-   5      eUR                  [        UR                  XTR                  5      5        M  UR                  S   R                  5       (       a  U R                  R!                  UR                  5      nUS:X  a'  [        S[        UR                  5      -   S-   U-   5      eU R                  R#                  5       R$                  U   nUR                  ['        UR                  XtR                  5      5        GM  [        S[        UR                  5      -   S-   U-   5      eU R(                  R+                  [-        UR.                  5      5        U R(                  R1                  5       nUR2                  [        R4                  :w  d  GM*  UR                  U5        U R(                  R1                  5       nUR2                  [        R4                  :w  a  MK  GMx     U$ )Nr   zUnknown token z in pattern: zUnknown rule zinvalid tag: )splitr   rn   r   tagisupperr0   getTokenTyper   INVALID_TYPEr%   strr   r   rs   islowergetRuleIndexra   ruleToTokenTyper   r/   setInputStreamr   text	nextTokenrp   rf   )	r   r?   chunksrj   chunkttyperw   ruleImaginaryTokenTypets	            r   r\    ParseTreePatternMatcher.tokenize  s   G$ E5(,,99Q<'')) KK44UYY?Ee000'(83uyy>(IO([^e(effMM-		5++"NOYYq\))++ $ 8 8 CI "}'#eii.(H?(Z]d(dee-1[[-M-M-O-_-_`i-j*MM,uyy:PR]R]"^_#Oc%))n$D$VY`$`aa

))+ejj*ABJJ((*ffeii'MM!$

,,.A ffeii''' , r   c                    Sn[        U5      n[        5       n[        5       n[        5       nX#:  GaU  X!R                  U R                  U R                  -   U5      :X  a/  U[        U R                  5      [        U R                  5      -   -  nOX!R                  U R                  U R
                  -   U5      :X  a/  U[        U R                  5      [        U R
                  5      -   -  nOX!R                  U R                  U5      :X  a*  UR                  U5        U[        U R                  5      -  nONX!R                  U R
                  U5      :X  a*  UR                  U5        U[        U R
                  5      -  nOUS-  nX#:  a  GMU  [        U5      nU[        U5      :  a  [        SU-   5      eU[        U5      :  a  [        SU-   5      e[        SU5       H  nXX   Xh   :  d  M  [        SU-   5      e   US:X  a  UR                  [        U5      5        US:  a+  US   S:  a"  USUS    n	UR                  [        U	5      5        [        SU5       H  nXU   [        U R                  5      -   Xh    n
U
nS nU
R                  S5      nUS:  a  U
SU nXS-   [        U
5       nUR                  [        X5      5        US-   [        U5      :  d  M  XU   [        U R
                  5      -   XXS-       n	UR                  [        U	5      5        M     US:  a@  XgS-
     [        U R
                  5      -   nX:  a  XU n	UR                  [        U	5      5        [        S[        U5      5       Hu  nXH   n[        U[        5      (       d  M  UR                  R                  U R                  S5      n[        U5      [        UR                  5      :  d  Mh  [        U5      XH'   Mw     U$ )Nr   rZ   zunterminated tag in pattern: zmissing start tag in pattern: z(tag delimiters out of order in pattern: : )r;   r   findr3   r1   r2   r   r%   rz   r   addr   rn   r   replace)r   r?   rE   r   r   startsstopsntr   r   r   ruleOrTokenrs   colonafterLastTagr   	unescapeds                    r   r   ParseTreePatternMatcher.split2  s;   LeLLtzz!91==S%DJJ77ll4;;#:A>>S%DII66ll4::q11a S_$ll499a00QS^#Q e [E
?;gEFFE
?<wFGGq"AyEH$ JW TUU 
 q5MM)G,-a4F1IaK1VAY'DJJy'q"A)c$**o5ACKEHHSMEzAe!'CH5MM(567sS[ Qx#dii.86a%=Iio.  6 a=3tyy>9La0io. q#f+&A	A1i))FFNN4;;;	y>CK/ )) 4FI ' r   )r3   r/   r0   r1   r2   N)r!   r"   r#   r$   	__slots__r   Parserr   r   r<   r   intrF   r[   rM   rQ   rP   rB   rK   rI   rq   ru   r\   r   r&   r    r   r   r,   r,   [   s    >IU 6 "!# !C !C !%I %s %S %&) &5E &*) *S *3 *E	 E3C EG Gs GD>Y >I >d >@9 s >DC Dr   r,   )#antlr4.CommonTokenStreamr   antlr4.InputStreamr   antlr4.ParserRuleContextr   antlr4.Lexerr   antlr4.ListTokenSourcer   antlr4.Tokenr   antlr4.error.ErrorStrategyr	   antlr4.error.Errorsr
   r   antlr4.tree.Chunkr   r   antlr4.tree.RuleTagTokenr   antlr4.tree.TokenTagTokenr   antlr4.tree.Treer   r   r   r   r[   r%   r   r)   objectr,   r    r   r   <module>r      sb   @ 7 * 6  2  8 P 1 1 3 > > 
 I 
	 	
[f [r   