
    Ng@                        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"dS )    )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                 J    t                                          |           d S N)super__init__)selfr   	__class__s     _/var/www/html/ai-engine/env/lib/python3.11/site-packages/antlr4/tree/ParseTreePatternMatcher.pyr   zCannotInvokeStartRule.__init__S   s!        )__name__
__module____qualname__	Exceptionr   __classcell__)r   s   @r   r   r   Q   sD                  r   r   c                       e Zd ZdS )"StartRuleDoesNotConsumeFullPatternN)r   r   r     r   r   r$   r$   V   s        Dr   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dS )ParseTreePatternMatcherlexerparserstartstopescaper)   r*   c                 L    || _         || _        d| _        d| _        d| _        d S )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          || _        || _        || _        d S )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   s_    =CJJMM;<<<<3t99a<<:;;;
	 r   treepatternpatternRuleIndexc                 Z    |                      ||          }|                     ||          S r   )compileTreePatternmatchesr   r6   r7   r8   ps        r   matchesRuleIndexz(ParseTreePatternMatcher.matchesRuleIndex}   s,    ##G-=>>||D!$$$r   c                 Z    |                      ||j        t                                }|d u S r   )	matchImplpatternTreedict)r   r6   r7   mismatchedNodes       r   matchesPatternz&ParseTreePatternMatcher.matchesPattern   s)    g.A466JJ%%r   c                 Z    |                      ||          }|                     ||          S r   )r:   matchPatternr<   s        r   matchRuleIndexz&ParseTreePatternMatcher.matchRuleIndex   s.    ##G-=>>  q)))r   c                 ~    t                      }|                     ||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   sK    g.A6JJ======~dGV^DDDr   c                    |                      |          }t          |          }t          |          }ddlm}  || j        j        | j        j        | j        j        | j        	                                |          }d }	 |
                    t                                 |                    |          }nD# t          $ r}	|	j        d }	~	wt          $ r}	|	d }	~	wt           $ r}	t#          |	          d }	~	ww xY w|                    d          t&          j        k    rt+                      ddlm}
  |
| |||          S )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   sk   MM'**	"9--"8,,>>>>>>(()DdkF\ $ 5t{7W7W7Y7YZ`b b	+(():)<)<===%%&677DD) 	 	 	'M# 	 	 	G 	+ 	+ 	+'***	+ 99Q<<""4666AAAAAAg/?FFFs0   6B8 8
C9C		C9CC9%C44C9rA   rK   c                    |t          d          |t          d          t          |t                    rt          |t                    rd }|j        j        |j        j        k    rt          |j        t
                    rG|j        }|                     ||j        |           |j        |                     ||j        |           n4|	                                |	                                k    rn	||}n||}|S t          |t                    r-t          |t                    rd }|                     |          }|bd }|j        j        |j        j        k    r@|                     ||j        |           |j        |                     ||j        |           n||}|S |                                |                                k    r||}|S |                                }t!          d|          D ]E}	|                     |                    |	          |                    |	          |          }
|
|
c S F|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   sf   <12228999 dL)) 	"jl.T.T 	"!N{;#5#:::{1=BB .$/$6MHHV]%<dCCC$*6)<dCCC\\^^[%8%8%:%::: &-)-!)%)N!!d-.. 	":kK\3]3] 	"!N//<<L'#-1H1RRRHHV\%:DAAA#)5);TBBB%-)-%% !!##[%>%>%@%@@@!)%)N%%""$$A1a[[ & &!^^DMM!,<,<k>R>RST>U>UW]^^
)%%%% * "! r   c                     |                     |d           }|t                      }|||<   |                    |           d S r   )getlistappend)r   rK   rf   r6   vs        r   rd   zParseTreePatternMatcher.map  s?    JJud##9AF5M	r   c                    t          |t                    rv|                                dk    r^t          |                    d          t                    r6|                    d          }t          |j        t                    r|j        S d S )NrN   r   )ra   r   rl   rn   r   rb   r   )r   r6   cs      r   rh   z'ParseTreePatternMatcher.getRuleTagToken  sw    tX'' 	$!!##Q&&:dmmA6F6F+V+V&MM!$$qx77 $8Otr   c                    |                      |          }t                      }|D ]I}t          |t                    r|j        d                                         r| j                            |j                  }|t          j	        k    r*t          dt          |j                  z   dz   |z             |                    t          |j        ||j                             |j        d                                         r| j                            |j                  }|dk    r*t          dt          |j                  z   dz   |z             | j                                        j        |         }|                    t'          |j        ||j                             t          dt          |j                  z   dz   |z             | j                            t-          |j                             | j                                        }|j        t          j        k    rC|                    |           | j                                        }|j        t          j        k    CK|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(,, /9Q<'')) b K44UY??Ee000'(83uy>>(IO([^e(efffMM-	5%+"N"NOOOOYq\))++ b $ 8 8 C CI "}}'#ei..(H?(Z]d(deee-1[-M-M-O-O-_`i-j*MM,uy:PRWR]"^"^____#Oc%)nn$D$VY`$`aaa
))+ej*A*ABBBJ((**fei''MM!$$$
,,..A fei'' r   c                 	   d}t          |          }t                      }t                      }t                      }||k     rL||                    | j        | j        z   |          k    r-|t          | j                  t          | j                  z   z  }n||                    | j        | j        z   |          k    r-|t          | j                  t          | j                  z   z  }n||                    | j        |          k    r-|                    |           |t          | j                  z  }nQ||                    | j        |          k    r-|                    |           |t          | j                  z  }n|dz  }||k     Lt          |          }|t          |          k    rt          d|z             |t          |          k     rt          d|z             t          d|          D ]&}||         ||         k    rt          d|z             '|dk    r"|                    t          |                     |dk    r>|d         dk    r2|d|d                  }	|
                    t          |	                     t          d|          D ]}|||         t          | j                  z   ||                  }
|
}d }|
                    d          }|dk    r$|
d|         }|
|dz   t          |
                   }|                    t          ||                     |dz   t          |          k     rP|||         t          | j                  z   ||dz                     }	|                    t          |	                     |dk    rR||dz
           t          | j                  z   }||k     r,|||         }	|                    t          |	                     t          dt          |                    D ]v}||         }t          |t                    rW|j                            | j        d          }t          |          t          |j                  k     rt          |          ||<   w|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  s   LL!eeGLLtz!91====S%%DJ77gll4;#:A>>>>S%%DI66gll4:q1111a   S__$gll49a0000QS^^#Q !ee [[E

??;gEFFFE

??<wFGGGq" 	V 	VAayE!H$$ JW TUUU % q55MM)G,,---a44F1IaKK1VAY;'DJJy'''q" 	/ 	/A&)c$*oo5a@ACKEHHSMMEzzAeG!%'CHH"45MM(5+66777sS[[  uQx#di..86!a%=HIioo...66 a=3ty>>9La|a/0ioo... q#f++&& 	5 	5Aq	A1i)) 5FNN4;;;	y>>CKK// )) 4 4F1I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 E E EG Gs G G G GD>Y >I >d > > > >@  9    s    >DC D D D D D 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      s  @ 7 6 6 6 6 6 * * * * * * 6 6 6 6 6 6       2 2 2 2 2 2       8 8 8 8 8 8 P P P P P P P P 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 3 3 > > > > > > > > > > 
     I   
	 	 	 	 	 	 	 	
[ [ [ [ [f [ [ [ [ [r   