
    kh@                         d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZmZ d d	lmZmZ d d
lmZ d dlmZ d dlmZmZmZ dZdZ G d de      Z G d de      Z  G d de!      Z"y)    )CommonTokenStream)InputStream)ParserRuleContext)Lexer)ListTokenSource)Token)BailErrorStrategy)RecognitionExceptionParseCancellationException)TagChunk	TextChunk)RuleTagToken)TokenTagToken)	ParseTreeTerminalNodeRuleNodeNc                   $     e Zd Zdef fdZ xZS )CannotInvokeStartRuleec                 $    t         |   |       y N)super__init__)selfr   	__class__s     _/var/www/teggl/fontify/venv/lib/python3.12/site-packages/antlr4/tree/ParseTreePatternMatcher.pyr   zCannotInvokeStartRule.__init__S   s        )__name__
__module____qualname__	Exceptionr   __classcell__)r   s   @r   r   r   Q   s      r   r   c                       e Zd Zy)"StartRuleDoesNotConsumeFullPatternN)r   r   r     r   r   r$   r$   V   s    r   r$   c                       e Zd ZdZdedefdZdededefdZd	e	d
ede
fdZd	e	d
efdZd	e	d
ede
fdZd	e	d
efdZd
ede
fdZd	e	de	defdZd Zd	e	fdZd
efdZd
efdZy)ParseTreePatternMatcherlexerparserstartstopescaper)   r*   c                 J    || _         || _        d| _        d| _        d| _        y )N<>\r(   )r   r)   r*   s      r   r   z ParseTreePatternMatcher.__init__b   s%    

	r   r+   r,   
escapeLeftc                     |t        |      dk(  rt        d      |t        |      dk(  rt        d      || _        || _        || _        y )Nr   zstart cannot be null or emptyzstop cannot be null or empty)lenr!   r+   r,   r-   )r   r+   r,   r2   s       r   setDelimitersz%ParseTreePatternMatcher.setDelimiterss   sM    =CJM;<<<3t9a<:;;
	 r   treepatternpatternRuleIndexc                 J    | j                  ||      }| j                  ||      S r   )compileTreePatternmatchesr   r6   r7   r8   ps        r   matchesRuleIndexz(ParseTreePatternMatcher.matchesRuleIndex}   s&    ##G-=>||D!$$r   c                 T    | j                  ||j                  t                     }|d u S r   )	matchImplpatternTreedict)r   r6   r7   mismatchedNodes       r   matchesPatternz&ParseTreePatternMatcher.matchesPattern   s'    g.A.A46J%%r   c                 J    | j                  ||      }| j                  ||      S r   )r:   matchPatternr<   s        r   matchRuleIndexz&ParseTreePatternMatcher.matchRuleIndex   s(    ##G-=>  q))r   c                 r    t               }| j                  ||j                  |      }ddlm}  |||||      S )Nr   )ParseTreeMatch)rB   r@   rA   antlr4.tree.ParseTreeMatchrI   )r   r6   r7   labelsrC   rI   s         r   rF   z$ParseTreePatternMatcher.matchPattern   s5    g.A.A6J=dGV^DDr   c                 t   | j                  |      }t        |      }t        |      }ddlm}  || j
                  j                  | j
                  j                  | j
                  j                  | j
                  j                         |      }d }	 |j                  t                      |j                  |      }|j%                  d      t&        j(                  k7  r
t+               ddlm}
  |
| |||      S # t        $ r}	|	j                  d }	~	wt        $ r}	|	d }	~	wt         $ r}	t#        |	      d }	~	ww xY w)Nr   )ParserInterpreter   )ParseTreePattern)tokenizer   r   antlr4.ParserInterpreterrM   r*   grammarFileName
tokenNames	ruleNamesgetATNWithBypassAltssetErrorHandlerr	   parser   causer
   r!   r   LAr   EOFr$   antlr4.tree.ParseTreePatternrO   )r   r7   r8   	tokenListtokenSrctokensrM   parserInterpr6   r   rO   s              r   r:   z*ParseTreePatternMatcher.compileTreePattern   s   MM'*	"9-"8,>()D)DdkkF\F\ $ 5 5t{{7W7W7YZ`b	+(():)<=%%&67D 99Q<"466Ag/?FF * 	''M# 	G 	+'**	+s0   *C8 8	D7DD7DD7'D22D7rA   rK   c                 ~   |t        d      |t        d      t        |t              rt        |t              rd }|j                  j                  |j                  j                  k(  rt        |j                  t
              rT|j                  }| j                  ||j                  |       |j                  G| j                  ||j                  |       |S |j                         |j                         k(  r	 |S ||}|S ||}|S t        |t              r$t        |t              rd }| j                  |      }|}d }|j                  j                  |j                  j                  k(  rH| j                  ||j                  |       |j                  | j                  ||j                  |       |S ||}|S |j                         |j                         k7  r||}|S |j                         }t!        d|      D ]9  }	| j#                  |j%                  |	      |j%                  |	      |      }
