
    PiCb                     h   U d dl Z d dlmZ d dlmZ d dlmZmZmZm	Z	m
Z
  ed           G d d                      Z G d	 d
          ZdZe
edf         ed<   i Zeeef         ed<   eD ]Ze                    d          rf ee          dk    rWed                                         r=eeedd                                         edd                                         z   <   }eee                                <   dZdZdZdZdZdZdez   dz   ez   dz   Zdez   Zeez   ez   Zeez   ez   Z dZ!dZ"dZ#dZ$d Z%d!Z&d"Z'd#e$z   d$z   e%z   d$z   e&z   d%z   Z(d&Z)d'e(z   dz   Z*d(e*z   d(z   Z+d)e+z   Z,d*e+z   Z-d+e+z   Z.d,e+z   Z/d(e*z   d-z   Z0d.e*z   d/z   e*z   d0z   Z1d.e*z   d1z   e'z   d2z   Z2d3e)z   dz   Z3d4e3z   d5z   Z4d)e4z   Z5d*e4z   Z6d+e4z   Z7d,e4z   Z8d4e3z   d6z   e'z   e3z   d5z   Z9d7Z:d8Z;d9e;z   dz   e:z   d:z   e:z   d;z   Z<d<Z=d=ez   d>z   ez   d?z   ez   d@z   Z>dAez   dAz   ez   d$z   e>z   dz   e=z   dBz   Z? G dC dDe          Z@ edE           G dF dG                      ZA eAdHe"e@jB        dI           eAdJe#e@jB        dI           eAdKe9e@jB        dL           eAdMe5e@jC        d           eAdNe6e@jC        d           eAdOe7e@jC        d           eAdPe8e@jC        d           eAdQe4e@jC        d           eAdRe?e@jC        d           eAdSe<e@jC        d           eAdTee@jC        d           eAdUe e@jC        d           eAdVe!e@jB        dW           eAdXee@jC        d           eAdYee@jC        d           eAdZe0e@jC        d           eAd[e+e@jC        d           eAd\e,e@jC        d           eAd]e-e@jC        d           eAd^e.e@jC        d           eAd_e/e@jC        d           eAd`e1e@jB        da           eAdbe2e@jB        d           eAdcee@jD        d          gZEeeA         edd<   i ZFeee
e@e	e         f         f         ede<   g ZGee         edf<   eED ]>ZHeHjI        eHjJ        feFeHjK        <   eGL                    dgeHjK         dheHjM         d           ? e jN        d$O                    eG                    ZPe jQ        e         edi<    edE           G dj dk                      ZRg  eRdldm           eRdndo           eRdpdq           eRdrds           eRdtdu           eRdvdw           eRdxdy           eRdzd{           eRd|d}           eRd~d           eRdd           eRdd           eRdd           eRdd           eRdd           eRdd           eRdd           eRdd           eRdd           eRdd           eRdd           eRdd           eRdd           eRdd           eRdd           eRdd6           eRdd           eRdd           eRdd$           eRdd           eRdd           eRdd           eRdd           eRdd           eRddh           eRdd           eRddA           eRdd           eRdd           eRdd           eRdd           eRdd           eRdd           eRdd           eRdd           eRdd¦          ZSeeR         ed<   i ZTeeeeR         f         ed<   eSD ]6ZUeTV                    eUjW        d          g           L                    eU           7eTX                                D ]ZYeYZ                    dń dƦ            e jN        dǦ          Z[e jQ        e         ed<    e jN        dɦ          Z\e jQ        e         ed<   dS )    N)	dataclass)Enum)CallableDictListOptionalTupleT)slotsc                   8    e Zd ZU eed<   eed<   eed<   eed<   dS )_TokentypevaluelinenocolumnN)__name__
__module____qualname__str__annotations__int     e/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pycparser/c_lexer.pyr   r      s4         
IIIJJJKKKKKKKKr   r   c            
       ,   e Zd ZdZdeeeegdf         deg df         deg df         deegef         ddf
