
    
`i                         d 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
 ddlmZmZmZmZ g dZ G d d	e          Z G d
 de          Z ed          Zd Z G d dee         e          ZdS )zU
A small util to simplify the creation of Parsers for simple context-free-grammars.

    )ABCabstractmethod)defaultdictwraps)FunctionType
MethodType)GenericTypeVarOptionalList)nomatchNoMatchSimpleParserc                       e Zd Zd ZdS )r   c                     d S N selfs    s/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/interegular/utils/simple_parser.py__init__znomatch.__init__   s        N)__name__
__module____qualname__r   r   r   r   r   r      s#            r   r   c                   8     e Zd Zdededee         f fdZ xZS )r   dataindexexpectedc                     || _         || _        || _        t          t          |                               d| d|||dz            d| d||dz
  |dz                       d S )NzCan not match at index z. Got    z, expected any of z.
Context(data[-10:+10]): 
   )r   r   r    superr   r   )r   r   r   r    	__class__s       r   r   zNoMatch.__init__   s    	
 gt%% 'b 'b 'bTRWX]`aXaRaMb 'b 'b:B'b 'bAEebjRWZ\R\F\A]'b 'b 	c 	c 	c 	c 	cr   )r   r   r   strintr   r   __classcell__)r%   s   @r   r   r      sc        cS c cS	 c c c c c c c c c cr   r   Tc                 <     t                      fd            }|S )Nc                 X    | j         }	  | g|R i |S # t          $ r	 || _          w xY wr   )r   r   )r   argskwargspms       r   wz_wrap_reset.<locals>.w"   sT    J	1T+D+++F+++ 	 	 	DJ	s    )r   )r/   r0   s   ` r   _wrap_resetr1   !   s3    
1XX    X Hr   c                       e Zd ZdefdZd ZdefdZedefd            Z	dede
fdZdefd	Zdede
fd
ZdedefdZdede
fdZddedefdZdddedefdZdededee         defdZdS )r   r   c                 T    || _         d| _        t          t                    | _        d S )Nr   )r   r   r   list	_expected)r   r   s     r   r   zSimpleParser.__init__/   s#    	
$T**r   c                     | j                                         D ]M\  }}t          |t                    r3|                    d          st          | |t          |                     Nd S )N_)__dict__items
isinstancer   
startswithsetattrr1   )clsr-   nvs       r   __init_subclass__zSimpleParser.__init_subclass__4   sk    L&&(( 	0 	0DAq!\** 01<<3D3D 0QA///	0 	0r   returnc           	         	 |                                  }nT# t          $ rG t          | j        t	          | j                  | j        t	          | j                                     d w xY w| j        t          | j                  k     rEt          | j        t	          | j                  | j        t	          | j                                     |S r   )startr   r   r   maxr5   r   len)r   results     r   parsezSimpleParser.parse9   s    	iZZ\\FF 	i 	i 	i$)S%8%8$.T^I\I\:]^^dhh	i:DI&&$)S%8%8$.T^I\I\:]^^^s
    AA(c                     t           r   )NotImplementedErrorr   s    r   rC   zSimpleParser.startB   s    !!r   r    c                     t          |          }| j        | j        | j        |z            |k    rdS | j        | j                                     |           dS NTFrE   r   r   r5   appendr   r    ls      r   peek_staticzSimpleParser.peek_staticF   sS    MM9TZ
Q./8;;4N4:&--h7775r   c                     t          |          }| j        | j        | j        |z            |k    r| xj        |z  c_        d S | j        | j                                     |           t
          r   )rE   r   r   r5   rM   r   )r   r    lengths      r   staticzSimpleParser.staticN   sc    X9TZ
V 334@@JJ& JJJJN4:&--h777Mr   c                     t          |          }| j        | j        | j        |z            |k    r| xj        |z  c_        dS | j        | j                                     |           dS rK   rL   rN   s      r   static_bzSimpleParser.static_bV   sb    MM9TZ
Q./8;;JJ!OJJ4N4:&--h7775r   stringsc                 L    |D ]}|                      |          r|c S t          r   )rU   r   r   rV   ss      r   anyofzSimpleParser.anyof_   s:     	 	A}}Q  Mr   c                 @    |D ]}|                      |          r dS dS rK   )rU   rX   s      r   anyof_bzSimpleParser.anyof_bf   s8     	 	A}}Q tt 5r      rR   c                     | j         |z   t          | j                  k    r.| j        | j         | j         |z            }| xj         |z  c_         |S | j        | j                                      d| d           t
          )N<Any >r   rE   r   r5   rM   r   )r   rR   ress      r   anyzSimpleParser.anym   sy    :#di..00)DJtzF'::;CJJ& JJJN4:&--.?f.?.?.?@@@Mr   )rR   c                r   | j         |z   t          | j                  k    re| j        | j         | j         |z            }||vr| xj         |z  c_         |S | j        | j                                      d| d| d           t
          | j        | j                                      d| d| d           t
          )Nr_   z except r`   ra   )r   rR   rV   rb   s       r   any_butzSimpleParser.any_butv   s    :#di..00)DJtzF'::;C'!!

f$


tz*112T&2T2T'2T2T2TUUUN4:&--.Pf.P.Pg.P.P.PQQQMr   charsmimac                    g }	 t          |          D ]p}| j        | j        |z            |v r)|                    | j        | j        |z                       B| j        | j        |z                                |           t          n# t          $ r t          w xY w| xj        |z  c_        |	 	 | j        | j                 |v r6|                    | j        | j                            | xj        dz  c_        n&| j        | j                                     |           nqn# t          $ r Y nw xY w	 t          ||z
            D ]q}| j        | j                 |v r6|                    | j        | j                            | xj        dz  c_        L| j        | j                                     |            n# t          $ r Y nw xY wd                    |          S )NTr]    )	ranger   r   rM   r5   extendr   
IndexErrorjoin)r   rf   rg   rh   rF   offr7   s          r   multiplezSimpleParser.multiple   s   	Ryy " "9TZ#-.%77MM$)DJ,<"=>>>>N4:#34;;EBBB!M"  	 	 	M	

b

:	y,55di
&;<<<

a


tz299%@@@    	rBw  Ay,55di
&;<<<

a


tz299%@@@   wwvs2   B B B-A2D   
D-,D-1BF6 6
GGN)r]   )r   r   r   r&   r   r@   r)   rG   r   rC   boolrP   rS   rU   rZ   r\   r'   rc   re   r   rp   r   r   r   r   r   .   s       +S + + + +
0 0 0
q     "q " " " ^"C D    s         c c          # c     /0    C    "c "s " "# " " " " " "r   r   N)__doc__abcr   r   collectionsr   	functoolsr   typesr   r	   typingr
   r   r   r   __all__BaseExceptionr   
ValueErrorr   r)   r1   r   r   r   r   <module>r{      sR   
 $ # # # # # # # # # # # # #       * * * * * * * * 3 3 3 3 3 3 3 3 3 3 3 3
0
0
0    m   
c c c c cj c c c GCLL
 
 
w w w w w71:s w w w w wr   