K i@E:ddlZddlmZddlmZGddeZy)N)lex)TOKENceZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z iZe D]Zeeej!<e D],Zeeed d j#ed d j!z<.e e zdzZdZdZdZdZdZdZdezdzezdzZdezZeezezZeezezZdZdZdZdZ dZ!dZ"dZ#d e zd!ze!zd!ze"zd"zZ$d#Z%d$e$zdzZ&d%e&zd%zZ'd&e'zZ(d'e'zZ)d(e'zZ*d)e'zZ+d%e&zd*zZ,d+e&zd,ze&zd-zZ-d+e&zd.ze#zd/zZ.d0e%zdzZ/d1e/zd2zZ0d&e0zZ1d'e0zZ2d(e0zZ3d)e0zZ4d1e/zd3ze#ze/zd2zZ5d4Z6d5Z7d6e7zdze6zd7ze6zd8zZ8d9Z9d:ezd;zezdezd>zezd!ze:zdze9zd?zZ;d@Ze0dBZ?e>edCZ@dDZAdEZBdFZCdGZDdHZEdIZFdFZGdJZHdKZIdFZJdLZKdMZLdNZMdOZNdPZOdQZPdRZQdSZRdTZSdUZTdVZUdWZVdXZWdYZXdZZYd[ZZd\Z[d]Z\d^Z]d_Z^d`Z_daZ`dbZadcZbddZcdeZddfZedgZfdhZgdiZhdjZidkZjdlZkdmZldnZmdoZndpZodqZpdrZqdsZrdtZsduZtdvZudwZvdxZwe>dydzZxe>d{d|Zye0Zze>e8d}Z{e>e;d~Z|e>edZ}e>edZ~e>edZe>edZe>edZe>edZe>edZe>e,dZe>e'dZe>e(dZe>e)dZe>e*dZe>e+dZe>e-dZe>e.dZe>e1dZe>e2dZe>e3dZe>e4dZe>e5dZe>edZdZy )CLexera A lexer for the C language. After building it, set the input text with input(), and call token() to get new tokens. The public attribute filename can be set to an initial filename, but the lexer will update it upon #line directives. c||_||_||_||_d|_d|_t jd|_t jd|_ y)ab Create a new Lexer. error_func: An error function. Will be called with an error message, line and column as arguments, in case of an error during lexing. on_lbrace_func, on_rbrace_func: Called when an LBRACE or RBRACE is encountered (likely to push/pop type_lookup_func's scope) type_lookup_func: A type lookup function. Given a string, it must return True IFF this string is a name of a type that was defined with a typedef earlier. Nz([ \t]*line\W)|([ \t]*\d+)z[ \t]*pragma\W) error_funcon_lbrace_funcon_rbrace_functype_lookup_funcfilename last_tokenrecompile line_patternpragma_pattern)selfr r r r s W/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pycparser/c_lexer.py__init__zCLexer.__init__sY$%,, 0  JJ'DE jj):;c <tjdd|i||_y)z Builds the lexer from the specification. Must be called after the lexer object is created. This method exists separately, because the PLY manual warns against calling lex.lex inside __init__ objectN)rlexer)rkwargss rbuildz CLexer.build9sWW3D3F3 rc&d|j_y)z? Resets the internal line number counter of the lexer. rN)rlinenors r reset_linenozCLexer.reset_linenoCs rc:|jj|yN)rinput)rtexts rr$z CLexer.inputHs rcX|jj|_|jSr#)rtokenrr s rr'z CLexer.tokenKs ****,rc|jjjdd|j}|j|z S)z3 Find the column of the token in its line.  r)rlexdatarfindlexpos)rr'last_crs rfind_tok_columnzCLexer.find_tok_columnOs5**$$**4ELLA||g%%rc|j|}|j||d|d|jjdy)Nrr)_make_tok_locationr rskip)rmsgr'locations r_errorz CLexer._errorZs:**51 Xa[(1+6 rc<|j|j|fSr#)rr.)rr's rr0zCLexer._make_tok_location_s d2259::r)$AUTOBREAKCASECHARCONSTCONTINUEDEFAULTDODOUBLEELSEENUMEXTERNFLOATFORGOTOIFINLINEINTLONGREGISTEROFFSETOFRESTRICTRETURNSHORTSIGNEDSIZEOFSTATICSTRUCTSWITCHTYPEDEFUNIONUNSIGNEDVOIDVOLATILEWHILE__INT128) _BOOL_COMPLEX _NORETURN _THREAD_LOCAL_STATIC_ASSERT_ATOMIC_ALIGNOF_ALIGNAS_PRAGMAN)DIDTYPEID INT_CONST_DEC INT_CONST_OCT INT_CONST_HEX INT_CONST_BININT_CONST_CHAR FLOAT_CONSTHEX_FLOAT_CONST CHAR_CONST WCHAR_CONST U8CHAR_CONST U16CHAR_CONST U32CHAR_CONSTSTRING_LITERALWSTRING_LITERALU8STRING_LITERALU16STRING_LITERALU32STRING_LITERALPLUSMINUSTIMESDIVIDEMODORANDNOTXORLSHIFTRSHIFTLORLANDLNOTLTLEGTGEEQNEEQUALS TIMESEQUALDIVEQUALMODEQUAL PLUSEQUAL MINUSEQUAL LSHIFTEQUAL RSHIFTEQUALANDEQUALXOREQUALOREQUALPLUSPLUS MINUSMINUSARROWCONDOPLPARENRPARENLBRACKETRBRACKETLBRACERBRACECOMMAPERIODSEMICOLONELLIPSISPPHASHPPPRAGMA PPPRAGMASTRz[a-zA-Z_$][0-9a-zA-Z_$]*z0[xX]z [0-9a-fA-F]+z0[bB]z[01]+zD(([uU]ll)|([uU]LL)|(ll[uU]?)|(LL[uU]?)|([uU][lL])|([lL][uU]?)|[uU])?z(0z)|([1-9][0-9]*)z0[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]|'Lu8uUz{2,4}'z('z*\n)|('z*$)z[^' ]+')|('')|('z [^'\n]*')z ([^"\\\n]|"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]?)))ppline exclusive)pppragmarc|jj|jj|jjr*|jj ddx|_|_y|jj|jj|jjr|jj dyd|_ |S)z[ \t]*\#)posrNrr) rmatchrr*r,beginpp_line pp_filenamertyperts rt_PPHASHzCLexer.t_PPHASH&s    " "177?? " G GGMM( #.2 2DL4+  & &qwwAGGNN & K GGMM* %AFHrc|j|jd|y|jjdj d|_y)Nz$filename before line number in #liner)rr4valuelstriprstriprrs rt_ppline_FILENAMEzCLexer.t_ppline_FILENAME4s; <<  KK> B ww~~c299#>D rc@|j|j|_yyr#)rrrs rt_ppline_LINE_NUMBERzCLexer.t_ppline_LINE_NUMBER;s << 77DL rc|j|jd|nAt|j|j_|j |j |_|jjdy)\nNzline number missing in #lineINITIAL)rr4intrrrrrrs rt_ppline_NEWLINEzCLexer.t_ppline_NEWLINEDsY <<  KK6 : #DLL 1DJJ + $ 0 0   i rcy)lineNrrs rt_ppline_PPLINEzCLexer.t_ppline_PPLINEPs rz c(|jd|y)Nzinvalid #line directiver4rs rt_ppline_errorzCLexer.t_ppline_errorVs -q1rcx|jxjdz c_|jjdy)rrrN)rrrrs rt_pppragma_NEWLINEzCLexer.t_pppragma_NEWLINE\s$ !  i rc|S)pragmarrs rt_pppragma_PPPRAGMAzCLexer.t_pppragma_PPPRAGMAarcd|_|S)z.+r)rrs rt_pppragma_STRzCLexer.t_pppragma_STRgsrc(|jd|y)Nzinvalid #pragma directiverrs rt_pppragma_errorzCLexer.t_pppragma_errorls /3rct|jxj|jjdz c_y)z\n+r)N)rrrcountrs r t_NEWLINEzCLexer.t_NEWLINEus! !''----rz\+-z\*/%z\|&~z\^z<>z\|\|z&&!<>z<=z>=z==z!==z\*=z/=z%=z\+=z-=z<<=z>>=z&=z\|=z\^=z\+\+z--z->z\?z\(z\)z\[z\],z\.;:z\.\.\.z\{c&|j|Sr#)r rs rt_LBRACEzCLexer.t_LBRACE rz\}c&|j|Sr#)r rs rt_RBRACEzCLexer.t_RBRACErrc|Sr#rrs r t_FLOAT_CONSTzCLexer.t_FLOAT_CONSTrrc|Sr#rrs rt_HEX_FLOAT_CONSTzCLexer.t_HEX_FLOAT_CONSTrrc|Sr#rrs rt_INT_CONST_HEXzCLexer.t_INT_CONST_HEXrrc|Sr#rrs rt_INT_CONST_BINzCLexer.t_INT_CONST_BINrrc,d}|j||y)NzInvalid octal constantrrrr2s rt_BAD_CONST_OCTzCLexer.t_BAD_CONST_OCTs& Crc,d}|j||yNzKComments are not supported, see https://github.com/eliben/pycparser#3using.rrs rt_UNSUPPORTED_C_STYLE_COMMENTz$CLexer.t_UNSUPPORTED_C_STYLE_COMMENT[ Crc,d}|j||yrrrs rt_UNSUPPORTED_CXX_STYLE_COMMENTz&CLexer.t_UNSUPPORTED_CXX_STYLE_COMMENTrrc|Sr#rrs rt_INT_CONST_OCTzCLexer.t_INT_CONST_OCTrrc|Sr#rrs rt_INT_CONST_DECzCLexer.t_INT_CONST_DECrrc|Sr#rrs rt_INT_CONST_CHARzCLexer.t_INT_CONST_CHARrrc|Sr#rrs r t_CHAR_CONSTzCLexer.t_CHAR_CONSTrrc|Sr#rrs r t_WCHAR_CONSTzCLexer.t_WCHAR_CONSTrrc|Sr#rrs rt_U8CHAR_CONSTzCLexer.t_U8CHAR_CONSTrrc|Sr#rrs rt_U16CHAR_CONSTzCLexer.t_U16CHAR_CONSTrrc|Sr#rrs rt_U32CHAR_CONSTzCLexer.t_U32CHAR_CONST rrc,d}|j||y)Nz Unmatched 'rrs rt_UNMATCHED_QUOTEzCLexer.t_UNMATCHED_QUOTEs CrcFd|jz}|j||y)NzInvalid char constant %s)rr4rs rt_BAD_CHAR_CONSTzCLexer.t_BAD_CHAR_CONSTs(1772 Crc|Sr#rrs rt_WSTRING_LITERALzCLexer.t_WSTRING_LITERALrrc|Sr#rrs rt_U8STRING_LITERALzCLexer.t_U8STRING_LITERALrrc|Sr#rrs rt_U16STRING_LITERALzCLexer.t_U16STRING_LITERAL!rrc|Sr#rrs rt_U32STRING_LITERALzCLexer.t_U32STRING_LITERAL%rrc,d}|j||y)Nz#String contains invalid escape coderrs rt_BAD_STRING_LITERALzCLexer.t_BAD_STRING_LITERAL+s3 Crc|jj|jd|_|jdk(r"|j |jrd|_|S)Nrdre) keyword_mapgetrrr rs rt_IDz CLexer.t_ID0sH!!%%aggt4 66T>d33AGG<AFrc^dt|jdz}|j||y)NzIllegal character %sr)reprrr4rs rt_errorzCLexer.t_error7s'$tAGGAJ'77 Cr)__name__ __module__ __qualname____doc__rrr!r$r'r.r4r0keywords keywords_newrkeywordloweruppertokens identifier hex_prefix hex_digits bin_prefix bin_digitsinteger_suffix_optdecimal_constantoctal_constant hex_constant bin_constantbad_octal_constantunsupported_c_style_commentunsupported_cxx_style_comment simple_escapedecimal_escape hex_escape bad_escapeescape_sequenceescape_sequence_start_in_string cconst_char char_const wchar_const u8char_const u16char_const u32char_constmulticharacter_constantunmatched_quotebad_char_const string_charstring_literalwstring_literalu8string_literalu16string_literalu32string_literalbad_string_literal exponent_partfractional_constantfloating_constantbinary_exponent_parthex_fractional_constanthex_floating_constantstatesrrrrrrt_ppline_ignorerrrt_pppragma_ignorerrt_ignorert_PLUSt_MINUSt_TIMESt_DIVIDEt_MODt_ORt_ANDt_NOTt_XORt_LSHIFTt_RSHIFTt_LORt_LANDt_LNOTt_LTt_GTt_LEt_GEt_EQt_NEt_EQUALS t_TIMESEQUAL t_DIVEQUAL t_MODEQUAL t_PLUSEQUAL t_MINUSEQUAL t_LSHIFTEQUAL t_RSHIFTEQUAL t_ANDEQUAL t_OREQUAL t_XOREQUAL t_PLUSPLUS t_MINUSMINUSt_ARROWt_CONDOPt_LPARENt_RPAREN t_LBRACKET t_RBRACKETt_COMMAt_PERIODt_SEMIt_COLON t_ELLIPSISrrt_STRING_LITERALrrrrrrrrrrrr r r rrrrrrrrr!r$rrrrrsI  $;(;FF-JJJJJa../??@RRSVV11Nj();;Lj();;L&#*$+!8HM'N6J;J!-/3NB3FzQRVVO 'L##O3C7K[$Jj.K ?L NM NM!+oh6;&z1+=eCO{*+BB:MN^^N$$CCCGK_T)N.(ON*N*N*[,Z7 CDH-M<2236}D\QR__`ll3#J.{::EeKJVWbb N3.z9#=>UUVYYZnnoyy F  >??   ! O2 !  4 H.  FGGHEDEEEHH!EFFDDDDDDH LJJ KL M MJ I J"JL G H HHJJGHFG#J 5\ 5\&  !" < <  &'( ()* >   "#$ : ; < = = ? > ?      : rr)rplyrply.lexrrrrrrrs jVjr