dZdd
ededdfdZ	ddZ
edefd            Zdee         fdZdee         fdZdedededefdZdededdfdZddZdee         fdZdS )CLexera  A standalone lexer for C.

    Parameters for construction:
        error_func:
            Called with (msg, line, column) on lexing errors.
        on_lbrace_func:
            Called when an LBRACE token is produced (used for scope tracking).
        on_rbrace_func:
            Called when an RBRACE token is produced (used for scope tracking).
        type_lookup_func:
            Called with an identifier name; expected to return True if it is
            a typedef name and should be tokenized as TYPEID.

    Call input(text) to initialize lexing, and then keep calling token() to
    get the next token, until it returns None (at end of input).
    
error_funcNon_lbrace_funcon_rbrace_functype_lookup_funcreturnc                 f    || _         || _        || _        || _        |                                  d S N)r   r   r   r   _init_state)selfr   r   r   r   s        r   __init__zCLexer.__init__)   s;     %,, 0r    textfilenamec                 J    |                                   || _        || _        dS )zInitialize the lexer to the given input text.

        filename is an optional name identifying the file from which the input
        comes. The lexer can modify it if #line directives are encountered.
        N)r#   _lexdata	_filename)r$   r'   r(   s      r   inputzCLexer.input6   s(     	!r   c                 Z    d| _         d| _        d| _        d| _        d | _        d| _        d S )Nr&   r      )r*   r+   _pos_line_start_pending_tok_linenor$   s    r   r#   zCLexer._init_state@   s2    	.2r   c                     | j         S r"   )r+   r3   s    r   r(   zCLexer.filenameH   s
    ~r   c                    | j         }t          |          }| j        | j        }d | _        |S | j        |k     r|| j                 xxdk    rn	xdk    rn n  | xj        dz  c_        nOxdk    r/ | xj        dz  c_        | xj        dz  c_        | j        | _        ndk    rt                              || j        dz             r%| xj        dz  c_        |                                  t                              || j        dz             ra| xj        dz  c_        | 
                                }t          |          dk    r|d         | _        t          |          dk    r|d         S C|                     dd| j                  }| xj        dz  c_        |S 	 |                                 x}r|S | j        |k     d S d S )N 	r.   
#r   PPHASH)r*   lenr1   r/   r2   r0   _line_patternmatch_handle_ppline_pragma_pattern_handle_pppragma_make_token_match_token)r$   r'   ntoktokss        r   tokenzCLexer.tokenL   s   6 }II(#C $DJi!mmty/SSSSS444444444IINIIITTTTLLA%LLIINII'+yD$$SS$**4Q?? !		Q		++--- &,,T49q=AA !		Q		#4466t99q==04QD-t99q==#'7N **8S$)DDCIINIIJ"//111s !"
 9 i!mmmmmmr   c                    | j         }| j        }d}t                              ||          x}rF|j        }|J |                    |          }t          |          }t          |         \  }}	|||||	f}t          	                    ||                   x}
r_|
D ]\}|
                    |j        |          r?t          |j                  }|||d         k    r||j        |j        t          j        df} n]|@dt          ||                    }	|                     |	|           | xj        dz  c_        dS |\  }}}}}	|t          j        k    rE|dk    rd| }	|	J |                     |	|           | xj        t%          d|          z  c_        dS |t          j        k    r8t(          	                    |d          }|dk    r|                     |          rd}|                     |||          }| xj        |z  c_        |j        d	k    r|                                  n|j        d
k    r|                                  |S )zMatch one token at the current position.

        Returns a Token on success, or None if no token could be matched and
        an error was reported. This method always advances _pos by the matched
        length, or by 1 on error/no-match.
        Nr   zIllegal character r.   BAD_CHAR_CONSTzInvalid char constant IDTYPEIDLBRACERBRACE)r*   r/   _regex_masterr=   	lastgroupgroupr;   _regex_actions_fixed_tokens_by_firstget
