a ‚oe¦§ã @s:dZdZddlZddlZddlZddlZddlZddlZzejej fZ Wne ybe e fZ Yn0e d¡ZGdd„deƒZGdd„deƒZGdd „d eƒZGd d „d eƒZGd d „d ƒZdd„Zdd„Zdd„Zdd„Zdd„Zdd„ZGdd„deƒZdddddeejƒddddf dd„Z d$d d!„Z!d"d#„Z"e"Z#dS)%z3.10éNz^[a-zA-Z0-9_]+$c@seZdZdd„ZdS)ÚLexErrorcCs|f|_||_dS©N)ÚargsÚtext)ÚselfÚmessageÚs©r ú2C:\Program Files\Certbot\pkgs\pycparser\ply\lex.pyÚ__init__:szLexError.__init__N)Ú__name__Ú __module__Ú __qualname__r r r r r r9src@seZdZdd„Zdd„ZdS)ÚLexTokencCsd|j|j|j|jfS)NzLexToken(%s,%r,%d,%d))ÚtypeÚvalueÚlinenoÚlexpos©rr r r Ú__str__AszLexToken.__str__cCst|ƒSr)Ústrrr r r Ú__repr__DszLexToken.__repr__N)r r rrrr r r r r@src@s4eZdZdd„Zdd„Zdd„Zdd„ZeZeZd S) Ú PlyLoggercCs ||_dSr©Úf)rrr r r r LszPlyLogger.__init__cOs|j ||d¡dS)NÚ ©rÚwrite©rÚmsgrÚkwargsr r r ÚcriticalOszPlyLogger.criticalcOs|j d||d¡dS)Nz WARNING: rrrr r r ÚwarningRszPlyLogger.warningcOs|j d||d¡dS)NzERROR: rrrr r r ÚerrorUszPlyLogger.errorN) r r rr r!r"r#ÚinfoÚdebugr r r r rKs rc@seZdZdd„Zdd„ZdS)Ú NullLoggercCs|Srr )rÚnamer r r Ú__getattribute__^szNullLogger.__getattribute__cOs|Srr )rrr r r r Ú__call__aszNullLogger.__call__N)r r rr(r)r r r r r&]sr&c@s|eZdZdd„Zddd„Zddd„Zd d „Zd d „Zd d„Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„ZeZdS)ÚLexercCsŽd|_d|_i|_i|_i|_d|_g|_d|_i|_i|_ i|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_d|_d|_d|_d|_dS)NÚINITIALrÚéF)ÚlexreÚ lexretextÚ lexstatereÚlexstateretextÚlexstaterenamesÚlexstateÚ lexstatestackÚ lexstateinfoÚlexstateignoreÚlexstateerrorfÚ lexstateeoffÚ lexreflagsÚlexdatarÚlexlenÚ lexerrorfÚlexeoffÚ lextokensÚ lexignoreÚ lexliteralsÚ lexmodulerÚ lexoptimizerr r r r ts.zLexer.__init__Nc CsÎt |¡}|rÊi}|j ¡D]t\}}g}|D]L\}}g} |D]:} | rL| dsX|  | ¡q<|  t|| djƒ| df¡qr9r@r5r0rEÚzipr1r2rFÚ_funcs_to_namesr6r7r r8)rÚlextabÚ outputdirZ basetabmoduleÚfilenameZtfZtabreÚ statenameÚlreÚtitemÚpatÚfuncZretextÚrenamesZtaberrrKZtabeofr r r Úwritetab®s6 & zLexer.writetabc CsBt|tjƒr|}ntd|ƒtj|}t|ddƒtkr@tdƒ‚|j |_ |j |_ |j |_|j t|jƒB|_|j|_|j|_i|_i|_|j ¡D]P\}}g}g}|D]&\}} | t ||j ¡t| |ƒf¡q¤||j|<||j|<q�i|_|j ¡D]\}} || |j|<qòi|_|j  ¡D]\}} || |j|<�q| !d¡dS)Nú import %sZ _tabversionz0.0zInconsistent PLY versionr+)"rPrQrRÚexecÚsysÚmodulesrGr[Ú ImportErrorZ _lextokensr>Z _lexreflagsr9Z _lexliteralsr@ÚsetÚ lextokens_allZ _lexstateinfor5Z_lexstateignorer6r0r1Z _lexstatererErFÚreÚcompileÚ_names_to_funcsr7Z_lexstateerrorfr8Z _lexstateeoffÚbegin) rZtabfileÚfdictr_rbrcrdZtxtitemreZ func_namerKr r r ÚreadtabÓs8       z Lexer.readtabcCs8|dd…}t|tƒstdƒ‚||_d|_t|ƒ|_dS)Nr-zExpected a stringr)rPÚ StringTypesÚ ValueErrorr:rÚlenr;)rrrIr r r Úinputûs   z Lexer.inputcCsd||jvrtdƒ‚|j||_|j||_|j |d¡|_|j |d¡|_ |j  |d¡|_ ||_ dS)NzUndefined stater,) r0rwr.r1r/r6Úgetr?r7r<r8r=r3©rÚstater r r rss   z Lexer.begincCs|j |j¡| |¡dSr)r4rFr3rsr{r r r Ú push_stateszLexer.push_statecCs| |j ¡¡dSr)rsr4Úpoprr r r Ú pop_stateszLexer.pop_statecCs|jSr)r3rr r r Ú current_state!szLexer.current_statecCs|j|7_dSr)r)rÚnr r r Úskip'sz Lexer.skipc Cs~|j}|j}|j}|j}||k�r|||vr8|d7}q|jD]ð\}}| ||¡}|sXq>tƒ}| ¡|_|j |_ ||_|j } || \} |_ | s²|j r¦|  ¡|_|S|  ¡}q|  ¡}||_ ||_||_| |ƒ} | sè|j}|j}q|j�s(| j |jv�r(td| jj| jj| j| j f||d…ƒ‚| S|||jv�rttƒ}|||_|j |_ |j|_ ||_|d|_|S|j�rôtƒ}|j|d…|_|j |_ d|_ ||_ ||_||_| |¡} ||jk�râtd||||d…ƒ‚|j}| �sðq| S||_td|||f||d…ƒ‚q|j�r\tƒ}d|_ d|_|j |_ ||_||_ ||_| |¡} | S|d|_|jdu�rztdƒ‚dS) Nr-z4%s:%d: Rule '%s' returned an unknown token type '%s'r#z&Scanning error. Illegal character '%s'z"Illegal character '%s' at index %dÚeofr,z"No input string given with input())rr;r?r:r.ÚmatchrÚgrouprrÚ lastindexrÚendÚlexerZlexmatchrBrorÚ__code__Ú co_filenameÚco_firstlinenor r@r<r=Ú RuntimeError) rrr;r?r:r.Ú lexindexfuncÚmÚtokÚirfZnewtokr r r Útoken1s¢      þ þ        z Lexer.tokencCs|Srr rr r r Ú__iter__ŸszLexer.__iter__cCs| ¡}|durt‚|Sr)r‘Ú StopIteration)rÚtr r r Únext¢sz Lexer.next)N)r,)r r rr rLrhruryrsr}rr€r‚r‘r’r•Ú__next__r r r r r*ss  %(   nr*cCst|d|jƒS)NÚregex)rGÚ__doc__)rfr r r Ú _get_regex·sr™cCs0t |¡}|j ¡}|j|jkr,| |j¡|Sr)rkÚ _getframeÚ f_globalsrDÚf_localsÚupdate)ZlevelsrÚldictr r r Úget_caller_module_dictÁs     rŸcCsFg}t||ƒD]2\}}|r6|dr6| ||df¡q| |¡q|SrC)r]rF)ZfunclistÚnamelistÚresultrr'r r r r^Îs   r^cCsDg}|D]6}|r4|dr4| ||d|df¡q| |¡q|SrC)rF)r rtr¡r�r r r rrÝs   rrcCsd|sgSd |¡}zÌt ||¡}dgt|j ¡ƒd}|dd…}|j ¡D]z\}} | |d¡} t| ƒt j t j fvr�| ||f|| <||| <qN| durN||| <|  d¡dkr¸d|| <qNd||f|| <qN||fg|g|gfWSt �y^tt|ƒdƒ} | dk�r d} t|d| …|||ƒ\} } }t|| d…|||ƒ\}}}| || |||fYS0dS)Nú|r-Úignore_r)NNé)rWrprqÚmaxÚ groupindexÚvaluesrErzrrQÚ FunctionTypeÚ MethodTypeÚfindÚ ExceptionÚintrxÚ_form_master_re)ZrelistÚreflagsržÚtoknamesr—r.r�Z lexindexnamesrr�ÚhandlerŽZllistrcZlnamesZrlistZrreZrnamesr r r r­ís2       r­cCs†d}| d¡}t|dd…dƒD]\}}||vr |dkr q>q |dkrXt|d|…ƒ}nd}d|vrlt|ƒ}d ||d…¡}||fS)Nr-Ú_ÚANY)r+)rTÚ enumerater\rW)rÚnamesZnonstateÚpartsr�ÚpartÚstatesZ tokennamer r r Ú _statetokens r¸c@sfeZdZddd„Zdd„Zdd„Zd d „Zd d „Zd d„Zdd„Z dd„Z dd„Z dd„Z dd„Z dS)Ú LexerReflectNrcCsL||_d|_g|_||_ddi|_tƒ|_d|_|durBtt j ƒn||_ dS)Nr+Ú inclusiveF) ržZ error_funcÚtokensr®Ú stateinfornrlr#rrkÚstderrÚlog)rržr¾r®r r r r /s zLexerReflect.__init__cCs$| ¡| ¡| ¡| ¡dSr)Ú get_tokensÚ get_literalsÚ get_statesÚ get_rulesrr r r Úget_all:szLexerReflect.get_allcCs| ¡| ¡| ¡|jSr)Úvalidate_tokensÚvalidate_literalsÚvalidate_rulesr#rr r r Ú validate_allAszLexerReflect.validate_allcCsp|j dd¡}|s(|j d¡d|_dSt|ttfƒsL|j d¡d|_dS|sf|j d¡d|_dS||_dS)Nr»zNo token list is definedTztokens must be a list or tupleztokens is empty)ržrzr¾r#rPÚlistr\r»)rr»r r r r¿Hs   zLexerReflect.get_tokenscCsPi}|jD]@}t |¡s,|j d|¡d|_||vrB|j d|¡d||<q dS)NzBad token name '%s'TzToken '%s' multiply definedr-)r»Ú_is_identifierr„r¾r#r")rZ terminalsr�r r r rÄ\s  zLexerReflect.validate_tokenscCs |j dd¡|_|jsd|_dS)NÚliteralsr,)ržrzrÊrr r r rÀgszLexerReflect.get_literalscCshz>|jD]2}t|tƒr"t|ƒdkr|j dt|ƒ¡d|_qWn$tyb|j d¡d|_Yn0dS)Nr-z.Invalid literal %s. Must be a single characterTzIInvalid literals specification. literals must be a sequence of characters)rÊrPrvrxr¾r#rZÚ TypeError)rrIr r r rÅms    zLexerReflect.validate_literalscCsö|j dd¡|_|jròt|jttfƒs:|j d¡d|_n¸|jD]°}t|tƒrZt|ƒdkrt|j dt |ƒ¡d|_q@|\}}t|t ƒs |j dt |ƒ¡d|_q@|dksÆ|dksÆ|j d |¡d|_q@||j vræ|j d |¡d|_q@||j |<q@dS) Nr·z)states must be defined as a tuple or listTr¤zMInvalid state specifier %s. Must be a tuple (statename,'exclusive|inclusive')zState name %s must be a stringrºÚ exclusivez:State type for state %s must be 'inclusive' or 'exclusive'zState '%s' already defined) ržrzr·rPr\rÈr¾r#rxrZrvr¼)rrr'Z statetyper r r rÁxs0    zLexerReflect.get_statesc Cs,dd„|jDƒ}i|_i|_i|_i|_i|_i|_|jD]}g|j|<g|j|<q:t|ƒdkrv|j   d¡d|_ dS|D�]d}|j|}t ||jƒ\}}||j|<t |dƒ�rD|dkrÎ|D]}||j|<q¼nt|dkrì|D]}||j|<qÚnV|d k�r"|j j}|j j}|j   d |||j¡d|_ n |D]}|j| ||f¡�q&qzt|tƒ�rÌ|d k�rŠ|D]}||j|<�q^d |v�rÊ|j  d |¡n@|dk�rª|j   d |¡d|_ n |D]}|j| ||f¡�q®qz|j   d|¡d|_ qz|j ¡D]}|jdd„d��qì|j ¡D]}|jdd„dd��qdS)NcSs g|]}|dd…dkr|‘qS)Nr¤Zt_r )Ú.0rr r r Ú ˜óz*LexerReflect.get_rules..rz+No rules of the form t_rulename are definedTr)r#rƒÚignorez,%s:%d: Rule '%s' must be defined as a stringú\z#%s contains a literal backslash '\'ú'Rule '%s' must be defined as a functionz&%s not defined as a function or stringcSs |djjS©Nr-)r‰r‹©Úxr r r ÚÒrÏz(LexerReflect.get_rules..)rJcSs t|dƒSrÓ)rxrÔr r r rÖÖrÏ)rJÚreverse)ržr¯ÚfuncsymÚstrsymrÐÚerrorfÚeoffr¼rxr¾r#r¸Úhasattrr‰r‹rŠr rFrPrvr"r§Úsort) rZtsymbolsrrr”r·ÚtoknameÚlineÚfiler r r r—sb              zLexerReflect.get_rulesc Cs~|jD�]X}|j|D�]n\}}|jj}|jj}t |¡}|j |¡|j |}t |t j ƒrbd}nd}|jj } | |kr’|j d|||j¡d|_q| |kr¶|j d|||j¡d|_qt|ƒsÚ|j d|||j¡d|_qzDt d|t|ƒf|j¡} |  d¡�r|j d |||j¡d|_Wqtj�y„} zJ|j d |||j| ¡d t|ƒv�rj|j d |||j¡d|_WYd} ~ qd} ~ 00q|j|D]þ\} } |j | }|d k�rÆ|j d| ¡d|_�q’||jv�rü| d¡dk�rü|j d| |¡d|_�q’z:t d| | f|j¡} |  d¡�r4|j d| ¡d|_WnVtj�yŒ} z:|j d| | ¡d | v�rr|j d| ¡d|_WYd} ~ n d} ~ 00�q’|j|�s¾|j|�s¾|j d|¡d|_|j |d¡}|r|}|jj}|jj}t |¡}|j |¡t |t j ƒ�rd}nd}|jj } | |k�r>|j d|||j¡d|_| |kr|j d|||j¡d|_q|jD]}| |¡�qhdS)Nr¤r-z'%s:%d: Rule '%s' has too many argumentsTz%%s:%d: Rule '%s' requires an argumentz2%s:%d: No regular expression defined for rule '%s'ú (?P<%s>%s)r,z<%s:%d: Regular expression for rule '%s' matches empty stringz3%s:%d: Invalid regular expression for rule '%s'. %sú#z6%s:%d. Make sure '#' in rule '%s' is escaped with '\#'r#rÒr£rz-Rule '%s' defined for an unspecified token %sz5Regular expression for rule '%s' matches empty stringz,Invalid regular expression for rule '%s'. %sz/Make sure '#' in rule '%s' is escaped with '\#'zNo rules defined for state '%s')r¼rØr‰r‹rŠÚinspectZ getmodulerlÚaddr¯rPrQr©Ú co_argcountr¾r#r r™rprqr®r„rÙr»rªrÚrzÚvalidate_module)rr|ÚfnamerrßràÚmodulerÞZreqargsÚnargsrIÚer'ÚrZefuncr r r rÆÙs–                 zLexerReflect.validate_rulesc CsÀzt |¡\}}Wnty&YdS0t d¡}t d¡}i}|d7}|D]n}| |¡}|sh| |¡}|r²| d¡} | | ¡} | sŽ||| <n$t |¡} |j   d| || | ¡d|_ |d7}qLdS)Nz\s*def\s+(t_[a-zA-Z_0-9]*)\(z\s*(t_[a-zA-Z_0-9]*)\s*=r-z7%s:%d: Rule %s redefined. Previously defined on line %dT) rãZgetsourcelinesrSrprqr„r…rzZ getsourcefiler¾r#) rrèÚlinesZlinenZfreZsreZ counthashrßrŽr'Úprevrar r r ræ@s*         zLexerReflect.validate_module)Nr)r r rr rÃrÇr¿rÄrÀrÅrÁrÂrÆrær r r r r¹.s   Bgr¹Fr_c % sr|dur d}d} ddi} tƒ} || _| dur6ttjƒ} |rL|durLttjƒ}|rT|‰ˆr”‡fdd„tˆƒDƒ} t| ƒ} d| vrœtj| dj| d<nt dƒ} |   d ¡}|rÈt |t ƒrÈd |vrÈ|d |}t | | |d �}| ¡|sò| ¡ròtd ƒ‚|�r6|�r6z"|  || ¡| ja| ja| a| WSt�y4Yn0|�rf| d |j¡| d|j¡| d|j¡tƒ| _|jD]}| j |¡�qtt |jttfƒ�r¶t|jdƒƒ  |j¡| _!n|j| _!| jt| j!ƒB| _"|j} i}| D]¦}g}|j#|D]J\}}|j$j%}|j$j&}| 'd|t(|ƒf¡|�rð| d|t(|ƒ|¡�qð|j)|D]2\}}| 'd||f¡|�rF| d|||¡�qF|||<�qÞ|�r–| d¡|D]h}t*|||| |j+ƒ\}}}|| j,|<|| j-|<|| j.|<|�ršt/|ƒD]\}}| d|||¡�qä�qš|  0¡D]`\}}|dk�r |dk�r | j,| 1| j,d¡| j-| 1| j-d¡| j.| 1| j.d¡�q | | _2| j,d| _3| j-d| _4|| _5|j6| _7| j7  dd¡| _8|j9| _:|j9  dd¡| _;| j;�sÔ|  |j=  dd¡| _?|  0¡D]˜\} }|dk�r@| |j9v�r|  .Ú__file__r r¤Ú __package__rM)r¾r®zCan't build lexerzlex: tokens = %rzlex: literals = %rzlex: states = %rrráz(lex: Adding rule %s -> '%s' (state '%s')z#lex: ==== MASTER REGEXS FOLLOW ====z"lex: state '%s' : regex[%d] = '%s'r,zNo t_error rule is definedrÌz1No error rule is defined for exclusive state '%s'z2No ignore rule is defined for exclusive state '%s'rNriz#Couldn't write lextab module %r. %s)Jr*rBrrkr½ÚdirÚdictrlrðrŸrzrPrr¹rÃrÇÚ SyntaxErrorrur‘ryrˆrmr$r»rÊr¼rnr>rärÈr\rrWr@rorØr‰r‹rŠrFr™rÙr­r¯r0r1r2r³rEÚextendr5r.r/r9rÐr6r?rÚr7r<r"rÛr8r=rQrRrTrjrGrUrVÚdirnamerhrS)%rèrHr%Úoptimizer_r®Znowarnr`ZdebuglogZerrorlogržr¼ZlexobjZ_itemsÚpkgZlinfor�Zregexsr|Z regex_listrçrrßràr'rër.Zre_textZre_namesr�rÚstyperZsrcfilerµZpkgnamerêr rïr Úlex_sð                            (rúcCs®|sTz&tjd}t|ƒ}| ¡}| ¡Wn(tyRtj d¡tj ¡}Yn0|r`|j }nt }||ƒ|rx|j }nt }|ƒ}|sˆqªtj d|j |j |j |jf¡q|dS)Nr-z/Reading from standard input (type EOF to end): z(%s,%r,%d,%d) )rkÚargvrXÚreadÚcloseÚ IndexErrorÚstdoutrÚstdinryr‘rrrr)rˆÚdatararZ_inputZ_tokenr�r r r Úrunmains(    rcs‡fdd„}|S)Ncs tˆdƒrtˆƒ|_nˆ|_|S)Nr))rÜr™r—r©rër r Ú set_regexBs  zTOKEN..set_regexr )rërr rr ÚTOKENAs r)NN)$rYr[rprkrQrDrUrãZ StringTypeZ UnicodeTypervÚAttributeErrorrÚbytesrqrÉr«rrHrrr&r*r™rŸr^rrr­r¸r¹r¬ÚVERBOSErúrrÚTokenr r r r Ú"sF   F  (3 ÿ A "