
    
`i.e                     8   d Z ddlmZmZ ddlmZ ddlmZmZ ddl	m
Z
 ddlmZmZmZmZmZ ddlmZmZmZmZ ddlmZmZmZ g d	Z G d
 de          Z G d de          Z G d de          Zej        ej         ej!        dZ"de#defdZ$dededefdZ% ed           G d de                      Z& G d de&e          Z' ed           G d de'                      Z(d e(fd!Z) ed           G d" d#e'                      Z* ed           G d$ d%e&                      Z+ e*            Z, e+            Z- e( e.d&          d'          Z/ e( e.d&          d          Z0 e( e.d(          d'           e( e.d(          d           e( e.d)          d'           e( e.d)          d           e( e.d*          d'           e( e.d*          d           e( e.d+          d'           e( e.d,          d'           e( e.d-          d'           e( e.d.          d'           e( e.d/          d'           e( e.d0          d'           e( e.d1          d'          d2Z1 ed           G d3 d4e&                      Z2 e2e0dd5          Z3 ed           G d6 d7                      Z4 ed           G d8 d9e&                      Z5 ed           G d: d;e'                      Z6 G d< d=ee6                   Z7d>e#de6fd?Z8d5S )@z
Allows the parsing of python-style regexes to FSMs.
Main access point is `parse_pattern(str) -> Pattern`.
Most other classes are internal and should not be used.
    )abstractmethodABC)	dataclass)Flagauto)indent)Iterable	FrozenSetOptionalTupleUnion)FSManything_elseepsilonAlphabet)SimpleParsernomatchNoMatch)parse_patternPatternUnsupportedInvalidSyntaxREFlagsc                       e Zd ZdS )r   N__name__
__module____qualname__     h/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/interegular/patterns.pyr   r              Dr    r   c                       e Zd ZdS )r   Nr   r   r    r!   r   r      r"   r    r   c                   V    e Zd Z e            xZZ e            xZZ e            xZZ	dS )r   N)
r   r   r   r   CASE_INSENSITIVEI	MULTILINEMSINGLE_LINESr   r    r!   r   r      s?        466!qDFFIdffK!!!r    r   )imsplusreturnc                     t          d          }| D ]4}	 |t          |         z  }# t          $ r t          d| d          w xY w|S )Nr   zFlag  is not implemented)r   _flagsKeyErrorr   )r.   rescs      r!   
_get_flagsr6   (   sk    
!**C > >	>6!9CC 	> 	> 	><a<<<===	>Js	   &Abaseaddedremovedc                     | |z  } | | z  } | S Nr   )r7   r8   r9   s      r!   _combine_flagsr<   2   s    EMDWHDKr    T)frozenc                   j    e Zd ZdZeddefd            Zededefd            Z	dedef fdZ
edeeee         f         fd            Zedeeee         f         f fd	            Zedeeee         f         fd
            Zedeeee         f         f fd            Zedd            Z xZS )_BasePattern)_alphabet_cache_prefix_cache_lengths_cacheNr/   c                     t           r;   NotImplementedErrorselfalphabetprefix_postfixflagss       r!   to_fsmz_BasePattern.to_fsm=       !!r    rJ   c                     t           r;   rD   rG   rJ   s     r!   _get_alphabetz_BasePattern._get_alphabetA   rL   r    c                     t          | d          s)t          t          |                               di            || j        vr|                     |          | j        |<   | j        |         S )Nr@   )hasattrsuperr?   __setattr__r@   rO   )rG   rJ   	__class__s     r!   get_alphabetz_BasePattern.get_alphabetE   so    t.// 	I,%%112CRHHH,,,*.*<*<U*C*CD '#E**r    c                     t           r;   rD   rG   s    r!   _get_prefix_postfixz _BasePattern._get_prefix_postfixL   rL   r    c                     t          | d          s;t          t          |                               d|                                            | j        S )zWReturns the number of dots that have to be pre-/postfixed to support look(aheads|backs)rA   )rQ   rR   r?   rS   rX   rA   rG   rT   s    r!   rI   z_BasePattern.prefix_postfixP   sM     t_-- 	_,%%11/4C[C[C]C]^^^!!r    c                     t           r;   rD   rW   s    r!   _get_lengthsz_BasePattern._get_lengthsW   rL   r    c                     t          | d          s;t          t          |                               d|                                            | j        S )zuReturns the minimum and maximum length that this pattern can match
         (maximum can be None bei infinite length)rB   )rQ   rR   r?   rS   r\   rB   rZ   s    r!   lengthsz_BasePattern.lengths[   sO     t-.. 	Y,%%112BDDUDUDWDWXXX""r    c                     t           r;   rD   rW   s    r!   simplifyz_BasePattern.simplifyc   rL   r    )NNN)r/   r?   )r   r   r   	__slots__r   r   rK   r   r   rO   rU   r   intr   rX   propertyrI   r\   r^   r`   __classcell__rT   s   @r!   r?   r?   9   s       DI" " " " " ^" "7 "x " " " ^"+' +h + + + + + + "U3+=%> " " " ^" "c8C=&8 9 " " " " " X" "eC#$67 " " " ^" #sHSM12 # # # # # X# " " " ^" " " " "r    r?   c                       e Zd ZdS )_RepeatableNr   r   r    r!   rg   rg   h   r"   r    rg   c                       e Zd ZU dZee         ed<   eed<   dZde	de
