Ë
    ðeœi³  ã                   ó¾   — d Z ddlmZmZ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 ddlmZmZmZ dd	lmZmZ dd
lmZ d„ Z G d„ de«      Z G d„ de«      Zy)zbThis is an experimental tool for reconstructing text from a shaped tree, based on a Lark grammar.
é    )ÚDictÚCallableÚIterableÚOptionalé   )ÚLark)ÚTreeÚ	ParseTree)ÚTransformer_InPlace)ÚTokenÚ
PatternStrÚTerminalDef)ÚTerminalÚNonTerminalÚSymbol)ÚTreeMatcherÚis_discarded_terminal)Úis_id_continuec                 ó:   — 	 t        | «      }y# t        $ r Y yw xY w)NFT)ÚnextÚStopIteration)ÚiÚ_s     úe/var/www/html/Whatsapp_Customer_Support_Chatbot/venv/lib/python3.12/site-packages/lark/reconstruct.pyÚis_iter_emptyr      s%   € ðÜ�‹GˆØøÜò Ùðús   ‚ Ž	™c                   ó€   — e Zd ZU dZeeef   ed<   eeee	gef   f   ed<   deeef   deeee	gef   f   ddfd„Z
d„ Zy)ÚWriteTokensTransformerzTInserts discarded tokens into their correct place, according to the rules of grammarÚtokensÚ	term_subsÚreturnNc                 ó    — || _         || _        y ©N)r   r   )Úselfr   r   s      r   Ú__init__zWriteTokensTransformer.__init__   s   € ØˆŒØ"ˆ�ó    c                 óÚ  — t        |dd«      st        ||«      S t        |«      }g }|j                  D ]Á  }t	        |«      r2	  | j
                  |j                     |«      }|j                  |«       Œ@t        |«      }	t        |	t         «      r||	z  }Œat        |	t"        «      rt%        |	j&                  «      |k(  s(J |	«       ‚t)        |	j*                  «      |k(  s	J ||	f«       ‚|j                  |	«       ŒÃ t-        |«      sJ ‚|S # t        $ r[ | j                  |j                     }t        |j                  t        «      st        d|z  «      ‚|j                  j                  }Y �Œw xY w)NÚ
