3 \m@sdZddlZddlZddlmZdZiaddZGdddeZ Gd d d e Z Gd d d e Z d dZ GdddeZ Gddde ZGddde ZGddde ZGddde ZddZdS)z#Guido van Rossum N)StringIOicCsHtst|jjD].\}}||kr|jj|jj|=d|_|SqWdS)N)r" enumerater#r&)rir.r r rremoves  z Base.removec CsZ|jdkrdSxFt|jjD]6\}}||kry|jj|dStk rPdSXqWdS)Nr)r"r1r# IndexError)rr2childr r r next_siblings zBase.next_siblingcCsP|jdkrdSxszNode.clone..)rJ)rIrr#rJ)rr r rrsz Node.cloneccs(x|jD]}|jEdHqW|VdS)N)r#r)rr5r r rrs zNode.post_orderccs(|Vx|jD]}|jEdHqWdS)N)r#r)rr5r r rr s zNode.pre_ordercCs|js dS|jdjS)Nr:r)r#r;)rr r r_prefix_getterszNode._prefix_gettercCs|jr||jd_dS)Nr)r#r;)rr;r r r_prefix_setterszNode._prefix_settercCs(||_d|j|_||j|<|jdS)N)r"r#r&)rr2r5r r r set_child!s  zNode.set_childcCs ||_|jj|||jdS)N)r"r#insertr&)rr2r5r r r insert_child+szNode.insert_childcCs||_|jj||jdS)N)r"r#r%r&)rr5r r r append_child4s zNode.append_child)NNN)r=r)rBrCrDrLrMrPrGrHrArrrrrSrTrFr;rUrWrXr r r rrIs"     rIc@seZdZdZdZdZddgfddZddZdd Ze j dkrBeZ d d Z d dZ ddZddZddZddZddZeeeZdS)r,r:rNcCsF|dk r|\|_\|_|_||_||_|dk r4||_|dd|_dS)N)_prefixr-columnrvaluerJ)rrr[rKr;rJr r rrLGs z Leaf.__init__cCsd|jj|j|jfS)Nz %s(%r, %r))rrBrr[)rr r rrMZsz Leaf.__repr__cCs|jt|jS)N)r;r?r[)rr r rrP`szLeaf.__unicode__r=cCs|j|jf|j|jfkS)N)rr[)rrr r rrkszLeaf._eqcCs$t|j|j|j|j|jff|jdS)N)rJ)r,rr[r;r-rZrJ)rr r rros z Leaf.cloneccs |VdS)Nr )rr r rr8usz Leaf.leavesccs |VdS)Nr )rr r rrxszLeaf.post_orderccs |VdS)Nr )rr r rr|szLeaf.pre_ordercCs|jS)N)rY)rr r rrSszLeaf._prefix_gettercCs|j||_dS)N)r&rY)rr;r r rrTszLeaf._prefix_setter)r=r)rBrCrDrYr-rZrLrMrPrGrHrArrr8rrrSrTrFr;r r r rr,>s$  r,cCsN|\}}}}|s||jkrt|}x$t|D]\}}t|tr"d|_q"W||_||_||_dS)NT)r!r1r WildcardPattern wildcardsrr`r )rrr`r r2itemr r rrL%s  zNodePattern.__init__cCs|jrJx>t|j|jD],\}}|t|jkr|dk r>|j|dSqWdSt|jt|jkrbdSx*t|j|jD]\}}|j||srdSqrWdS)NTF)rnrjr`r#r\rdziprg)rr.recrf subpatternr5r r rrcBs   zNodePattern._submatch)NNN)N)rBrCrDrnrLrcr r r rrl!s rlc@sZeZdZddedfddZddZdddZdd d Zd d Zd dZ ddZ ddZ dS)rmNrcCs@|dk r$ttt|}x |D]}qW||_||_||_||_dS)N)tuplerOr`minmaxr )rr`rtrur altr r rrLls zWildcardPattern.__init__cCsd}|jdk r\}}|t|kr |dk rF|j||jrFt|||j<dSq WdS)NTF)rjr\rdr r!)rrhrerqrfr r rris  zWildcardPattern.match_seqccs:|jdkrXxJt|jdtt||jD]*}i}|jrH|d|||j<||fVq(Wn|jdkrp|j|Vnttdrtj }t t_ zy@x:|j |dD]*\}}|jr|d|||j<||fVqWWnRt k rx:|j |D],\}}|jr |d|||j<||fVqWYnXWdttdr4|t_ XdS)NrZ bare_name getrefcountr)r`rangertr\rur _bare_name_matcheshasattrrGstderrr_recursive_matches RuntimeError_iterative_matches)rrhcountrfZ save_stderrr r rrjs. "   z WildcardPattern.generate_matchesc cs t|}d|jkrdifVg}x>|jD]4}x.t||D] \}}||fV|j||fq8Wq(Wx|rg}x|D]\}} ||krr||jkrrxn|jD]d}x^t|||dD]H\} } | dkri}|j| |j| || |fV|j|| |fqWqWqrW|}qbWdS)Nr)r\rtr`rjr%rurd) rrhZnodelenrervrqrfZ new_resultsc0r0c1r1r r rr~s*       z"WildcardPattern._iterative_matchescCsxd}i}d}t|}xH| r\||kr\d}x0|jD]&}|dj|||r0|d7}d}Pq0WqW|d|||j<||fS)NrFTr)r\r`rgr )rrhrrfdoneruZleafr r rrys  z"WildcardPattern._bare_name_matchesc cs||jkrdifV||jkrxr|jD]h}xbt||D]T\}}xJ|j||d|dD].\}}i}|j||j||||fVqXWq6Wq&WdS)Nrr)rtrur`rjr|rd) rrhrrvrrrrrfr r rr| s    "  z"WildcardPattern._recursive_matches)N)N) rBrCrDHUGErLrbrgrirjr~ryr|r r r rrm^s#  -rmc@s.eZdZd ddZddZddZdd ZdS) NegatedPatternNcCs|dk r||_dS)N)r`)rr`r r rrLs zNegatedPattern.__init__cCsdS)NFr )rr.r r rrg)szNegatedPattern.matchcCs t|dkS)Nr)r\)rrhr r rri-szNegatedPattern.match_seqccsL|jdkr"t|dkrHdifVn&x|jj|D] \}}dSWdifVdS)Nr)r`r\rj)rrhrqrfr r rrj1s    zNegatedPattern.generate_matches)N)rBrCrDrLrgrirjr r r rrs rc cs|sdifVn|d|dd}}xl|j|D]^\}}|sJ||fVq2xDt|||dD].\}}i}|j||j||||fVq^Wq2WdS)Nrr)rjrd) Zpatternsrhprestrrrrrfr r rrj=s     rj) __author__rGwarningsiorrrrrrrIr,r]r^rkrlrmrrjr r r r s$  1nNV,==#