fdZdeeee         f         fdZdeeee         f         fd	Zd
d
 e	d          fdefdZddZd
S )
_CharGroupzqRepresents the smallest possible pattern that can be matched: A single char.
    Direct port from the lego modulecharsnegated)rj   rk   rJ   r/   c                     |t           j        z  rAh t          t          j        | j                  t          t          j        | j                  }n| j        }t          j        |t          h          S r;   )
r   r%   mapstrlowerrj   upperr   from_groupsr   )rG   rJ   relevants      r!   rO   z_CharGroup._get_alphabett   s[    7++ 	"QSY
33Qc#)TZ6P6PQHHzH#H}o>>>r    c                     dS Nr   r   r   rW   s    r!   rX   z_CharGroup._get_prefix_postfix{       tr    c                     dS N)   ry   r   rW   s    r!   r\   z_CharGroup._get_lengths~   rv   r    Nr   c                    |                      |          || j        }|dk    rt          d          |t          j        z  }|t          j         z  }|t          j         z  }|rt          |          |r2t          h d | j        D             d | j        D                       }n| j        }| j	        r!dfdt                    |z
  D             i}ndfd|D             i}t          ddhddh|	          S )
Nru   .Can not have prefix/postfix on CharGroup-levelc              3   >   K   | ]}|                                 V  d S r;   )ro   .0r5   s     r!   	<genexpr>z$_CharGroup.to_fsm.<locals>.<genexpr>   s*       ? ?q ? ? ? ? ? ?r    c              3   >   K   | ]}|                                 V  d S r;   )rp   r}   s     r!   r   z$_CharGroup.to_fsm.<locals>.<genexpr>   s+      BaBaQR17799BaBaBaBaBaBar    r   c                 "    i | ]}|         d S ry   r   r~   symbolrH   s     r!   
<dictcomp>z%_CharGroup.to_fsm.<locals>.<dictcomp>   s     LLLFHV$aLLLr    c                 "    i | ]}|         d S r   r   r   s     r!   r   z%_CharGroup.to_fsm.<locals>.<dictcomp>   s     <<<FHV$a<<<r    ry   rH   statesinitialfinalsrm   )rU   rI   
ValueErrorr   r%   r)   r   	frozensetrj   rk   setr   )rG   rH   rI   rJ   insensitiverj   mappings    `     r!   rK   z_CharGroup.to_fsm   s_   ((//H!!0NV##MNNNg66'***'%%% 	%e$$$ 	b ? ?DJ ? ? ?bBaBaVZV`BaBaBabccEEJE
 < 		LLLLc(mme6KLLLGG <<<<e<<<G q63
 
 
 	
r    c                     | S r;   r   rW   s    r!   r`   z_CharGroup.simplify       r    )r/   ri   )r   r   r   __doc__r
   rn   __annotations__boolra   r   r   rO   r   rb   r   rX   r\   r   rK   r`   r   r    r!   ri   ri   l   s         ( (S>MMM"I?7 ?x ? ? ? ?U3+=%>    eC#$67     #4wwqzz %
 %
c %
 %
 %
 %
N     r    ri   groupsc                     t                      j        d |D              } t                      j        d |D              }|r!t          t          ||z
            |            S t          t          ||z
            |           S )Nc              3   2   K   | ]}|j         	|j        V  d S r;   rk   rj   r~   gs     r!   r   z'_combine_char_groups.<locals>.<genexpr>   s+      AAAqyAAAAAAAr    c              3   2   K   | ]}|j         	|j        V  d S r;   r   r   s     r!   r   z'_combine_char_groups.<locals>.<genexpr>   s+      ==A19=======r    )r   unionri   r   )negater   posnegs       r!   _combine_char_groupsr      s    
