
    
`i                         d Z ddlmZmZm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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  G d de	          Z G d d          ZdS )z(This module implements a LALR(1) Parser
    )DictAnyOptional   )TokenLexerThread)	Serialize)
ParserConfParserCallbacks   )LALR_AnalyzerIntParseTableParseTableBase)InteractiveParser)UnexpectedCharactersUnexpectedInputUnexpectedToken)ParserState	ParseConfc                   v    e Zd ZddededefdZedd            Zdded	e	e
ef         fd
Zdede
fdZddZdS )LALR_ParserFparser_confdebugstrictc                     t          |||          }|                                 |j        }|j        | _        || _        t          |j        ||          | _        d S )N)r   r   )r   compute_lalr	callbacksparse_table_parse_tabler   _Parserparser)selfr   r   r   analysisr   s         l/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/lark/parsers/lalr_parser.py__init__zLALR_Parser.__init__   s]     E&III)	$0&h2IuEE    c                     |                      |           }t          j        ||          |_        t	          |j        ||          |_        |S N)__new__r   deserializer   r    r!   )clsdatamemor   r   insts         r$   r*   zLALR_Parser.deserialize   sC    {{3)5dDAAd/EBBr&   Nr-   returnc                 6    | j                             |          S r(   )r   	serialize)r"   r-   s     r$   r1   zLALR_Parser.serialize"   s     **4000r&   lexerstartc                 <    | j                             ||d          S )NT)start_interactive)r!   parse)r"   r2   r3   s      r$   parse_interactivezLALR_Parser.parse_interactive%   s    {   FFFr&   c                    	 | j                             ||          S # t          $ r0}| 	 t          |t                    r|j        j        j        }|j        j	        } ||          s|t          |t                    r:||j        j	        k    r*|j        
                    |j        ||dz                       	 |j                                        cY d }~S # t          $ rW}t          |t                    r6|j        j        |j        j        cxk    rdk    rn n|j        |j        k    r||}Y d }~nd }~wt          $ r}|}Y d }~nd }~ww xY w'd }~ww xY w)NTr   $END)r!   r6   r   
isinstancer   interactive_parserlexer_threadstateline_ctrchar_posfeedtextresume_parser   tokentype)r"   r2   r3   on_errorespe2s           r$   r6   zLALR_Parser.parse(   s   	;$$UE222 	 	 	a!566 ,,9?A
+Ax{{ Ga!566 7AJ///
q1u666
/<<>>>>>>>>&   "1o66 !GLBHMCCCCVCCCCC0B4III AAAAAA+   AAAAAA-		sR    EBE;CE
E#AD50E5EE	E	EEE)FFFr(   )__name__
__module____qualname__r
   boolr%   classmethodr*   r   r   strr1   r   r7   r6    r&   r$   r   r      s        F FJ Ft F4 F F F F    [1 1c 1T#s(^ 1 1 1 1G{ G3 G G G G     r&   r   c                   t    e Zd ZU eed<   eed<   eed<   ddededefdZddede	fd	Z
dd
edee         fdZdS )r    r   r   r   Fc                 0    || _         || _        || _        d S r(   )r   r   r   )r"   r   r   r   s       r$   r%   z_Parser.__init__N   s    &"


r&   Nr2   r3   c                     t          | j        | j        |          }t          ||||          }|rt	          | ||j                  S |                     |          S r(   )r   r   r   r   r   r2   parse_from_state)r"   r2   r3   value_stackstate_stackr5   
parse_confparser_states           r$   r6   z_Parser.parseS   s]    t/GG
":uk;OO 	M$T<9KLLL$$\222r&   r=   
last_tokenc                 t   	 |}|j                             |          D ]}|J |                    |           |rt          j        dd|          nt          ddddd          }|                    |d          S # t
          $ r4}	 t          | ||j                   |_        n# t          $ r Y nw xY w|d}~wt          $ rv}| j
        rit          d           t          d           t          d           t          |j                  D ]\  }}t          d	|z  |           t          d            d}~ww xY w)
zRun the main LALR parser loop

        Parameters:
            state - the initial state. Changed in-place.
            last_token - Used only for line information in case of an empty lexer.
        Nr9    r   r   TzSTATE STACK DUMPz----------------z%d))r2   lex
feed_tokenr   new_borrow_posr   r   r;   	NameError	Exceptionr   print	enumeraterW   )r"   r=   rZ   rC   	end_tokenrF   irG   s           r$   rU   z_Parser.parse_from_state[   s   	E// ( ((((  ''''CHh,VR???eTZ\^`acdfgNhNhI##It444 	 	 	'8uek'R'R$$   G 		 		 		z b			()))()))%e&788 ) )DAq%!)a((((b					sC   A8A; ;
D7B"!B4"
B/,B4.B//B44D7A1D22D7rJ   )NNFr(   )rK   rL   rM   r   __annotations__r   rN   r%   r   rP   r6   r   r   r   rU   rQ   r&   r$   r    r    I   s         KKK N  W[    
3 3; 3s 3 3 3 3 k x      r&   r    N)__doc__typingr   r   r   r2   r   r   utilsr	   commonr
   r   lalr_analysisr   r   r   lalr_interactive_parserr   lark.exceptionsr   r   r   lalr_parser_stater   r   r   r    rQ   r&   r$   <module>ro      s4    ' & & & & & & & & & & & & & & & & &       0 0 0 0 0 0 0 0 G G G G G G G G G G 6 6 6 6 6 6 R R R R R R R R R R 5 5 5 5 5 5 5 55 5 5 5 5) 5 5 5p0 0 0 0 0 0 0 0 0 0r&   