
    
`i'                        U d dl mZmZmZmZmZmZmZ ddlm	Z	m
Z
mZ ddlmZmZ ddlmZmZmZmZ ddlmZmZmZ ddlmZ ddlmZ dd	lmZmZmZm Z  erdd
l!m"Z" d Z#d Z$i Z%de&d<    G d de          Z'd*dZ(d Z) G d d          Z*defdZ+dedefdZ,d+dededefdZ-e-e%d<    G d d          Z.dedefdZ/d  Z0dedefd!Z1dededej2        fd"Z3 G d# d$          Z4e3e%d%<   e4e%d&<   d'ed(e fd)Z5dS ),    )AnyCallableDictOptional
CollectionUnionTYPE_CHECKING   )ConfigurationErrorGrammarErrorassert_config)get_regexp_width	Serialize)LexerThread
BasicLexerContextualLexerLexer)earleyxearleycyk)LALR_Parser)Tree)	LexerConf
ParserConf_ParserArgType_LexerArgType)ParseTableBasec                 \     t           dd          }|r S  G  fddt                    }|S )N__future_interface__Fc                        e Zd Z fdZd ZdS )'_wrap_lexer.<locals>.CustomLexerWrapperc                 (     |          | _         d S N)lexer)self
lexer_conflexer_classs     i/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/lark/parser_frontends.py__init__z0_wrap_lexer.<locals>.CustomLexerWrapper.__init__   s    ([44


    c                 @    | j                             |j                  S r#   )r$   lextext)r%   lexer_stateparser_states      r(   r,   z+_wrap_lexer.<locals>.CustomLexerWrapper.lex   s    z~~k&6777r*   N__name__
__module____qualname__r)   r,   )r'   s   r(   CustomLexerWrapperr!      s=        5 5 5 5 58 8 8 8 8r*   r4   )getattrr   )r'   future_interfacer4   s   `  r(   _wrap_lexerr7      s`    {,BEJJ "	8 	8 	8 	8 	8 	8 	8 	8 	8 	8
 "!r*   c                     t          j        | d         |          }|r|j                            d          pt          }|                    | d         |||j                  }||_        t          ||||          S )Nparser_confr   parser)r:   )r   deserialize_pluginsgetr   debug	callbacksParsingFrontend)datamemor&   r?   optionsr9   clsr:   s           r(   _deserialize_parsing_frontendrE      su    (m)<dCCK:w'++M::
J{C__T(^T9gmLLF%K:{GFKKKKr*   z/Dict[str, Callable[[LexerConf, Any, Any], Any]]_parser_creatorsc                       e Zd ZU dZeed<   eed<   eed<   ddedefdZddZ	de
d	ee
ef         fd
Zdde
fdZddee
         fdZdS )r@   )r&   r9   r:   r&   r9   rC   Nc                    || _         || _        || _        |r|| _        nUt                              |j                  }|"J d                    |j                               ||||          | _        |j        }d| _	        |dv r|j
        J d| _	        d S t          |t                    r5t          |t                    sJ  t          |          |          | _        nWt          |t"                    r3t$          t&          d|         } ||| j        |j
        |          | _        nt)          d          |j
        r!t+          | j        |j
                  | _        d S d S )Nz&{} is not supported in standalone modeF)dynamicdynamic_completeTbasic
contextualz&Bad value for lexer_type: {lexer_type})r9   r&   rC   r:   rF   r=   parser_typeformat
lexer_type
skip_lexerpostlex
isinstancetype
issubclassr   r7   r$   strcreate_basic_lexercreate_contextual_lexer	TypeErrorPostLexConnector)r%   r&   r9   rC   r:   create_parserrP   create_lexers           r(   r)   zParsingFrontend.__init__0   s   &$  	J DKK,001HIIM ,,.V.].]+/ /,,, (-
KIIDK  *
888%---"DOFj$'' 
	Fj%000000Z00<<DJJ
C(( 	F+5  L &j$+z?QSZ[[DJJDEEE 	J)$*j6HIIDJJJ	J 	Jr*   c                     |4| j         j        }t          |          dk    rt          d|          |\  }n-|| j         j        vrt          d|d| j         j                  |S )Nr
   z]Lark initialized with more than 1 possible start rule. Must specify which start rule to parsezUnknown start rule z. Must be one of )r9   startlenr   )r%   r^   start_declss      r(   _verify_startzParsingFrontend._verify_startV   s    =*0K;!##(  *I  KV  W  W  W GEE$*000$$SXSXSXZ^ZjZpZp%qrrrr*   r-   returnc                     | j         r| j         j                            d          pt          }| j        r|n|                    | j        |          S )Nr   )rC   r<   r=   r   rQ   	from_textr$   )r%   r-   rD   s      r(   _make_lexer_threadz"ParsingFrontend._make_lexer_thread`   sG    |H 5 9 9- H HX[KttCMM$*d,K,KKr*   c                     |                      |          }|i nd|i}|                     |          } | j        j        ||fi |S )Non_error)ra   re   r:   parse)r%   r-   r^   rg   chosen_startkwstreams          r(   rh   zParsingFrontend.parsed   sZ    ))%00#RR*h)?((.. t{ <<<<<r*   c                     |                      |          }| j        j        dk    rt          d          |                     |          }| j                            ||          S )Nlalrz<parse_interactive() currently only works with parser='lalr' )ra   r9   rN   r   re   r:   parse_interactive)r%   r-   r^   ri   rk   s        r(   rn   z!ParsingFrontend.parse_interactivej   sb     ))%00'611$%cddd((..{,,V\BBBr*   r#   )NN)r1   r2   r3   __serialize_fields__r   __annotations__r   r   r)   ra   rV   r   r   re   rh   r   rn    r*   r(   r@   r@   )   s         @LLL$J $J9 $J: $J $J $J $JL   Ls LuS+5E/F L L L L= =# = = = =C Chsm C C C C C Cr*   r@   rb   Nc                     t          | d           t          |t                    s"dddd|          }t          ||d| z             d S d S )N)rm   r   r   rK   )rL   rI   rJ   )rL   z9Parser %r does not support lexer %%r, expected one of %%s)r   rS   rT   )r:   r$   expecteds      r(   _validate_frontend_argsrt   t   sr    &3444eT"" m+>  	
 	eX'bek'klllllm mr*   c                 X    i }|D ]$}t          | |j        d           }|