#%%+AAAAA
BC
#%%+=====
>C
 8)C#I..F
;;;)C#I..777r    c                       e Zd Zdd ed          fdefdZdedefdZdee	e
e	         f         fdZdee	e
e	         f         fdZd
d	ZdS )__DotClsNr   r/   c           	          |                      |          ||t          j        z  st                    dhz
  }n}t	          ddhddhdfd|D             i          S )N
r   ry   c                 "    i | ]}|         d S r   r   )r~   symrH   s     r!   r   z#__DotCls.to_fsm.<locals>.<dictcomp>   s    999#Xc]A999r    r   )rU   r   r)   r   r   )rG   rH   rI   rJ   symbolss    `   r!   rK   z__DotCls.to_fsm   s    ((//H=(; ;=(mmtf,GGGq639999999:
 
 
 	
r    rJ   c                     |t           j        z  rt          j        t          h          S t          j        t          hdh          S )Nr   )r   r)   r   rq   r   rN   s     r!   rO   z__DotCls._get_alphabet   s=    7&& 	A'888'$@@@r    c                     dS rt   r   rW   s    r!   rX   z__DotCls._get_prefix_postfix   rv   r    c                     dS rx   r   rW   s    r!   r\   z__DotCls._get_lengths   rv   r    c                     | S r;   r   rW   s    r!   r`   z__DotCls.simplify   r   r    )r/   r   r   r   r   r   r   rK   r   rO   r   rb   r   rX   r\   r`   r   r    r!   r   r      s         #4wwqzz 
 
c 
 
 
 
A7 Ax A A A AU3+=%>    eC#$67         r    r   c                       e Zd Zdd ed          fdefdZdedefdZdee	e
e	         f         fdZdee	e
e	         f         fdZd
d	ZdS )
__EmptyClsNr   r/   c                 N    ||                      |          }t          |          S r;   )rU   r   rF   s       r!   rK   z__EmptyCls.to_fsm   s)    ((//Hx   r    rJ   c                 6    t          j        t          h          S r;   )r   rq   r   rN   s     r!   rO   z__EmptyCls._get_alphabet   s    #]O444r    c                     dS rt   r   rW   s    r!   rX   z__EmptyCls._get_prefix_postfix   rv   r    c                     dS rt   r   rW   s    r!   r\   z__EmptyCls._get_lengths   rv   r    c                     | S r;   r   rW   s    r!   r`   z__EmptyCls.simplify   r   r    )r/   r   r   r   r    r!   r   r      s         #4wwqzz ! !c ! ! ! !
57 5x 5 5 5 5U3+=%>    eC#$67         r    r    F?abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_
0123456789z 	
r   	)wWdDr-   r*   abfnrtvc                       e Zd ZU dZeed<   eed<   ee         ed<   d Zde	de
fdZdeeee         f         fd	Zdeeee         f         fd
Zdd e	d          fdefdZddZdS )	_RepeatedzxRepresents a repeated pattern. `base` can be matched from `min` to `max` times.
    `max` may be None to signal infiniter7   minmaxc           
      ~    d| j          d| j        | j        nd dt          t          | j                  d           S )Nz	Repeated[:r   z]:
z    )r   r   r   rn   r7   rW   s    r!   __str__z_Repeated.__str__
  sR    048 0 0$(2FdhhB 0 0c$)nnf--0 0 	0r    rJ   r/   c                 6    | j                             |          S r;   )r7   rU   rN   s     r!   rO   z_Repeated._get_alphabet  s    y%%e,,,r    c                     | j         j        S r;   )r7   rI   rW   s    r!   rX   z_Repeated._get_prefix_postfix  s    y''r    c                 b    | j         j        \  }}|| j        z  d || j        fvr
