
    h'                        % S SK JrJrJrJrJrJrJr  SSKJ	r	J
r
Jr  SSKJrJr  SSKJrJrJrJr  SSKJrJrJr  SSKJr  SSKJr  SS	KJrJrJrJ r   \(       a  SS
K!J"r"  S r#S r$0 r%S\&S'    " S S\5      r'S*S jr(S r) " S S5      r*S\4S jr+S\S\4S jr,S+S\S\S\4S jjr-\-\%S'    " S S5      r.S\S\4S jr/S  r0S\S\4S! jr1S\S\S\Rd                  4S" jr3 " S# S$5      r4\3\%S%'   \4\%S&'   S'\S(\ 4S) jr5g),    )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                 X   ^  [        T SS5      nU(       a  T $  " U 4S jS[        5      nU$ )N__future_interface__Fc                   (   > \ rS rSrU 4S jrS rSrg)'_wrap_lexer.<locals>.CustomLexerWrapper   c                     > T" U5      U l         g Nlexer)self
lexer_conflexer_classs     hC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\lark/parser_frontends.py__init__0_wrap_lexer.<locals>.CustomLexerWrapper.__init__   s    (4
    c                 L    U R                   R                  UR                  5      $ r$   )r&   lextext)r'   lexer_stateparser_states      r*   r/   +_wrap_lexer.<locals>.CustomLexerWrapper.lex   s    zz~~k&6&677r-   r%   N__name__
__module____qualname____firstlineno__r+   r/   __static_attributes__)r)   s   r*   CustomLexerWrapperr!      s    58r-   r:   )getattrr   )r)   future_interfacer:   s   `  r*   _wrap_lexerr=      s0    {,BEJ	8 	8
 "!r-   c                     [         R                  " U S   U5      nU=(       a    UR                  R                  S5      =(       d    [        nUR                  U S   XUR
                  5      nX5l        [        X%XGS9$ )Nparser_confr   parser)r@   )r   deserialize_pluginsgetr   debug	callbacksParsingFrontend)datamemor(   rE   optionsr?   clsr@   s           r*   _deserialize_parsing_frontendrK      sf    ((m)<dCK:w''++M:
J{C__T(^TgmmLF%:GKKr-   z/Dict[str, Callable[[LexerConf, Any, Any], Any]]_parser_creatorsc                       \ rS rSr% Sr\\S'   \\S'   \\S'   SS\S\4S jjr	SS jr
S	\S
\\\4   4S jrSS	\4S jjrSS	\\   4S jjrSrg)rF   )   )r(   r?   r@   r(   r?   rI   Nc                    X l         Xl        X0l        U(       a  X@l        OP[        R                  UR                  5      nUc    SR                  UR                  5      5       eU" XU5      U l        UR                  nSU l	        US;   a  UR                  b   eSU l	        g [        U[        5      (       a.  [        U[        5      (       d   e[        U5      " U5      U l        OT[        U["        5      (       a4  [$        [&        S.U   nU" XR                  UR                  U5      U l        O[)        S5      eUR                  (       a&  [+        U R                   UR                  5      U l        g g )Nz&{} is not supported in standalone modeF)dynamicdynamic_completeTbasic
contextualz&Bad value for lexer_type: {lexer_type})r?   r(   rI   r@   rL   rC   parser_typeformat
lexer_type
skip_lexerpostlex
isinstancetype
issubclassr   r=   r&   strcreate_basic_lexercreate_contextual_lexer	TypeErrorPostLexConnector)r'   r(   r?   rI   r@   create_parserrW   create_lexers           r*   r+   ParsingFrontend.__init__0   sI   &$  K,001H1HIM , .V.].]++/ , (
IDK  **
88%%---"DOj$''j%0000$Z0<DJ
C((+5 L &j++z?Q?QSZ[DJDEE)$**j6H6HIDJ r-   c                     Uc7  U R                   R                  n[        U5      S:  a  [        SU5      eUu  nU$ XR                   R                  ;  a'  [        SU< SU R                   R                  < 35      eU$ )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 )r?   startlenr   )r'   rf   start_declss      r*   _verify_startParsingFrontend._verify_startV   s    =**00K;!#(  *I  KV  W  W GE  **000$SXZ^ZjZjZpZp%qrrr-   r0   returnc                     U R                   =(       a%    U R                   R                  R                  S5      =(       d    [        nU R                  (       a  U$ UR                  U R                  U5      $ )Nr   )rI   rB   rC   r   rX   	from_textr&   )r'   r0   rJ   s      r*   _make_lexer_thread"ParsingFrontend._make_lexer_thread`   sJ    ||H 5 5 9 9- HX[tKCMM$**d,KKr-   c                     U R                  U5      nUc  0 OSU0nU R                  U5      nU R                  R                  " Xd40 UD6$ )Non_error)ri   rn   r@   parse)r'   r0   rf   rq   chosen_startkwstreams          r*   rr   ParsingFrontend.parsed   sM    ))%0#R*h)?((.{{  <<<r-   c                     U R                  U5      nU R                  R                  S:w  a  [        S5      eU R	                  U5      nU R
                  R                  XC5      $ )Nlalrz<parse_interactive() currently only works with parser='lalr' )ri   r?   rU   r   rn   r@   parse_interactive)r'   r0   rf   rs   ru   s        r*   ry   !ParsingFrontend.parse_interactivej   sY     ))%0''61$%cdd((.{{,,VBBr-   )r&   r(   rI   r@   r?   rX   r$   )NN)r5   r6   r7   r8   __serialize_fields__r   __annotations__r   r   r+   ri   r]   r   r   rn   rr   r   ry   r9    r-   r*   rF   rF   )   sy    @L$J9 $J: $JLLs LuS+5E/F L=# =Chsm C Cr-   rF   rk   Nc                 x    [        U S5        [        U[        5      (       d  SSSS.U    n[        XSU -  5        g g )N)rx   r   r   rR   )rS   rP   rQ   )rS   z9Parser %r does not support lexer %%r, expected one of %%s)r   rZ   r[   )r@   r&   expecteds      r*   _validate_frontend_argsr   t   sL    &34eT""+> 	
 	e'bek'kl #r-   c                 n    0 nU H,  n[        XR                  S 5      nUc  M  XBUR                  '   M.     U$ r$   )r;   name)transformer	terminalsresultterminalcallbacks        r*   _get_lexer_callbacksr      s:    F;t<$,8==!  Mr-   c                        \ rS rSrS rS rSrg)ra      c                     Xl         X l        g r$   r&   	postlexer)r'   r&   r   s      r*   r+   PostLexConnector.__init__   s    