|||j        <   %|S r#   )r5   name)transformer	terminalsresultterminalcallbacks        r(   _get_lexer_callbacksr|      sA    F - -;t<<$,F8=!Mr*   c                       e Zd Zd Zd ZdS )rZ   c                 "    || _         || _        d S r#   )r$   	postlexer)r%   r$   r   s      r(   r)   zPostLexConnector.__init__   s    
"r*   c                 l    | j                             ||          }| j                            |          S r#   )r$   r,   r   process)r%   r.   r/   is       r(   r,   zPostLexConnector.lex   s-    JNN;55~%%a(((r*   Nr0   rq   r*   r(   rZ   rZ      s2        # # #) ) ) ) )r*   rZ   c                 ^    |r|j                             d          pt          } ||           S )Nr   )r<   r=   r   )r&   r:   rR   rC   rD   s        r(   rW   rW      s0    9w'++L99
HjC3z??r*   r&   c                     |r|j                             d          pt          }|j        }d |j                                        D             }|r|j        nd} || ||          S )Nr   c                 X    i | ]'\  }}|t          |                                          (S rq   )listkeys).0idxts      r(   
<dictcomp>z+create_contextual_lexer.<locals>.<dictcomp>   s,    )f)f)fa#d16688nn)f)f)fr*   rq   )always_accept)r<   r=   r   _parse_tablestatesitemsr   )r&   r:   rR   rC   rD   parse_tabler   r   s           r(   rX   rX      sv    >w'++,=>>
R?C'-':K)f)f;K]KcKcKeKe)f)f)fF>E%MW%:%:2M3z6????r*   r9   c                     |r|j         nd}|r|j        nd}|r|j                            d          pt          } ||||          S )NFr   )r>   strict)r>   r   r<   r=   r   )r&   r9   rC   r>   r   rD   s         r(   create_lalr_parserr      sY    $/GMM%E&1W^^EF:w'++M::
J{C3{%7777r*   rm   c                       e Zd Zd ZddZdS )EarleyRegexpMatcherc                    i | _         |j        D ]}|j                                        }	 t	          |          d         }|dk    rt          d|          n(# t          $ r t          d|j        d|          w xY w|j        r|	                    d          }|j
                            ||j                  | j         |j        <   d S )Nr   z/Dynamic Earley doesn't allow zero-width regexpszBad regexp in token z: zutf-8)regexpsrx   pattern	to_regexpr   r   