|| j        z  nd fS r;   )r7   r^   r   r   )rG   lhs      r!   r\   z_Repeated._get_lengths  s;    y 148|d1dh-.G.Ga$(llTRRr    Nr   c                 ~   ||                      |          }|| j        }|dk    rt          d          | j                            |d|          }|| j        z  }| j        |                                }nA|                                }|j	        dxx         |j
        hz  cc<   || j        | j        z
  z  }||z   S )Nru   r{   )rJ   r   )rU   rI   r   r7   rK   r   r   starcopy__dict__r   )rG   rH   rI   rJ   unit	mandatoryoptionals          r!   rK   z_Repeated.to_fsm  s    ((//H!!0NV##MNNNy&>>48O	8yy{{HHyy{{Hh'''H,<+=='''DH,-H8##r    c                 r    |                      | j                                        | j        | j                  S r;   )rT   r7   r`   r   r   rW   s    r!   r`   z_Repeated.simplify*  s*    ~~di0022DHdhGGGr    )r/   r   )r   r   r   r   rg   r   rb   r   r   r   r   rO   r   rX   r\   r   rK   r`   r   r    r!   r   r     s        , ,
	HHH	#0 0 0-7 -x - - - -(U3+=%> ( ( ( (SeC#$67 S S S S #4wwqzz $ $c $ $ $ $$H H H H H Hr    r   Nc                   N    e Zd ZU dZeed<   eed<   eed<   dZdede	fdZ
dd	Zd
S )_NonCapturingzRepresents a lookahead/lookback. Matches `inner` without 'consuming' anything. Can be negated.
    Only valid inside a `_Concatenation`inner	backwardsr   )r   r   r   rJ   r/   c                 6    | j                             |          S r;   )r   rU   rN   s     r!   rU   z_NonCapturing.get_alphabet:  s    z&&u---r    c                 r    |                      | j                                        | j        | j                  S r;   )rT   r   r`   r   r   rW   s    r!   r`   z_NonCapturing.simplify=  s*    ~~dj1133T^T[QQQr    N)r/   r   )r   r   r   r   r?   r   r   ra   r   r   rU   r`   r   r    r!   r   r   1  s         , ,OOOLLL.I.' .h . . . .R R R R R Rr    r   c                       e Zd ZU dZeeeef         df         ed<   dZ	d Z
dedefdZdeeee         f         fd	Zdeeee         f         fd
Zdd ed          fdefdZddZdS )_ConcatenationzXRepresents multiple Patterns that have to be match in a row. Can contain `_NonCapturing`.parts)r   c                 P    dd                     d | j        D                       z   S )NzConcatenation:
r   c              3   P   K   | ]!}t          t          |          d           V  "dS z  Nr   rn   r~   ps     r!   r   z)_Concatenation.__str__.<locals>.<genexpr>H  s2      -W-WqfSVVT.B.B-W-W-W-W-W-Wr    )joinr   rW   s    r!   r   z_Concatenation.__str__G  s*    !DII-W-WDJ-W-W-W$W$WWWr    rJ   r/   c                 N    t          j        fd| j        D              d         S )Nc              3   B   K   | ]}|                               V  d S r;   rU   r~   r   rJ   s     r!   r   z/_Concatenation._get_alphabet.<locals>.<genexpr>K  s/      JJ!u 5 5JJJJJJr    r   )r   r   r   rN   s    `r!   rO   z_Concatenation._get_alphabetJ  s,    ~JJJJtzJJJKANNr    c                    d}d}| j         D ]e}t          |t                    s||j        d         z  }(|j        r6|j        j        \  }}||k    rt          d||f           ||z
  }||k    r|}fd}d}t          | j                   D ]S}t          |t                    s||j        d         z  }(|j        s$|j        j        \  }}|||z
  }n||z
  }||k    r|}T||fS )Nr   z$lookbacks have to have fixed length )r   
isinstancer   r^   r   r   r   reversed)rG   preoffr   r   r   reqposts           r!   rX   z"_Concatenation._get_prefix_postfixM  s&    		 		Aa// qy|# w166'(WPQSTv(W(WXXX#g99C$*%% 
	 
	Aa// 	qy|#[ w19c'CCc'C::DDyr    c                     d\  }}| j         D ]3}t          |t                    s|j        \  }}||z  }d ||fvr||z   nd }4||fS rt   )r   r   r   r^   )rG   lowhighr   plphs         r!   r\   z_Concatenation._get_lengthsi  sk    	T 	E 	EAa// EBr	$(r