startswithliteraltok_type_RegexActionTOKENrepr_errorERRORmaxrI   _keyword_mapr   rA   r   r   r   )r$   r'   posbestmrU   r   lengthactionmsgbucketentryrD   s                r   rB   zCLexer._match_token   s}    }i ##D#...1 	:{H'''GGH%%EZZF(2KFCHeVS9D+//S	:::6 	  ??5=#66 
 //F|vQ'7'7"!N!M(.   E
 <8tDI88CKKS!!!IINII4/3,%\'''+++6u66???KKS!!!IIQ'II4\_$$#''t44H4D$9$9%$@$@#x44		V		8x!!!!X!!!!!
r   rU   r   r]   c                 N    || j         z
  dz   }t          ||| j        |          }|S )a#  Create a Token at an absolute input position.

        Expects tok_type/value and the absolute byte offset pos in the current
        input. Does not advance lexer state; callers manage _pos themselves.
        Returns a Token with lineno/column computed from current line tracking.
        r.   )r0   r   r2   )r$   rU   r   r]   r   rD   s         r   rA   zCLexer._make_token   s0     t''!+XudlF;;
r   rb   c                 X    || j         z
  dz   }|                     || j        |           d S Nr.   )r0   r   r2   )r$   rb   r]   r   s       r   rY   zCLexer._error   s2    t''!+T\622222r   c                 H   	
  j         }t          |          }|                    d j                  

dk    r|
| j        
         	dt          	          d	fd} |             	                    d          rdz  dt
          t                   d	t
          t                   dd f
 fd
}dt          dt          dd f
 fd} |             k    r |d d            d S 	         dk    r |d           d S t          j	        t          	d                    }|s |d           d S |                    d          }t          |          z   |             k    r ||d            d S 	         dk    r |d           d S t          j	        t          	d                    }|s |d           d S |                    d                              d                              d          }t          |                    d                    z  	  |             k    rnXt          j	        t          	d                    }|s |d           d S t          |                    d                    z  i |||           d S )Nr8   r   r    c                  ^    k     r!          dv rdz  k     r          dv d S d S d S d S )N 	r.   r   )lineline_lenr]   s   r   skip_wsz&CLexer._handle_ppline.<locals>.skip_ws  sP    ..T#Y%%7%7q ..T#Y%%7%7%7%7....%7%7r   rl      pp_linepp_filenamec                     |                      dj        z              nt          |           _        ||_        dz   _        j        _        d S )Nzline number missing in #liner.   )rY   r/   r   r2   r+   r0   )rp   rq   line_endrm   r$   s     r   successz&CLexer._handle_ppline.<locals>.success  s\    :DI<PQQQQ"7||*%0DN 1DI#yDr   rb   offsetc                 p                         | j        |z              dz   _        j        _        d S rg   )rY   r/   r0   )rb   ru   rs   r$   s     r   failz#CLexer._handle_ppline.<locals>.fail  s9    KKTY/000 1DI#yDr   "z$filename before line number in #linezinvalid #line directiveTr    N)r*   r;   findr/   rS   r   r   r   rer=   _decimal_constantrO   _string_literallstriprstrip)r$   r'   rC   rn   rt   rw   r_   rp   rq   rl   rs   rm   r]   s   `        @@@@r   r>   zCLexer._handle_ppline   s<   ( }II99T49--r>>HDI()t99	 	 	 	 	 	 	 	
 				??63'' 	1HC	)Xc] 	)# 	)4 	) 	) 	) 	) 	) 	) 	) 	)	)c 	)3 	)4 	) 	) 	) 	) 	) 	) 	)
 				(??GD$F9D7===FH&STT
33 	D*C000F''!**s7||			(??GGT"""F9D*C000FH_d344j11 	D*C000Fggajj'',,33C88s1771::	#GIIIh*DJ77A .4443qwwqzz??"C	# 	%%%%%r   c                    | j         }t          |          }| j        }||k     r||         dv r|dz  }||k     r
||         dv ||k    r	|| _        g S |                    d|          s"|                     d|           |dz   | _        g S |}|t          d          z  }|                     dd|          g}||k     r||         dv r|dz  }||k     r
||         dv |}||k     r#||         dk    r|dz  }||k     r||         dk    ||k    r2|                    |                     d|||         |                     ||k     r(||         dk    r| xj        dz  c_        |dz  }|| _        || _        |S )Nrk   r.   pragmazinvalid #pragma directivePPPRAGMAr8   PPPRAGMASTR)	r*   r;   r/   rS   rY   rA   appendr2   r0   )r$   r'   rC   r]   
pragma_posrE   starts          r   r@   zCLexer._handle_pppragmaK  s    }IIiAgg$s)u,,1HC Agg$s)u,,!88DIIx-- 	KK3S999aDII
s8}}  XzBBCAgg$s)u,,1HC Agg$s)u,, Agg$s)t++1HC Agg$s)t++;;KK((U3YOOPPP77tCyD((LLALL1HC"D	r   )r&   ry   )r   r   r   __doc__r   r   r   boolr%   r,   r#   propertyr(   r   r   rF   rB   rA   rY   r>   r   r@   r   r   r   r   r      s        "c3_d23 !T* !T*	
 #C5$;/ 
   " "# " "d " " " "    #    X?!x' ?! ?! ?! ?!BKhv. K K K KZ	C 	 	# 	& 	 	 	 	3# 3C 3D 3 3 3 3`& `& `& `&D*$v, * * * * * *r   r   )-AUTOBREAKCASECHARCONSTCONTINUEDEFAULTDODOUBLEELSEENUMEXTERNFLOATFORGOTOIFINLINEINTLONGREGISTEROFFSETOFRESTRICTRETURNSHORTSIGNEDSIZEOFSTATICSTRUCTSWITCHTYPEDEFUNIONUNSIGNEDVOIDVOLATILEWHILE__INT128_BOOL_COMPLEX	_NORETURN_THREAD_LOCAL_STATIC_ASSERT_ATOMIC_ALIGNOF_ALIGNAS_PRAGMA.	_keywordsr\   _r.      z[a-zA-Z_$][0-9a-zA-Z_$]*z0[xX]z[0-9a-fA-F]+z0[bB]z[01]+zD(([uU]ll)|([uU]LL)|(ll[uU]?)|(LL[uU]?)|([uU][lL])|([lL][uU]?)|[uU])?z(0z)|([1-9][0-9]*)z0[0-7]*z0[0-7]*[89]z\/\*z\/\/z,([a-wyzA-Z._~!=&\^\-\\?'"]|x(?![0-9a-fA-F]))z(\d+)(?!\d)z(x[0-9a-fA-F]+)(?![0-9a-fA-F])z#([\\][^a-zA-Z._~^!=&\^\-\\?'"x0-9])z(\\(|z))z(\\[0-9a-zA-Z._~!=&\^\-\\?'"])z
([^'\\\n]|'Lu8uUz{2,4}'z('z*\n)|('z*$)z[^'
]+')|('')|('z	[^'\n]*')z
([^"\\\n]|rx   z*"*z([eE][-+]?[0-9]+)z([0-9]*\.[0-9]+)|([0-9]+\.)z((((z
?)|([0-9]+z
))[FfLl]?)z([pP][+-]?[0-9]+)z(((z)?\.z)|(z\.))(z[FfLl]?)c                       e Zd ZdZdZdZdS )rV   r   r.   r   N)r   r   r   rW   rI   rZ   r   r   r   rV   rV   2  s        E	
BEEEr   rV   )frozenc                   D    e Zd ZU eed<   eed<   eed<   ee         ed<   dS )
_RegexRulerU   regex_patternra   error_messageN)r   r   r   r   r   rV   r   r   r   r   r   r   8  sE          MMMC=     r   r   UNSUPPORTED_C_STYLE_COMMENTzKComments are not supported, see https://github.com/eliben/pycparser#3using.UNSUPPORTED_CXX_STYLE_COMMENTBAD_STRING_LITERALz#String contains invalid escape codeWSTRING_LITERALU8STRING_LITERALU16STRING_LITERALU32STRING_LITERALSTRING_LITERALHEX_FLOAT_CONSTFLOAT_CONSTINT_CONST_HEXINT_CONST_BINBAD_CONST_OCTzInvalid octal constantINT_CONST_OCTINT_CONST_DECINT_CONST_CHAR
CHAR_CONSTWCHAR_CONSTU8CHAR_CONSTU16CHAR_CONSTU32CHAR_CONSTUNMATCHED_QUOTEzUnmatched 'rH   rI   _regex_rulesrP   _regex_pattern_partsz(?P<>rM   c                   $    e Zd ZU eed<   eed<   dS )_FixedTokenrU   rT   N)r   r   r   r   r   r   r   r   r   r     s"         MMMLLLLLr   r   ELLIPSISz...LSHIFTEQUALz<<=RSHIFTEQUALz>>=PLUSPLUSz++
MINUSMINUSz--ARROWz->LANDz&&LORz||LSHIFTz<<RSHIFTz>>LEz<=GEz>=EQz==NEz!=
TIMESEQUALz*=DIVEQUALz/=MODEQUALz%=	PLUSEQUALz+=
MINUSEQUALz-=ANDEQUALz&=OREQUALz|=XOREQUALz^=EQUALS=PLUS+MINUS-TIMESDIVIDE/MOD%ORAND&NOT~XOR^LNOT!LT<GTCONDOP?LPARENRPARENLBRACKET[RBRACKET]rK   {rL   }COMMA,PERIOD.SEMI;COLON:_fixed_tokensrQ   c                 *    t          | j                  S r"   )r;   rT   )items    r   <lambda>r&    s    #dl"3"3 r   )keyreversez([ \t]*line\W)|([ \t]*\d+)r<   z[ \t]*pragma\Wr?   )]r{   dataclassesr   enumr   typingr   r   r   r   r	   r   r   r   r   r   r\   keywordrS   r;   isalphaupperlower_identifier_hex_prefix_hex_digits_bin_prefix_bin_digits_integer_suffix_optr|   _octal_constant_hex_constant_bin_constant_bad_octal_constant_unsupported_c_style_comment_unsupported_cxx_style_comment_simple_escape_decimal_escape_hex_escape_bad_escape_escape_sequence _escape_sequence_start_in_string_cconst_char_char_const_wchar_const_u8char_const_u16char_const_u32char_const_multicharacter_constant_unmatched_quote_bad_char_const_string_charr}   _wstring_literal_u8string_literal_u16string_literal_u32string_literal_bad_string_literal_exponent_part_fractional_constant_floating_constant_binary_exponent_part_hex_fractional_constant_hex_floating_constantrV   r   rZ   rW   rI   r   rP   r   _rulera   r   rU   r   r   compilejoinrM   Patternr   r#  rQ   _entry
setdefaultrT   values_bucketsortr<   r?   r   r   r   <module>r`     s:   
				 ! ! ! ! ! !       8 8 8 8 8 8 8 8 8 8 8 8 8 8        ^ ^ ^ ^ ^ ^ ^ ^H.	5c? . . .`  "d38n ! ! ! 0 0G# 033w<<!#3#3
8J8J8L8L#3BIWRaR[&&((7122;+<+<+>+>>??(/W]]__%% * L  	!114GG#M  11k),??k),??#   ' !( B E$38 . 3&83>LtS  $I   #33c9L 3&[ {"{"{"-8 ,&3lBUJ 66DGWW 
 !#CCcI$t+( ?* ?* ?* L(3.<|KdR  *9 
	
  	
    1 	K+%3e;kIKW  	
  
	

  

       4    $! ! ! ! ! ! ! ! J%$U	  J'&U	  J-	  J "2L4FMMJ!#4l6H$OOJ"$68JDQQJ"$68JDQQJ,2DdKKJ "8,:LdSSJ}0,2DdKKJ|/A4HHJ|/A4HHJ 	  J1CTJJJ 1<3EtLLJ!9<;MtTTJ|[,*<dCCJ}lL,>EEJ~}l.@$GGJ0BDIIJ0BDIIJ "2L4FVVJ,2DdKKJt[,/488Y-"d: - - -^ ACS%hsm ;<<= B B B"$ d3i $ $ $ P PE&+lE4G%HN5>" Nu~ N N8K N N NOOOO
 ",CHH5I,J,J!K!Krz# K K K $       
/$K
E""/$Ku%%/$ Ku%%/$ K
D!!	/$
 Kd##/$ K/$ K/$ Kt/$ K$/$ K$/$ Kd/$ Kd/$ Kd/$ Kd/$ Kd##/$  K
D!!!/$" K
D!!#/$$ KT""%/$& Kd##'/$( K
D!!)/$* K	4  +/$, K
D!!-/$. K#//$0 K1/$2 K3/$4 K5/$6 K#7/$8 Ks9/$: Kc;/$< Ks=/$> Ks?/$@ KsA/$B KC/$D KcE/$F KcG/$H K#I/$J K#K/$L K#M/$N K
C  O/$P K
C  Q/$R K#S/$T K#U/$V KW/$X K#Y/$Z K[/$\ K]/$tK  / / /l 8: S${"334 9 9 9 L LF%%fnQ&7<<CCFKKKK%,,.. C CGLL33TLBBBB!+,I!J!Jrz# J J J#-2:.?#@#@C @ @ @ @ @r   