ValueErrorrv   	use_bytesencode	re_modulecompileg_regex_flags)r%   r&   r   regexpwidths        r(   r)   zEarleyRegexpMatcher.__init__   s    % 	b 	bAY((**F](003 A::&'XZ[\\\   T T T"l166666#RSSST
 # 0w//#-#7#?#?
H`#a#aDL  	b 	bs   A%A<r   c                 N    | j         |j                                     ||          S r#   )r   rv   match)r%   termr-   indexs       r(   r   zEarleyRegexpMatcher.match   s!    |DI&,,T5999r*   N)r   )r1   r2   r3   r)   r   rq   r*   r(   r   r      s:        b b b : : : : : :r*   r   c                 ~    | j         rt          d          t          |           }t          j        | ||j        fi |S )Nz7Earley's dynamic lexer doesn't support lexer_callbacks.)r?   r   r   r   Parserr   )r&   r9   rj   earley_matchers       r(   create_earley_parser__dynamicr      sI     VTUUU(44N>*k>3GNN2NNNr*   c                 "    | j         |j        k    S r#   )rv   rT   )r   tokens     r(   _match_earley_basicr      s    9
""r*   c                 4    t          j        | |t          fi |S r#   )r   r   r   )r&   r9   rj   s      r(   create_earley_parser__basicr      s    =[2ELLLLLr*   c                     |j         dk    }|r|j        nd}|j         dk    r|j        pt          nd }i }| j        dk    rt
          }n| j        dk    rd|d<   t
          }nt          } || |f||||j        d|S )	NresolveFforestrI   rJ   Tcomplete_lex)resolve_ambiguityr>   
tree_classordered_sets)	ambiguityr>   r   r   rP   r   r   r   )r&   r9   rC   r   r>   r   extrafs           r(   create_earley_parserr      s    )Y6$/GMM%E/6/@H/L/L#+tRVJE	)))		"4	4	4 $n)'1Z ]8IZg>R] ]V[] ] ]r*   c                   (    e Zd ZddZd Zd Zd ZdS )CYK_FrontEndNc                 Z    t          j        |j                  | _        |j        | _        d S r#   )r   r   rulesr:   r?   )r%   r&   r9   rC   s       r(   r)   zCYK_FrontEnd.__init__   s$    j!233$.r*   c                     t          |                    d                     }| j                            ||          }|                     |          S r#   )r   r,   r:   rh   
_transform)r%   lexer_threadr^   tokenstrees        r(   rh   zCYK_FrontEnd.parse   sF    l&&t,,--{  //t$$$r*   c                      t          |                                          }|D ]} fd|j        D             |_                             |          S )Nc                 h    g | ].}t          |t                    r                    |          n|/S rq   )rS   r   _apply_callback)r   cr%   s     r(   
<listcomp>z+CYK_FrontEnd._transform.<locals>.<listcomp>   s=    pppZ[:a;N;N U 4 4Q 7 7 7TUpppr*   )r   iter_subtreeschildrenr   )r%   r   subtreessubtrees   `   r(   r   zCYK_FrontEnd._transform   sd    **,,-- 	q 	qGpppp_f_opppG##D)))r*   c                 B     | j         |j                 |j                  S r#   )r?   ruler   )r%   r   s     r(   r   zCYK_FrontEnd._apply_callback   s    (t~di(777r*   r#   )r1   r2   r3   r)   rh   r   r   rq   r*   r(   r   r      sU        / / / /
% % %
* * *8 8 8 8 8r*   r   r   r   rN   rP   c                     t          |t                    sJ t          |t                    sJ | |_        ||_        t          |||          S r#   )rS   r   r   rN   rP   r@   )rN   rP   r&   r9   rC   s        r(   _construct_parsing_frontendr      sR     j),,,,,k:.....)K&J:{G<<<r*   )rb   Nr#   )6typingr   r   r   r   r   r   r	   
exceptionsr   r   r   utilsr   r   r$   r   r   r   r   parsersr   r   r   parsers.lalr_parserr   r   r   commonr   r   r   r   parsers.lalr_analysisr   r7   rE   rF   rp   r@   rt   r|   rZ   rW   rX   r   r   r   r   r   r   r   r   r   rq   r*   r(   <module>r      s   R R R R R R R R R R R R R R R R R R R G G G G G G G G G G . . . . . . . . B B B B B B B B B B B B ) ) ) ) ) ) ) ) ) ) , , , , , ,       H H H H H H H H H H H H 6555555

" 
" 
"L L L GI C H H HHC HC HC HC HCi HC HC HCVm m m m  ) ) ) ) ) ) ) )
    @	 @P_ @ @ @ @8 89 8: 8Xc 8 8 8 8 .  : : : : : : : :*Oi Oj O O O O# # #MI MJ M M M M]Y ]Z ]U[Ub ] ] ] ]&8 8 8 8 8 8 8 8, 2  &  =#=!= = = = = =r*   