kWc@sdZddlZddlTdZdZedZedZedZed Z ie e d fd 6e e d fd 6e e dfd6e e dfd6e e dfd6e e dfd6e e dfd6e e dfd6Z i e efd6e efd 6e efd6eeefgfd6eeefgfd6eeefgfd6eeefgfd6eeefgfd 6eeefgfd!6e efd"6Zied#6ed$6ed%6ed&6ed'6e d(6e!d)6Z"d*fd+YZ#d,fd-YZ$d.fd/YZ%d0Z&d1Z'd2Z(d3Z)d4Z*d5d6Z+d7Z,ed8Z-ed9Z.ed:Z/ee0e1gZ2d;Z3d<e4d=Z5d>Z6d?Z7dS(@sInternal support module for sreiN(t*s .\[{()*+?^$|s*+?{t 0123456789t01234567t0123456789abcdefABCDEFs ss\ass\bs s\fs s\ns s\rs s\ts s\vs\s\\s\As\Bs\ds\Ds\ss\Ss\ws\Ws\ZtitLtmtstxtttutPatterncBs/eZdZddZdZdZRS(cCs(d|_g|_d|_i|_dS(Nii(tflagstopentgroupst groupdict(tself((s/usr/lib/python2.7/sre_parse.pyt__init__Cs   cCs|j}|d|_|dk rr|jj|d}|dk rbtdt|||fn||j|((s/usr/lib/python2.7/sre_parse.pyR@scCs|jj|dS(N(R"R(RR>((s/usr/lib/python2.7/sre_parse.pyRsc Cs|jr|jSd}}ttttttf}ttf}xy|j D]n\}}|t krt d}d}xB|dD]6}|j \} } t || }t|| }q{W||}||}qH|tkr|j \}}||}||}qH|tkr:|dj \}}||}||}qH||kr|dj \}}|||d}|||d}qH||kr|d}|d}qH|tkrHPqHqHWt |t dt |t f|_|jS(Niii(R#tANYtRANGER(tLITERALt NOT_LITERALtCATEGORYt MIN_REPEATt MAX_REPEATR"R)t MAXREPEATtgetwidthtmintmaxtCALLt SUBPATTERNtSUCCESS( Rtlothit UNITCODESt REPEATCODESR0R1Rtjtlth((s/usr/lib/python2.7/sre_parse.pyRIsD                  %N( RRRRR+R7R9R;R=R?R@RRI(((s/usr/lib/python2.7/sre_parse.pyR Xs  %       t TokenizercBsAeZdZdZddZdZdZdZRS(cCs ||_d|_|jdS(Ni(tstringR:t_Tokenizer__next(RRW((s/usr/lib/python2.7/sre_parse.pyRs  cCs|jt|jkr%d|_dS|j|j}|ddkry|j|jd}Wntk rytdnX||}n|jt||_||_dS(Nis\isbogus escape (end of line)(R:R8RWRtnextt IndexErrorR(Rtchartc((s/usr/lib/python2.7/sre_parse.pyt__nexts    icCs*||jkr&|r"|jndSdS(Nii(RYRX(RR[tskip((s/usr/lib/python2.7/sre_parse.pytmatchs  cCs|j}|j|S(N(RYRX(Rtthis((s/usr/lib/python2.7/sre_parse.pyRs  cCs|j|jfS(N(R:RY(R((s/usr/lib/python2.7/sre_parse.pyttellscCs|\|_|_dS(N(R:RY(RR:((s/usr/lib/python2.7/sre_parse.pytseeks(RRRRXR_RRaRb(((s/usr/lib/python2.7/sre_parse.pyRVs     cCsBd|kodknpAd|ko3dknpA|dkS(NR2tztAtZt_((R[((s/usr/lib/python2.7/sre_parse.pytisidentscCsd|kodkSS(Nt0t9((R[((s/usr/lib/python2.7/sre_parse.pytisdigitscCsKt|dstSx0|dD]$}t| rt| rtSqWtS(Nii(RgtFalseRjtTrue(RR[((s/usr/lib/python2.7/sre_parse.pytisnames cCstj|}|r|Stj|}|rB|dtkrB|SyO|dd!}|dkrx5|jtkrt|dkr||j}qaW|d}t|dkrtdtd|nt t |dd @fS|t krHx5|jt kr&t|dkr&||j}qW|d}t t |d d @fS|t krjtdt|nt|dkrt t |dfSWntk rnXtdt|dS( NiiiRisbogus escape: %ss\iii(tESCAPESRt CATEGORIESR(RYt HEXDIGITSR8RRRCtintt OCTDIGITStDIGITStordt ValueError(tsourcetescapeR>R\((s/usr/lib/python2.7/sre_parse.pyt _class_escapes6  $  $   cCsBtj|}|r|Stj|}|r2|Sy|dd!}|dkrx5|jtkrt|dkr||j}qQWt|dkrtntt|ddd@fS|dkrx5|jt krt|dkr||j}qWtt|ddd@fS|t kr|jt kr||j}|dt kr|dt kr|jt kr||j}tt|ddd@fSnt|d}||j kr|j |st d nt|fStnt|dkrtt|dfSWntk r*nXt d t|dS( NiiRiiiRhiscannot refer to open groupsbogus escape: %s(RoRRnRYRpR8RuRCRqRrRsRRRtGROUPREFRtR(RvRwtstateR>R\tgroup((s/usr/lib/python2.7/sre_parse.pyt_escape sH  $  $      ic Csg}|j}|j}xX|t|||dr@qn|sJPn|j sc|ddrgPqtdqt|dkr|dSt|}|j}xwd}xj|D]=} | sPn|dkr| d}q| d|krPqqWx|D] } | d=qW||qPqxz|D]0} t| dksO| ddtkr#Pq#q#Wg} | j} x|D]} | | dqmW|t | f|S|jt d|ff|S(Nt|t)ispattern not properly closedi( RR_t_parseRYRR8R RRCR(R)( RvRztnestedtitemst itemsappendt sourcematcht subpatterntsubpatternappendtprefixtitemtsett setappend((s/usr/lib/python2.7/sre_parse.pyt _parse_sub6sR             &  cCst||}|jdrKt||}|jdrQtdqQnd}|jry|jdd rytdnt|}|jt|||ff|S(NR}s/conditional backref with more than two branchesR~ispattern not properly closed(RR_RRRYR RR,(RvRzR3R4R5R((s/usr/lib/python2.7/sre_parse.pyt_parse_sub_condqs  s|)s=!|}|dkrtdn|dkrPn||}qd }|std nt"|std!|qq{ |d"rd}x>|}|dkrItdn|d#krYPn||}q(|s{td nt"|std$|n|j#j|}|dkrd%j$|}t|n|t%|fqHq{ |}|dkr td&ntd'|q~ |d(r2d }q~ |drx,|j dks_|j d#krcPn|qA|d#sHtd)qHqHq~ |j |krJ |}d }|dkr|j | krtd*nd}|}nt&||}|d#s td)n|d"kr. |t'||ffqH|t(||ffqHq~ |dr3 d}x>|}|dkr tdn|d#kr Pn||}q_ d }|s td nt"|r |j#j|}|dkr0 d%j$|}t|q0 q{ yt|}Wq{ t)k r/ td+q{ Xq~ |j t*krN td&nx-|j t*krz |j t*|B|_ qQ Wn|r |d kr d}n|j+|}|r t,|||}nt&||}|d#s td)n|dk r |j-|n|t.||ffq x|}|dkrC td&n|d#krS Pntd,q" qH| dkr |tt/fqH| d-kr |jtt0fqH| r | ddkr t1|| |} || qHtd.qH|S(1Nt#s it[t^t]s\s$unexpected end of regular expressiont-isbad character rangeit?Rt+t{t}tt,s"the repetition number is too largesbad repeat intervals not supportedisnothing to repeatsmultiple repeatt.t(tPtsmissing group namesbad character in group name %rt=R~s&bad character in backref group name %rsunknown group name: {0!r}sunexpected end of patternsunknown specifier: ?P%st:sunbalanced parenthesiss syntax errorsbad character in group namesunknown extensiont$s parser error(Ns (ii(2R RRR_R8t_PATTERNENDERSt _ASSERTCHARSt_LOOKBEHINDASSERTCHARSt _REPEATCODESRYRR tSRE_FLAG_VERBOSEt WHITESPACEt SPECIAL_CHARSRCRttNEGATERxRR(RBRDt REPEAT_CHARSRHRaRsRbRqt OverflowErrortATRFRGRARmRtformatRyRtASSERTt ASSERT_NOTRutFLAGSRRRRMt AT_BEGINNINGtAT_ENDR|(!RvRzRRt sourcegetRt_lent PATTERNENDERSt ASSERTCHARStLOOKBEHINDASSERTCHARSRRR`RRtstarttcode1tcode2RORPRJRKthereRR{RR3R[RtmsgtdirtptcondnameR>((s/usr/lib/python2.7/sre_parse.pyRs                             &:                 -                                                              icCst|}|dkr$t}n||_||_t||d}|j}|dkrltdn|r~tdn|t@r|j n|t @ r|j jt @rt ||j jS|S(NiR~sunbalanced parenthesiss-bogus characters at end of regular expression( RVRR R tstrRRRtSRE_FLAG_DEBUGR+RR!tparse(RR R!RvRttail((s/usr/lib/python2.7/sre_parse.pyRs            cCst|}|j}g}|j}||d}|d }t|tdkr^t}nt}x|} | dkrPn| r!| ddkr!| dd!} | dkrd} |jdrxA|} | dkrtd n| d krPn| | } qn| std ny(t | } | dkrAtd nWnit k rt | sjtd ny|j | } Wqt k rdj| }t|qXnX|t| fq+| dkr/|jtkr | |} |jtkr | |} q n||t | ddd@q+| tkrt}|jtkr| |} | tkr| dtkr|jtkr| |} t}||t | ddd@qn|s|tt | dfqq+y|t| d} Wnt k rnX|| qg|| qgd}g}|j}dgt|}xG|D]?\} }| tkr|||fn |||<|d}q]W||fS(NcSsM|r9|ddtkr9t|dd|f|d sn          b!   , ;     + X