B u ` @s<dZdZddlZddlZddlZddlZddlZddlZyejej fZ Wne k rde e fZ YnXedZGdddeZGdddeZGd d d eZGd d d eZGd ddZddZddZddZddZddZddZGdddeZdddddeejddddf dd Z d%d!d"Z!d#d$Z"e"Z#dS)&z3.11z3.10Nz^[a-zA-Z0-9_]+$c@seZdZddZdS)LexErrorcCs|f|_||_dS)N)argstext)selfmessagesr+/tmp/pip-unpacked-wheel-zt_1wjp0/ply/lex.py__init__:szLexError.__init__N)__name__ __module__ __qualname__r rrrr r9src@seZdZddZddZdS)LexTokencCsd|j|j|j|jfS)NzLexToken(%s,%r,%d,%d))typevaluelinenolexpos)rrrr __str__AszLexToken.__str__cCst|S)N)str)rrrr __repr__DszLexToken.__repr__N)r r r rrrrrr r@src@s4eZdZddZddZddZddZeZeZd S) PlyLoggercCs ||_dS)N)f)rrrrr r LszPlyLogger.__init__cOs|j||ddS)N )rwrite)rmsgrkwargsrrr criticalOszPlyLogger.criticalcOs|jd||ddS)Nz WARNING: r)rr)rrrrrrr warningRszPlyLogger.warningcOs|jd||ddS)NzERROR: r)rr)rrrrrrr errorUszPlyLogger.errorN) r r r r rrrinfodebugrrrr rKs rc@seZdZddZddZdS) NullLoggercCs|S)Nr)rnamerrr __getattribute__^szNullLogger.__getattribute__cOs|S)Nr)rrrrrr __call__aszNullLogger.__call__N)r r r r#r$rrrr r!]sr!c@s|eZdZddZdddZdddZd d Zd d Zd dZddZ ddZ ddZ ddZ ddZ ddZddZeZdS)LexercCsd|_d|_i|_i|_i|_d|_g|_d|_i|_i|_ i|_ d|_ d|_ d|_ d|_d|_d|_d|_d|_d|_d|_d|_d|_dS)NINITIALrF)lexre lexretext lexstaterelexstateretextlexstaterenameslexstate lexstatestack lexstateinfolexstateignorelexstateerrorf lexstateeoff lexreflagslexdatarlexlen lexerrorflexeoff lextokens lexignore lexliterals lexmoduler lexoptimize)rrrr r ts.zLexer.__init__Nc Cst|}|ri}x|jD]|\}}g}xX|D]P\}}g} xB|D]:} | rR| ds^| | qB| t|| dj| dfqBWq0W||| f|||<qW||_i|_x(|jD]\}} t|| j|j|<qW||_|S)Nrr()copyr+itemsappendgetattrr r2r<) robjectcZnewtabkeyZritemZnewreZcreZfindexZ newfindexrefrrr clones(    & z Lexer.cloner'c Cst|tjrtd|dd}tj||d}t|d}| d|t f| dt t | dt t t|j| d t t|j| d t |j| d t |ji}xb|jD]T\}}g} x>t||j||j|D]"\\} } } } | | t| | fqW| ||<qW| d t || d t |ji}x,|jD]\}}|rt|jnd||<q`W| dt |i}x,|jD]\}}|r|jnd||<qW| dt |WdQRXdS)Nz&Won't overwrite existing lextab module.z.pywzJ# %s.py. This file automatically created by PLY (version %s). Don't edit! z_tabversion = %s z_lextokens = set(%s) z_lexreflags = %s z_lexliterals = %s z_lexstateinfo = %s z_lexstatere = %s z_lexstateignore = %s z_lexstateerrorf = %s z_lexstateeoff = %s ) isinstancetypes ModuleTypeIOErrorsplitospathjoinopenr __version__repr__tabversion__tuplesortedr9intr4r;r0r+r?zipr,r-r@_funcs_to_namesr1r2r r3)rlextab outputdirZ basetabmodulefilenametfZtabre statenamelretitempatfuncZretextrenamesZtaberrrEZtabeofrrr writetabs6 ( zLexer.writetabc CsRt|tjr|}ntd|tj|}t|ddtkr@td|j |_ |j |_ |j |_|j t|jB|_|j|_|j|_i|_i|_xb|jD]T\}}g}g}x.|D]&\}} |t||j t| |fqW||j|<||j|<qWi|_x$|jD]\}} || |j|<qWi|_x&|j D]\}} || |j|<q(W|!ddS)Nz import %sZ _tabversionz0.0zInconsistent PLY versionr&)"rJrKrLexecsysmodulesrArU ImportErrorZ _lextokensr9Z _lexreflagsr4Z _lexliteralsr;set lextokens_allZ _lexstateinfor0Z_lexstateignorer1r+r,Z _lexstaterer?r@recompile_names_to_funcsr2Z_lexstateerrorfr3Z _lexstateeoffbegin) rZtabfilefdictr[r_r`raZtxtitemrb func_namerErrr readtabs8   " z Lexer.readtabcCs8|dd}t|tstd||_d|_t||_dS)Nr(zExpected a stringr)rJ StringTypes ValueErrorr5rlenr6)rrrCrrr inputs   z Lexer.inputcCsd||jkrtd|j||_|j||_|j|d|_|j|d|_ |j |d|_ ||_ dS)NzUndefined stater') r+rtr)r,r*r1getr:r2r7r3r8r.)rstaterrr ros   z Lexer.begincCs|j|j||dS)N)r/r@r.ro)rrxrrr push_stateszLexer.push_statecCs||jdS)N)ror/pop)rrrr pop_stateszLexer.pop_statecCs|jS)N)r.)rrrr current_state!szLexer.current_statecCs|j|7_dS)N)r)rnrrr skip'sz Lexer.skipc Cs~|j}|j}|j}|j}x||kr|||kr<|d7}qx|jD]\}}|||}|s`qFt}||_|j |_ ||_|j } || \} |_ | s|j r| |_|S| }P| }||_ ||_||_| |} | s|j}|j}P|js(| j |jkr(td| jj| jj| j| j f||d| SW|||jkrrt}|||_|j |_ |j|_ ||_|d|_|S|jrt}|j|d|_|j |_ d|_ ||_ ||_||_||} ||jkrtd||||d|j}| sq| S||_td|||f||dqW|jr\t}d|_ d|_|j |_ ||_||_ ||_||} | S|d|_|jdkrztddS) Nr(z4%s:%d: Rule '%s' returned an unknown token type '%s'rz&Scanning error. Illegal character '%s'z"Illegal character '%s' at index %deofr'z"No input string given with input())rr6r:r5r)matchrgrouprr lastindexrendlexerZlexmatchr=rkr__code__ co_filenameco_firstlinenor r;r7r8 RuntimeError) rrr6r:r5r) lexindexfuncmtokircZnewtokrrr token1s         "   z Lexer.tokencCs|S)Nr)rrrr __iter__szLexer.__iter__cCs|}|dkrt|S)N)r StopIteration)rtrrr nextsz Lexer.next)N)r')r r r r rFrerrrvroryr{r|r~rrr__next__rrrr r%ss  %(   nr%cCst|d|jS)Nregex)rA__doc__)rcrrr _get_regexsrcCs0t|}|j}|j|jkr,||j|S)N)rg _getframe f_globalsr>f_localsupdate)levelsrldictrrr get_caller_module_dicts     rcCsJg}x@t||D]2\}}|r8|dr8|||dfq||qW|S)Nrr()rYr@)Zfunclistnamelistresultrr"rrr rZs  rZcCsHg}x>|D]6}|r6|dr6|||d|dfq ||q W|S)Nrr()r@)rrprr}rrr rns   rncCsd|sgSd|}yt||}dgt|jd}|dd}x|jD]z\}} ||d} t| t j t j fkr| ||f|| <||| <qP| dk rP||| <| ddkrd|| <qPd||f|| <qPW||fg|g|gfSt k r^tt|d} | dkrd} t|d| |||\} } }t|| d|||\}}}| || |||fSXdS)N|r(ignore_r)NN)rQrlrmmax groupindexvaluesr?rwrrK FunctionType MethodTypefind ExceptionrXru_form_master_re)Zrelistreflagsrtoknamesrr)rZ lexindexnamesrrhandlerllistr`ZlnamesZrlistZrreZrnamesrrr rs2       rcCs|d}x0t|dddD]\}}||kr|dkrPqW|dkrVt|d|}nd}d|krjt|}d||d}||fS)N_r(ANY)r&)rN enumeraterVrQ)rnamespartsrpartstatesZ tokennamerrr _statetokens rc@sfeZdZdddZddZddZd d Zd d Zd dZddZ ddZ ddZ ddZ ddZ dS) LexerReflectNrcCsL||_d|_g|_||_ddi|_t|_d|_|dkrBtt j n||_ dS)Nr& inclusiveF) rZ error_functokensr stateinforjrhrrrgstderrlog)rrrrrrr r .s zLexerReflect.__init__cCs$||||dS)N) get_tokens get_literals get_states get_rules)rrrr get_all9szLexerReflect.get_allcCs||||jS)N)validate_tokensvalidate_literalsvalidate_rulesr)rrrr validate_all@szLexerReflect.validate_allcCsp|jdd}|s(|jdd|_dSt|ttfsL|jdd|_dS|sf|jdd|_dS||_dS)NrzNo token list is definedTztokens must be a list or tupleztokens is empty)rrwrrrJlistrVr)rrrrr rGs   zLexerReflect.get_tokenscCsTi}xJ|jD]@}t|s.|jd|d|_||krD|jd|d||<q WdS)NzBad token name '%s'TzToken '%s' multiply definedr()r_is_identifierrrrr)rZ terminalsr}rrr r[s  zLexerReflect.validate_tokenscCs |jdd|_|jsd|_dS)Nliteralsr')rrwr)rrrr rfszLexerReflect.get_literalscCsnyBx<|jD]2}t|tr$t|dkr |jdt|d|_q WWn&tk rh|jdd|_YnXdS)Nr(z.Invalid literal %s. Must be a single characterTzIInvalid literals specification. literals must be a sequence of characters)rrJrsrurrrT TypeError)rrCrrr rls  zLexerReflect.validate_literalscCs|jdd|_|jrt|jttfs:|jdd|_nx|jD]}t|tr\t|dkrv|jdt |d|_qB|\}}t|t s|jdt |d|_qB|dks|dks|jd |d|_qB||j kr|jd |d|_qB||j |<qBWdS) Nrz)states must be defined as a tuple or listTrzMInvalid 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) rrwrrJrVrrrrurTrsr)rrr"Z statetyperrr rws0    zLexerReflect.get_statesc CsRdd|jD}i|_i|_i|_i|_i|_i|_x"|jD]}g|j|<g|j|<qsz*LexerReflect.get_rules..rz+No rules of the form t_rulename are definedTr$rrignorez,%s:%d: Rule '%s' must be defined as a string\z#%s contains a literal backslash '\'z'Rule '%s' must be defined as a functionz&%s not defined as a function or stringcSs |djjS)Nr()rr)xrrr z(LexerReflect.get_rules..)rDcSs t|dS)Nr()ru)rrrr rr)rDreverse)rrfuncsymstrsymrerrorfeoffrrurrrhasattrrrrr r@rJrsrrsort) rZtsymbolsrrrrtoknamelinefilerrr rsb                  zLexerReflect.get_rulesc Csxl|jD]`}x||j|D]l\}}|jj}|jj}t|}|j||j |}t |t j rjd}nd}|jj } | |kr|jd|||jd|_q| |kr|jd|||jd|_qt|s|jd|||jd|_qyDtd|t|f|j} | dr$|jd |||jd|_Wqtjk r} zB|jd |||j| d t|krt|jd |||jd|_Wdd} ~ XYqXqWx |j|D]\} } |j | }|d kr|jd| d|_q||jkr|ddkr|jd| |d|_qy:td| | f|j} | dr@|jd| d|_WnTtjk r} z2|jd| | d | kr|jd| d|_Wdd} ~ XYnXqW|j|s|j|s|jd|d|_|j|d}|r |}|jj}|jj}t|}|j|t |t j rd}nd}|jj } | |krJ|jd|||jd|_| |kr |jd|||jd|_q Wx|jD]}||qxWdS)Nrr(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'z (?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 '\#'rz'Rule '%s' must be defined as a functionrrz-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')rrrrrinspect getmodulerhaddrrJrKr co_argcountrrr rrlrmrrrrrrrwvalidate_module)rrxfnamerrrmodulerZreqargsnargsrCer"rZefuncrrr rs                zLexerReflect.validate_rulesc Csyt|\}}Wntk r&dSXtd}td}i}|d7}xv|D]n}||}|sj||}|r|d} || } | s||| <n$t|} |j d| || | d|_ |d7}qNWdS)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) rgetsourcelinesrMrlrmrrrw getsourcefilerr) rrlinesZlinenZfreZsreZ counthashrrr"prevr]rrr r?s*         zLexerReflect.validate_module)Nr)r r r r rrrrrrrrrrrrrr r-s   BgrFr[c # s|dkr d}d} ddi} t} || _| dkr6ttj} |rL|dkrLttj}|rT|rfddtD} t| } d| krtj| dj| d<nt d} | d }|rt |t rd |kr|d |}t | | |d }||s|rtd |r6|r6y | || | ja| ja| a| Stk r4YnX|rf|d |j|d|j|d|jt| _x|jD]}| j|qvWt |jttfrt|jd |j| _!n|j| _!| jt| j!B| _"|j} i}x| D]}g}xH|j#|D]:\}}|$d|t%|f|r|d|t%||qWx@|j&|D]2\}}|$d||f|rB|d|||qBW|||<qW|r|dxt|D]l}t'|||| |j(\}}}|| j)|<|| j*|<|| j+|<|rx&t,|D]\}}|d|||qWqWxl| -D]`\}}|dkr|dkr| j)|.| j)d| j*|.| j*d| j+|.| j+dqW| | _/| j)d| _0| j*d| _1|| _2|j3| _4| j4 dd| _5|j6| _7|j6 dd| _8| j8s| 9d|j:| _;|j: dd| _r|j}nNd |kr| d}n:|?d } d | dd}!t@d|!tAtj|!dd}tBjCD|}y$| E|||tjkrVtj|=Wn6tFk r}"z| 9d||"fWdd}"~"XYnX| S)Nr[r&rcsg|]}|t|fqSr)rA)rk)rrr ryszlex..__file__r r __package__rG)rrzCan't build lexerzlex: tokens = %rzlex: literals = %rzlex: states = %rrz (?P<%s>%s)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 definedrz1No error rule is defined for exclusive state '%s'z2No ignore rule is defined for exclusive state '%s'rHz import %sz#Couldn't write lextab module %r. %s)Gr%r=rrgrdirdictrhrrrwrJrrrr SyntaxErrorrrrrvrrirrrrrjr9rrrVrrQr;rkrr@rrrrr+r,r-rr?extendr0r)r*r4rr1r:rr2r7rrr3r8rKrLrNrfrArOrPdirnamererM)#rrBr optimizer[rZnowarnr\ZdebuglogZerrorlogrrZlexobjZ_itemspkgZlinfor}ZregexsrxZ regex_listrrr"rr)Zre_textZre_namesrrstypersrcfilerpkgnamerr)rr lex^s                                $rcCs|sVy&tjd}t|}|}|Wn*tk rTtjdtj}YnX|rb|j }nt }|||rz|j }nt }x0|}|sPtjd|j |j |j |jfqWdS)Nr(z/Reading from standard input (type EOF to end): z(%s,%r,%d,%d) )rgargvrRreadclose IndexErrorstdoutrstdinrvrrrrr)rdatar]r_input_tokenrrrr runmains*   rcsfdd}|S)Ncs tdrt|_n|_|S)Nr$)rrr)r)rrr set_regexAs  zTOKEN..set_regexr)rrr)rr TOKEN@s r)NN)$rSrUrlrgrKr>rOrZ StringTypeZ UnicodeTypersAttributeErrorrbytesrmrrrrBrrr!r%rrrZrnrrrrXVERBOSErrrTokenrrrr "sD  F  (3 @ "