$:$:tbyyDyr    Nr   c                 *   ||                      |          }|| j        }|d         | j        d         k     s|d         | j        d         k     rt          d          t                              |          }|                                }g }|                    |d                   g}| j        D ]}t          |t                    rc|j
                            |d|          }	|j        rt          d          |                    d |f           |                    ||	f           g }z|                    |                    |d|                     |                    |                    |d                              t          j        | }
t          |          D ]q\  }}|t          j        g ||
R  }
t          |t                    r|j        rJ |j        r|
                    ||z             }
Y|
                    ||z             }
r|
S )Nr   ry   zHGroup can not have lookbacks/lookaheads that go beyond the group bounds.ru   zlookbacks are not implemented)rU   rI   r   _ALLrK   r   timesr   r   r   r   r   appendr   concatenater   r   
differenceintersection)rG   rH   rI   rJ   all_all_star	fsm_partscurrentpartr   resultr,   r   s                r!   rK   z_Concatenation.to_fsmr  s#   ((//H!!0N!t215559JTM`abMc9c9chiii{{8$$99;;	::nQ/001J 	E 	ED$.. E
))(FEBB> 	!%&EFFF $$dG_555$$dE]333 GGt{{8VUCCDDDDtzz."344555'*Y'' 	? 	?DAqy4!4V444!!]33GAKGGG8 ?#..q8|<<FF#00X>>FFr    c                 d    |                      t          d | j        D                                 S )Nc              3   >   K   | ]}|                                 V  d S r;   r`   r   s     r!   r   z*_Concatenation.simplify.<locals>.<genexpr>  s*      #E#EQAJJLL#E#E#E#E#E#Er    )rT   tupler   rW   s    r!   r`   z_Concatenation.simplify  s-    ~~e#E#E$*#E#E#EEEFFFr    )r/   r   )r   r   r   r   r   r   r?   r   r   ra   r   r   r   rO   rb   r   rX   r\   r   rK   r`   r   r    r!   r   r   A  s        bb|]23S89999IX X XO7 Ox O O O OU3+=%>    8eC#$67     #4wwqzz & &c & & & &PG G G G G Gr    r   c                   (   e Zd ZU eedf         ed<    ed          Zeed<    ed          Zeed<   d Z	dede
fd	Zdeeee         f         fd
Zdeeee         f         fdZdd ed          fdefdZ ed          fdededd fdZddZdS )r   .optionsr   added_flagsremoved_flagsc                 P    dd                     d | j        D                       z   S )Nz	Pattern:
r   c              3   P   K   | ]!}t          t          |          d           V  "dS r   r   r~   os     r!   r   z"Pattern.__str__.<locals>.<genexpr>  s2      'S'Ss1vvt(<(<'S'S'S'S'S'Sr    )r   r  rW   s    r!   r   zPattern.__str__  s*    dii'S'Sdl'S'S'SSSSSr    rJ   r/   c                     t          | j        | j                  t          j        fd| j        D              d         S )Nc              3   B   K   | ]}|                               V  d S r;   r   r   s     r!   r   z(Pattern._get_alphabet.<locals>.<genexpr>  s/      LL!u 5 5LLLLLLr    r   )r<   r  r  r   r   r  rN   s    `r!   rO   zPattern._get_alphabet  sC    ud&68JKK~LLLLt|LLLMaPPr    c                 h    d\  }}| j         D ]"}|j        \  }}|||k     r|}||||k    r|}#||fS )N)Nr   )r  r^   )rG   r   r   r  olohs         r!   r\   zPattern._get_lengths  s[    	T 	 	AYFB{b3hhzd.299Dyr    c                 d    d\  }}| j         D ] }|j        \  }}||k    r|}||||k    r|}!||fS rt   )r  rI   )rG   r   r   r  opreoposts         r!   rX   zPattern._get_prefix_postfix  sX    	T 	 	A*KD%czz}!1edllDyr    Nc                     t          | j        | j                  |                               | j        t          j        fd| j        D              S )Nc              3   F   K   | ]}|                               V  d S r;   )rK   )r~   r  rH   rJ   rI   s     r!   r   z!Pattern.to_fsm.<locals>.<genexpr>  s3      [[188HneDD[[[[[[r    )r<   r  r  rU   rI   r   r   r  rF   s    ```r!   rK   zPattern.to_fsm  sm    ud&68JKK((//H!!0Ny[[[[[[dl[[[\\r    r8   r9   c                 :    |                      | j        ||          S r;   )rT   r  )rG   r8   r9   s      r!   
with_flagszPattern.with_flags  s    ~~dlE7;;;r    c                 J   t          | j                  dk    r| j        d         }t          |t                    rt          |j                  dk    rt          |j        d         t
                    ru|j        d                                         }t          t          t          d          | j	        | j
                  |j	        |j
                  }|                    |          S |                     t          d | j        D                       | j	        | j
                  S )Nry   r   c              3   >   K   | ]}|                                 V  d S r;   r  r  s     r!   r   z#Pattern.simplify.<locals>.<genexpr>  s*      #G#GQAJJLL#G#G#G#G#G#Gr    )lenr  r   r   r   r   r`   r<   r   r  r  r   rT   r  )rG   r  r   r   s       r!   r`   zPattern.simplify  s    t|!!QA!^,, 'QW1B1BzRSRYZ[R\^eGfGf1BWQZ0022">'!**d>NPTPb#c#c#$=!/C C||A&~~e#G#G$,#G#G#GGGIY[_[mnnnr    )r/   r   )r   r   r   r   r?   r   r   r  r  r   r   rO   rb   r   r\   rX   r   rK   r   r`   r   r    r!   r   r     su        <$%%%%"71::K%%%$WQZZM7'''T T TQ7 Qx Q Q Q QeC#$67    U3+=%>     #4wwqzz ] ]c ] ] ] ] =DGAJJ < < <' <9 < < < <o o o o o or    r   c                       e Zd ZU  eh d          Zee         ed<    eddh          Zee         ed<    eh d          Z	ee         ed<   def fd	Z
 fd