match_treeFz,Reconstructing regexps not supported yet: %s)Úgetattrr	   ÚiterÚorig_expansionr   r   ÚnameÚKeyErrorr   Ú
isinstanceÚpatternr   ÚNotImplementedErrorÚvalueÚappendr   Úlistr   r   Útyper   Údatar   )
r#   r4   ÚchildrenÚmetaÚ	iter_argsÚto_writeÚsymÚvÚtÚxs
             r   Ú__default__z"WriteTokensTransformer.__default__!   sE  € Ü�t˜\¨5Ô1Ü˜˜hÓ'Ð'ä˜“Nˆ	ØˆØ×&Ñ&ò 	'ˆCÜ$ SÔ)ð(Ø0˜Ÿ™ s§x¡xÑ0°Ó5�Að —‘ Õ"ä˜“O�Ü˜a¤Ô&Ø ‘M‘Hä! !¤UÔ+Ü'¨¯©Ó/°3Ò6Ð9¸Ó9Ð6ä*¨1¯6©6Ó2°cÒ9ÐC¸CÀ¸8ÓCÐ9Ø—O‘O AÕ&ð)	'ô, ˜YÔ'Ð'Ð'Øˆøô'  ò (ØŸ™ C§H¡HÑ-�AÜ% a§i¡i´Ô<Ü1Ð2`ÐcdÑ2dÓeÐeàŸ	™	Ÿ™“Að(ús   ÁDÄA E*Å)E*)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ústrr   Ú__annotations__r   r   r$   r=   © r%   r   r   r      ss   … ÙZà��kÐ!Ñ"Ó"Ø�C˜ 6 (¨C -Ñ0Ð0Ñ1Ó1ð#˜t C¨Ð$4Ñ5ð #À$ÀsÈHÐV\ÐU]Ð_bÐUbÑLcÐGcÑBdð #Ðimó #ór%   r   c            
       óŒ   — e Zd ZU dZeed<   ddedeee	e
ege	f   f      ddfd„Zd„ Zdd	ed
ee
ee	   gee	   f      dede	fd„Zy)ÚReconstructora™  
    A Reconstructor that will, given a full parse Tree, generate source code.

    Note:
        The reconstructor cannot generate values from regexps. If you need to produce discarded
        regexes, such as newlines, use `term_subs` and provide default values for them.

    Parameters:
        parser: a Lark instance
        term_subs: a dictionary of [Terminal name as str] to [output text as str]
    Úwrite_tokensNÚparserr   r    c                 óª   — t        j                  | |«       t        | j                  D �ci c]  }|j                  |“Œ c}|xs i «      | _        y c c}w r"   )r   r$   r   r   r+   rG   )r#   rH   r   r;   s       r   r$   zReconstructor.__init__P   sB   € Ü×Ñ˜T 6Ô*ä2ÀdÇkÁkÖ3RÀ°A·F±F¸1±HÒ3RÐT]ÒTcÐacÓdˆÕùÒ3Rs   ªAc              #   óè   K  — | j                  ||j                  «      }| j                  j                  |«      }|D ]0  }t	        |t
        «      r| j                  |«      E d {  –—†  Œ-|–— Œ2 y 7 Œ­wr"   )r'   r4   rG   Ú	transformr-   r	   Ú_reconstruct)r#   ÚtreeÚunreduced_treeÚresÚitems        r   rL   zReconstructor._reconstructU   sg   è ø€ ØŸ™¨¨t¯y©yÓ9ˆà×Ñ×)Ñ)¨.Ó9ˆØò 	ˆDÜ˜$¤Ô%à×,Ñ,¨TÓ2×2Ñ2à“
ñ	ð 3ús   ‚A!A2Á#A0Á$A2rM   ÚpostprocÚinsert_spacesc                 óü   — | j                  |«      }|r ||«      }g }d}|D ]H  }|r1|r/|r-t        |d   «      rt        |d   «      r|j                  d«       |j                  |«       |}ŒJ dj                  |«      S )NÚ éÿÿÿÿr   ú )rL   r   r1   Újoin)r#   rM   rQ   rR   r<   ÚyÚ	prev_itemrP   s           r   ÚreconstructzReconstructor.reconstruct`   s„   € Ø×Ñ˜dÓ#ˆÙÙ˜“ˆAØˆØˆ	Øò 	ˆDÙ¡©t¼ÀyÐQSÁ}Ô8UÔZhÐimÐnoÑipÔZqØ—‘˜”Ø�H‰H�TŒNØ‰Ið		ð
 �w‰w�q‹zÐr%   r"   )NT)r>   r?   r@   rA   r   rC   r   r   r   rB   r   r   r$   rL   r
   r   ÚboolrZ   rD   r%   r   rF   rF   A   s–   … ñ
ð )Ó(ñe˜tð e°¸¸cÀ8ÈVÈHÐVYÈMÑCZÐ>ZÑ9[Ñ0\ð eÐfjó eò
	ñ 	ð °X¸hÈÐQTÉÀÐX`ÐadÑXeÐGeÑ>fÑ5gð ð  ~Bð ð  LOô r%   rF   N)rA   Útypingr   r   r   r   Úlarkr   rM   r	   r
   Úvisitorsr   Úlexerr   r   r   Úgrammarr   r   r   Útree_matcherr   r   Úutilsr   r   r   rF   rD   r%   r   ú<module>rc      sL   ðñ÷ 6Ó 5å ß !Ý )ß 1Ñ 1ß 2Ñ 2ç <Ý !òô'Ð0ô 'ôT*�Kõ *r%   