|
7|
c S  |S |S )Nztree cannot be nullzpatternTree cannot be nullr   )r!   
isinstancer   symboltyper   map	tokenNamelabelgetTextr   getRuleTagTokenruleContext	ruleIndexruleNamegetChildCountranger@   getChild)r   r6   rA   rK   rC   tokenTagTokenruleTagTokenmni
childMatchs              r   r@   z!ParseTreePatternMatcher.matchImpl   s?   <122899 dL)jl.T!N{{;#5#5#:#::{11=B$/$6$6MHHV]%<%<dC$**6)<)<dC "! \\^[%8%8%:: "! &-)-
 "! ")%)N!!d-.:kK\3]!N//<L'##--1H1H1R1RRHHV\%:%:DA#))5););TB
 &% &-)-%% !!#[%>%>%@@!)%)N%%""$A1a[ &!^^DMM!,<k>R>RST>UW]^
)%%&
 "! r   c                 l    |j                  |d       }|t               }|||<   |j                  |       y r   )getlistappend)r   rK   rf   r6   vs        r   rd   zParseTreePatternMatcher.map  s2    JJud#9AF5M	r   c                     t        |t              ri|j                         dk(  rVt        |j                  d      t              r7|j                  d      }t        |j
                  t              r|j
                  S y )NrN   r   )ra   r   rl   rn   r   rb   r   )r   r6   cs      r   rh   z'ParseTreePatternMatcher.getRuleTagToken  sW    tX'!!#Q&:dmmA6F+VMM!$qxx788Or   c                    | j                  |      }t               }|D ]_  }t        |t              r|j                  d   j                         r| j                  j                  |j                        }|t        j                  k(  r't        dt        |j                        z   dz   |z         |j                  t        |j                  ||j                               |j                  d   j                         r| j                  j!                  |j                        }|dk(  r't        dt        |j                        z   dz   |z         | j                  j#                         j$                  |   }|j                  t'        |j                  ||j                               t        dt        |j                        z   dz   |z         | j(                  j+                  t-        |j.                               | j(                  j1                         }|j2                  t        j4                  k7  s|j                  |       | j(                  j1                         }|j2                  t        j4                  k7  rIb |S )Nr   zUnknown token z in pattern: zUnknown rule zinvalid tag: )splitrw   ra   r   tagisupperr*   getTokenTyper   INVALID_TYPEr!   strrx   r   rf   islowergetRuleIndexrU   ruleToTokenTyper   r)   setInputStreamr   text	nextTokenrc   rZ   )	r   r7   chunksr^   chunkttyperj   ruleImaginaryTokenTypets	            r   rP   z 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:PRWR]R]"^_#Oc%))n$D$VY`$`aa

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

,,.A ffeii''	/, r   c                    d}t        |      }t               }t               }t               }||k  rT||j                  | j                  | j                  z   |      k(  r/|t        | j                        t        | j                        z   z  }n||j                  | j                  | j
                  z   |      k(  r/|t        | j                        t        | j
                        z   z  }n||j                  | j                  |      k(  r*|j                  |       |t        | j                        z  }nN||j                  | j
                  |      k(  r*|j                  |       |t        | j
                        z  }n|dz  }||k  rTt        |      }|t        |      kD  rt        d|z         |t        |      k  rt        d|z         t        d|      D ]  }||   ||   k\  st        d|z          |dk(  r|j                  t        |             |dkD  r*|d   dkD  r"|d|d    }	|j                  t        |	             t        d|      D ]  }|||   t        | j                        z   ||    }
|
}d }|
j                  d      }|dk\  r|
d| }|
|dz   t        |
       }|j                  t        ||             |dz   t        |      k  s|||   t        | j
                        z   ||dz       }	|j                  t        |	              |dkD  rB||dz
     t        | j
                        z   }||k  r||| }	|j                  t        |	             t        dt        |            D ]n  }||   }t        |t              s|j                  j                  | j                  d      }t        |      t        |j                        k  sat        |      ||<   p |S )Nr   rN   zunterminated tag in pattern: zmissing start tag in pattern: z(tag delimiters out of order in pattern: : )r4   rw   findr-   r+   r,   rx   r!   rm   r   addr   ra   r   replace)r   r7   r=   rr   r   startsstopsntrs   r   r   ruleOrTokenrf   colonafterLastTagr{   	unescapeds                    r   r~   zParseTreePatternMatcher.split2  so   L!eGLLtzz!91==S%DJJ77gll4;;#:A>>S%DII66gll4::q11a S_$gll499a00QS^#Q !e [E
?;gEFFE
?<wFGGq" 	VAayE!H$ JW TUU	V
 q5MM)G,-a4F1IaK1VAY'DJJy'q" 	/A&)c$**o5aACKEHHSMEzAe!%'CH5MM(5+67sS[ uQx#dii.86!a%=Iio.	/ 6 a=3tyy>9La|a0io. q#f+& 	5Aq	A1i)FFNN4;;;	y>CK/ )) 4F1I	5 r   N)r   r   r    	__slots__r   Parserr   r   r5   r   intr>   rO   rD   rG   rF   r:   rB   r@   rd   rh   rP   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   rO   r!   r   r$   objectr'   r%   r   r   <module>r      sb   @ 7 * 6  2  8 P 1 1 3 > > 
 I 
	 	
[f [r   