Zd Zd Zd Zd Zd Zd Zd ZdefdZdefdZddZd ZdefdZ xZS )_ParsePattern>   *$()+.?[\^|SPECIAL_CHARS_STANDARDr.  ]SPECIAL_CHARS_INNER>   ABUZr   uRESERVED_ESCAPESdatac                 f    t          t          |                               |           d | _        d S r;   )rR   r%  __init__rJ   )rG   r:  rT   s     r!   r<  z_ParsePattern.__init__  s,    mT""++D111


r    c                 ~    	 t          t          |                                           S # t          $ r t          w xY wr;   )rR   r%  parser   r   rZ   s    r!   r>  z_ParsePattern.parse  sE    	 --33555 	  	  	 	 s   &* <c                 ~    d | _         |                                 }| j         |                    | j                   }|S r;   )rJ   patternr   rG   r   s     r!   startz_ParsePattern.start  s6    
LLNN:!TZ((Ar    c                    |                                  g}|                     d          r<|                    |                                             |                     d          <t          t	          |                    S )Nr0  )concstatic_br   r   r  )rG   r  s     r!   r@  z_ParsePattern.pattern  si    99;;-mmC   	(NN499;;''' mmC   	(uW~~&&&r    c                     g }	 	 |                     |                                            n# t          $ r Y nw xY w:t          t	          |                    S r;   )r   objr   r   r  )rG   r   s     r!   rD  z_ParsePattern.conc  si    	TXXZZ((((   	
 eEll+++s   '- 
::c                     |                      d          r|                                 S |                     |                                           S )Nr(  )rE  group
repetitionatomrW   s    r!   rG  z_ParsePattern.obj   s>    == 	 ::<<tyy{{+++r    c                     |                      d          r|                                 S |                                 }|                     d           |                     |          S )Nr,  r)  )rE  extension_groupr@  staticrJ  rA  s     r!   rI  z_ParsePattern.group  sY    == 	&'')))AKK??1%%%r    c           	         |                                  }|dv r| xj        dz  c_        |                     ddd           }|                     d          r|                     ddd           }nd}|                     d          rn|                                 }|                    t          |          t          |                    }|                     d           |                     |          S |dk    rt          |                     d           t          |          | _
        t          S |dk    r>|                                 }|                     d           |                     |          S |d	k    r|                     d
          rj|                     ddd            |                     d           |                                 }|                     d           |                     |          S |                     d          rt          d          d S |dk    rB|                     d          s+|                                   |                     d          )d S d S |dk    r:|                                 }|                     d           t          |dd          S |dk    r:|                                 }|                     d           t          |dd          S |d
k    r|                                  }|dk    r:|                                 }|                     d           t          |dd          S |dk    r:|                                 }|                     d           t          |dd          S d S |dk    rt          d          t          d|d| j        | j        dz
  | j        dz                      )NzaiLmsux-ry   aiLmsuxr   -r   r   r)  P<r   >=$Group references are not implemented#F!Tr(  z'Conditional matching is not implementedzUnknown group-extension: z (Context:       )anyindexmultiplerE  r@  r   r6   rN  rJ  r   rJ   _EMPTYr   r   r   r:  )rG   r5   r  r  r   s        r!   rM  z_ParsePattern.extension_group  s   HHJJ
??JJ!OJJ--	1d;;K}}S!! # $iD A A "}}S!! 
LLNNLLK!8!8*]:S:STTC   q)))"$$C   '44
#XXAKK??1%%%#XX}}S!! J_abdhiiiC   LLNNC   q)))s## J!"HIIIJ J#XXmmC(( 


 mmC((     #XXAKK E5111#XXAKK E4000#XX

ACxxLLNNC   $Qe444cLLNNC   $Qd333  #XXGHHHhAhhDIdjSTnUYU_bcUcFc<dhhj j jr    c                 `   |                      d          r'|                     |                                           S |                      d          r'|                     |                                           S |                      d          r|                     t                    S |                      d          rt          d          |                      d          rt          d           | j        | j         }|                     t          t          |h          d                    S )	Nr-  r.  r+  r'  z'$'r/  z'^'F)
rE  rJ  	chargroupescaped_DOTr   any_butr1  ri   r   )rG   r5   s     r!   rK  z_ParsePattern.atomI  s   == 	F??4>>#3#3444]]4   
	F??4<<>>222]]3 	F??4(((]]3 	Fe$$$]]3 	Fe$$$d9:A??:inne#D#DEEEr    r7   c                    |                      d          r'|                      d          r	 t          |dd           S |                      d          r'|                      d          r	 t          |dd           S |                      d          r'|                      d          r	 t          |dd          S |                      d          r	 |                                 }n# t          $ r d}Y nw xY w|                      d          r(	 |                                 }n# t          $ r d }Y nw xY w|}|                     d           |                      d          r	 t          |||          S |S )	Nr&  r,  r   r*  ry   {,})rE  r   numberr   rN  )rG   r7   r   r,   s       r!   rJ  z_ParsePattern.repetitionX  s   == 	}}S!! T1d+++]]3 	}}S!! T1d+++]]3 	}}S!! T1a(((]]3 	KKMM   }}S!! AA   AAA KK}}S!! T1a(((Ks$   C   C/.C/D D,+D,r/   c                 J    t          |                     ddd                     S )Nr   ry   )rb   r]  rW   s    r!   rh  z_ParsePattern.numberx  s     4==q$77888r    Fc                 J   |                      d          rR|                     ddd          }t          t          |d                    }t	          t          |h          d          S |                      d          rR|                     ddd          }t          t          |d	                    }t	          t          |h          d          S |                     d
dddd          rt          d          |s	 |                     ddd          }t          t          |d	                    }t	          t          |h          d          S # t          $ r Y nw xY w	 |                     ddd           t          d          # t          $ r Y ngw xY w	 |                     ddd          }t          t          |d	                    }t	          t          |h          d          S # t          $ r Y nw xY w|s3	  | j	        | j
         }t          d| d          # t          $ r Y nw xY w	  | j	        t           }t          |         S # t          $ r Y nw xY w|                     d          }|                                rt          t	          t          |          d          S )Nx0123456789abcdefABCDEF      F001234567ry      Nr   rR  r8  r6  z2regex module unicode properties are not supported.rY  r   rV  zEscape \r1   4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ)rE  r]  chrrb   ri   r   anyof_br   r   anyofr9  _CHAR_GROUPSrc  isalpha)rG   r   r   r5   s       r!   ra  z_ParsePattern.escaped{  s   == 	561==AC2JJAinne444== 	5j!Q//AC1IIAinne444<<S#sC00 	TRSSS 	99MM*a33 Aq		NN!)QC..%888	    
JlAq111 ""HIII    
9MM*a33 Aq		NN!)QC..%888	    
  	FFDJ 56 ""Da"D"D"DEEE    	#
L)A  ?"  	 	 	D	 LLOPP99;; 	M)A,,...sZ   :E 
EEF 
FFG& &
G32G39H 
H('H(,I 
IIc                    |                      d          rd}nd}g }	 	 |                    |                                            n# t          $ r Y nw xY w:|                     d           t          |          dk    r2t          |          d         }t          |j        ||j	        z            S t          |          dk    rt          t          i           |          S t          |d|iS )Nr/  TFr2  ry   r   r   )rE  r   chargroup_innerr   rN  r#  r  ri   rj   rk   r   r   )rG   r   r   r   s       r!   r`  z_ParsePattern.chargroup  s    == 	FFF	d22445555   	
 	Cv;;!fa Aagv	'9:::[[AimmV444'????s   'A 
AAc           
         | j         }|                     d          r|                     d          }n*t          t	           | j        | j                   d          }|                     d          ri|                     d          r|                     d          }nl|                     d          r-t          |t          t	          d          d          d          S t          t	           | j        | j                   d          }t          |j
                  dk    st          |j
                  dk    r$t          d| j        || j                             t          |j
         t          |j
         }}||k    r$t          d| j        || j                             t          t	          d	 t          ||dz             D                       d          S |S )
Nr.  TFrQ  r2  )r   ry   zInvalid Character-range: c              3   4   K   | ]}t          |          V  d S r;   )rt  )r~   r+   s     r!   r   z0_ParsePattern.chargroup_inner.<locals>.<genexpr>  s(      (N(NAQ(N(N(N(N(N(Nr    )r\  rE  ra  ri   r   rc  r3  peek_staticr   r#  rj   r   r:  ordrange)rG   rB  r7   endr   r   s         r!   rz  z_ParsePattern.chargroup_inner  s   
== 	Y<<%%DDid6N(OPPRWXXD== 	X}}T"" \ll4((!!#&& \+D*Ys^^U2S2S\abbbb <4<9Q+R!S!SUZ[[4:!##s39~~':':#$]	%PTPZJZ@[$]$]^^^TZ(#sy/CTzz#$]	%PTPZJZ@[$]$]^^^i(N(NsD1H9M9M(N(N(NOOQVWWWr    )F)r   r   r   r   r1  r
   rn   r   r3  r9  r<  r>  rB  r@  rD  rG  rI  rM  rK  rg   rJ  rb   rh  ra  r`  ri   rz  rd   re   s   @r!   r%  r%    s        -6Y 8 8 8 . .IcN    +4)c5 + +3    (1y 2 2 2 ( (in   S                 ' ' ', , ,, , ,
& & &:j :j :jxF F F{    @9 9 9 9 91/ 1/ 1/ 1/f@ @ @(        r    r%  r@  c                 t    t          |           }|                                }|                                }|S r;   )r%  r>  r`   )r@  r   outs      r!   r   r     s.    gA
''))C
,,..CJr    )9r   abcr   r   dataclassesr   enumr   r   textwrapr   typingr	   r
   r   r   r   interegular.fsmr   r   r   r   interegular.utils.simple_parserr   r   r   __all__	Exceptionr   r   r   r&   r(   r*   r2   rn   r6   r<   r?   rg   ri   r   r   r   rb  r^  r   _NONEr   rw  r   	_ALL_STARr   r   r   r%  r   r   r    r!   <module>r     s_    $ # # # # # # # ! ! ! ! ! !               > > > > > > > > > > > > > > A A A A A A A A A A A A J J J J J J J J J J
Q
Q
Q	 	 	 	 	) 	 	 		 	 	 	 	I 	 	 	    d    
		
 
S W      7     $+" +" +" +" +"3 +" +" +"\	 	 	 	 	, 	 	 	 $< < < < < < < <~8* 8 8 8 8 $    {   B $       ( xzz	
99R==%((z))B--&&	II_``bg	h	h	II_``bf	g	g	IIl++U	3	3	IIl++T	2	2	IIm,,e	4	4	IIm,,d	3	3	IIdOOU	+	+	IIdOOU	+	+	IIdOOU	+	+	IIdOOU	+	+	IIdOOU	+	+	IIdOOU	+	+	IIdOOU	+	+ $ $(H (H (H (H (H (H (H (HV IdAt$$	 $R R R R R R R R $YG YG YG YG YG\ YG YG YGx $3o 3o 3o 3o 3ok 3o 3o 3ol@ @ @ @ @L) @ @ @F3 7      r    