"r-   c                 n    U R                   R                  X5      nU R                  R                  U5      $ r$   )r&   r/   r   process)r'   r1   r2   is       r*   r/   PostLexConnector.lex   s)    JJNN;5~~%%a((r-   r   Nr4   r}   r-   r*   ra   ra      s    #)r-   ra   c                 t    U=(       a    UR                   R                  S5      =(       d    [        nU" U 5      $ )Nr   )rB   rC   r   )r(   r@   rY   rI   rJ   s        r*   r^   r^      s,    9w''++L9
HjCz?r-   r(   c           	      L   U=(       a    UR                   R                  S5      =(       d    [        nUR                  nUR                  R                  5        VVs0 s H  u  pgU[        UR                  5       5      _M!     nnnU(       a  UR                  OSn	U" XU	S9$ s  snnf )Nr   r}   )always_accept)	rB   rC   r   _parse_tablestatesitemslistkeysr   )
r(   r@   rY   rI   rJ   parse_tableidxtr   r   s
             r*   r_   r_      s    >w''++,=>
R?C'-':':KKVK]K]KcKcKe)fKe#d1668n*<KeF)f>EW%:%:2Mz?? *gs   &B r?   c                     U(       a  UR                   OSnU(       a  UR                  OSnU=(       a    UR                  R                  S5      =(       d    [        nU" XUS9$ )NFr   )rD   strict)rD   r   rB   rC   r   )r(   r?   rI   rD   r   rJ   s         r*   create_lalr_parserr      sI    $GMM%E&W^^EF:w''++M:
J{C{77r-   rx   c                   $    \ rS rSrS rSS jrSrg)EarleyRegexpMatcher   c                    0 U l         UR                   H  nUR                  R                  5       n [	        U5      S   nUS:X  a  [        SU5      e UR                  (       a  UR                  S5      nUR                  R                  X1R                  5      U R                   UR                  '   M     g ! [         a    [        SUR                  < SU< 35      ef = f)Nr   z/Dynamic Earley doesn't allow zero-width regexpszBad regexp in token z: zutf-8)regexpsr   pattern	to_regexpr   r   
ValueErrorr   	use_bytesencode	re_modulecompileg_regex_flags)r'   r(   r   regexpwidths        r*   r+   EarleyRegexpMatcher.__init__   s    %%AYY((*F](03 A:&'XZ[\\ ##w/#-#7#7#?#?H`H`#aDLL  &  T"1666#RSSTs   B66(Cc                 R    U R                   UR                     R                  X#5      $ r$   )r   r   match)r'   termr0   indexs       r*   r   EarleyRegexpMatcher.match   s     ||DII&,,T99r-   )r   N)r   )r5   r6   r7   r8   r+   r   r9   r}   r-   r*   r   r      s    b :r-   r   c                     U R                   (       a  [        S5      e[        U 5      n[        R                  " XUR
                  40 UD6$ )Nz7Earley's dynamic lexer doesn't support lexer_callbacks.)rE   r   r   r   Parserr   )r(   r?   rt   earley_matchers       r*   create_earley_parser__dynamicr      s=    TUU(4N>>*>3G3GN2NNr-   c                 4    U R                   UR                  :H  $ r$   )r   r[   )r   tokens     r*   _match_earley_basicr      s    99

""r-   c                 :    [         R                  " X[        40 UD6$ r$   )r   r   r   )r(   r?   rt   s      r*   create_earley_parser__basicr      s    ==2ELLLr-   c                 D   UR                   S:H  nU(       a  UR                  OSnUR                   S:w  a  UR                  =(       d    [        OS n0 nU R                  S:X  a  [
        nO"U R                  S:X  a  SUS'   [
        nO[        nU" X4UXEUR                  S.UD6$ )	NresolveFforestrP   rQ   Tcomplete_lex)resolve_ambiguityrD   
tree_classordered_sets)	ambiguityrD   r   r   rW   r   r   r   )r(   r?   rI   r   rD   r   extrafs           r*   create_earley_parserr      s    ))Y6$GMM%E/6/@/@H/L##+tRVJE	))			"4	4 $n)'Z ]8Ig>R>R]V[] ]r-   c                   0    \ rS rSrSS jrS rS rS rSrg)	CYK_FrontEnd   Nc                 p    [         R                  " UR                  5      U l        UR                  U l        g r$   )r   r   rulesr@   rE   )r'   r(   r?   rI   s       r*   r+   CYK_FrontEnd.__init__   s%    jj!2!23$..r-   c                     [        UR                  S 5      5      nU R                  R                  X25      nU R	                  U5      $ r$   )r   r/   r@   rr   
_transform)r'   lexer_threadrf   tokenstrees        r*   rr   CYK_FrontEnd.parse   s:    l&&t,-{{  /t$$r-   c                    [        UR                  5       5      nU HK  nUR                   Vs/ s H+  n[        U[        5      (       a  U R                  U5      OUPM-     snUl        MM     U R                  U5      $ s  snf r$   )r   iter_subtreeschildrenrZ   r   _apply_callback)r'   r   subtreessubtreecs        r*   r   CYK_FrontEnd._transform   su    **,-G_f_o_op_oZ[:a;N;N 4 4Q 7TU U_opG   ##D))  qs   2A<c                 T    U R                   UR                     " UR                  5      $ r$   )rE   ruler   )r'   r   s     r*   r   CYK_FrontEnd._apply_callback   s    ~~dii(77r-   )rE   r@   r$   )	r5   r6   r7   r8   r+   rr   r   r   r9   r}   r-   r*   r   r      s    /
%
*8r-   r   r   r   rU   rW   c                     [        U[        5      (       d   e[        U[        5      (       d   eXl        Xl        [        X#U5      $ r$   )rZ   r   r   rU   rW   rF   )rU   rW   r(   r?   rI   s        r*   _construct_parsing_frontendr      sC     j),,,,k:....)&:G<<r-   )rk   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   r=   rK   rL   r|   rF   r   r   ra   r^   r_   r   r   r   r   r   r   r   r   r   r}   r-   r*   <module>r      sX   R R R G G . B B ) ) ,  H H5

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