a °…bCã@s4ddlZddlmZddlmZGdd„deƒZdS)éNé)Úlex)ÚTOKENc@sôeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dZ dZ iZe D]Zeee ¡<q\e D](Zeeedd… ¡edd… ¡<qre e dZdZdZdZdZdZdZdededZd eZeeeZeeeZd!Zd"Zd#Zd$Z d%Z!d&ed'ed'e d(Z"d)Z#d*e"dZ$d+e$d+Z%d,e%Z&d-e%Z'd.e%Z(d/e%Z)d+e$d0Z*d1e$d2e$d3Z+d1e$d4e!d5Z,d6e#dZ-d7e-d8Z.d,e.Z/d-e.Z0d.e.Z1d/e.Z2d7e-d9e!e-d8Z3d:Z4d;Z5dZ6d?Z7d@edAedBedCZ8dDedDed'e8de7dEZ9dFZ:dGdH„Z;edMdN„Z?dOdP„Z@dQZAdRdS„ZBdTdU„ZCdVdW„ZDdQZEdXdY„ZFdZd[„ZGdQZHd\d]„ZId^ZJd_ZKd`ZLdaZMdbZNdcZOddZPdeZQdfZRdgZSdhZTdiZUdjZVdkZWdlZXdmZYdnZZdoZ[dpZ\dqZ]drZ^dsZ_dtZ`duZadvZbdwZcdxZddyZedzZfd{Zgd|Zhd}Zid~ZjdZkd€ZldZmd‚ZndƒZod„Zpd…Zqd†Zrd‡ZsdˆZtd‰Zue>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\{cCs | ¡|Sr)rr\rrrÚt_LBRACE¸szCLexer.t_LBRACEz\}cCs | ¡|Sr)r r\rrrÚt_RBRACE¼szCLexer.t_RBRACEcCs|Srrr\rrrÚ t_FLOAT_CONSTÈszCLexer.t_FLOAT_CONSTcCs|Srrr\rrrÚt_HEX_FLOAT_CONSTÌszCLexer.t_HEX_FLOAT_CONSTcCs|Srrr\rrrÚt_INT_CONST_HEXÐszCLexer.t_INT_CONST_HEXcCs|Srrr\rrrÚt_INT_CONST_BINÔszCLexer.t_INT_CONST_BINcCsd}| ||¡dS)NzInvalid octal constantrj©rr]r(rrrÚt_BAD_CONST_OCTØszCLexer.t_BAD_CONST_OCTcCs|Srrr\rrrÚt_INT_CONST_OCTÝszCLexer.t_INT_CONST_OCTcCs|Srrr\rrrÚt_INT_CONST_DECászCLexer.t_INT_CONST_DECcCs|Srrr\rrrÚt_INT_CONST_CHARèszCLexer.t_INT_CONST_CHARcCs|Srrr\rrrÚ t_CHAR_CONSTìszCLexer.t_CHAR_CONSTcCs|Srrr\rrrÚ t_WCHAR_CONSTðszCLexer.t_WCHAR_CONSTcCs|Srrr\rrrÚt_U8CHAR_CONSTôszCLexer.t_U8CHAR_CONSTcCs|Srrr\rrrÚt_U16CHAR_CONSTøszCLexer.t_U16CHAR_CONSTcCs|Srrr\rrrÚt_U32CHAR_CONSTüszCLexer.t_U32CHAR_CONSTcCsd}| ||¡dS)Nz Unmatched 'rjr„rrrÚt_UNMATCHED_QUOTEszCLexer.t_UNMATCHED_QUOTEcCsd|j}| ||¡dS)NzInvalid char constant %s)r_r*r„rrrÚt_BAD_CHAR_CONSTs zCLexer.t_BAD_CHAR_CONSTcCs|Srrr\rrrÚt_WSTRING_LITERAL szCLexer.t_WSTRING_LITERALcCs|Srrr\rrrÚt_U8STRING_LITERALszCLexer.t_U8STRING_LITERALcCs|Srrr\rrrÚt_U16STRING_LITERALszCLexer.t_U16STRING_LITERALcCs|Srrr\rrrÚt_U32STRING_LITERALszCLexer.t_U32STRING_LITERALcCsd}| ||¡dS)Nz#String contains invalid escape coderjr„rrrÚt_BAD_STRING_LITERALszCLexer.t_BAD_STRING_LITERALcCs2|j |jd¡|_|jdkr.| |j¡r.d|_|S)Nr3r4)Ú keyword_mapÚgetr_r[r r\rrrÚt_ID!sz CLexer.t_IDcCs"dt|jdƒ}| ||¡dS)NzIllegal character %sr)Úreprr_r*r„rrrÚt_error(szCLexer.t_error)Ú__name__Ú __module__Ú __qualname__Ú__doc__rrrrrr%r*r&ÚkeywordsZ keywords_newr•ÚkeywordÚlowerÚupperÚtokensÚ identifierZ hex_prefixZ hex_digitsÚ bin_prefixZ bin_digitsZinteger_suffix_optZdecimal_constantZoctal_constantZ hex_constantZ bin_constantZbad_octal_constantZ simple_escapeZdecimal_escapeZ hex_escapeZ bad_escapeZescape_sequenceZescape_sequence_start_in_stringZ cconst_charZ char_constZ wchar_constZ u8char_constZ u16char_constZ u32char_constZmulticharacter_constantZunmatched_quoteZbad_char_constZ string_charZstring_literalZwstring_literalZu8string_literalZu16string_literalZu32string_literalZbad_string_literalZ exponent_partZfractional_constantZfloating_constantZbinary_exponent_partZhex_fractional_constantZhex_floating_constantZstatesr^rrbrcrgriZt_ppline_ignorerkrlrmZt_pppragma_ignorernroZt_ignorerqZt_PLUSZt_MINUSZt_TIMESZt_DIVIDEZt_MODZt_ORZt_ANDZt_NOTZt_XORZt_LSHIFTZt_RSHIFTZt_LORZt_LANDZt_LNOTZt_LTZt_GTZt_LEZt_GEZt_EQZt_NEZt_EQUALSZ t_TIMESEQUALZ t_DIVEQUALZ t_MODEQUALZ t_PLUSEQUALZ t_MINUSEQUALZ t_LSHIFTEQUALZ t_RSHIFTEQUALZ t_ANDEQUALZ t_OREQUALZ t_XOREQUALZ t_PLUSPLUSZ t_MINUSMINUSZt_ARROWZt_CONDOPZt_LPARENZt_RPARENZ t_LBRACKETZ t_RBRACKETZt_COMMAZt_PERIODZt_SEMIZt_COLONZ t_ELLIPSISr~rZt_STRING_LITERALr€rr‚rƒr…r†r‡rˆr‰rŠr‹rŒrrŽrrr‘r’r“r”r—r™rrrrrsJ!   & C       $                           r)r ZplyrZply.lexrrrrrrrÚ s