B G+2@sdZddlZddlmZdZiaddZGdddeZGd d d eZ Gd d d eZ d dZ GdddeZ Gddde Z Gddde ZGddde ZGddde ZddZdS)z#Guido van Rossum N)StringIOicCsHtst|jjD].\}}||kr|j|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]}|EdHqW|VdS)N)r#r)rr5r r rrs zNode.post_orderccs(|Vx|jD]}|EdHqWdS)N)r#r)rr5r r rr s zNode.pre_ordercCs|js dS|jdjS)Nr:r)r#r;)rr r rr;sz Node.prefixcCs|jr||jd_dS)Nr)r#r;)rr;r r rr;scCs(||_d|j|_||j|<|dS)N)r"r#r&)rr2r5r r r set_child s  zNode.set_childcCs ||_|j|||dS)N)r"r#insertr&)rr2r5r r r insert_child*szNode.insert_childcCs||_|j||dS)N)r"r#r%r&)rr5r r r append_child3s zNode.append_child)NNN)rBrCrDrLrMrPrGrHrArrrrrFr;setterrSrUrVr r r rrIs      rIc@seZdZdZdZdZddgfddZddZdd Ze j d krBeZ d d Z d dZ ddZddZddZeddZejddZdS)r,r:rNcCsF|dk r|\|_\|_|_||_||_|dk r4||_|dd|_dS)N)_prefixr-columnrvaluerJ)rrrZrKr;rJr r rrLFs z Leaf.__init__cCsd|jj|j|jfS)Nz %s(%r, %r))rrBrrZ)rr r rrMYsz Leaf.__repr__cCs|jt|jS)N)r;r?rZ)rr r rrP_szLeaf.__unicode__)r=rcCs|j|jf|j|jfkS)N)rrZ)rrr r rrjszLeaf._eqcCs$t|j|j|j|j|jff|jdS)N)rJ)r,rrZr;r-rYrJ)rr r rrns z Leaf.cloneccs |VdS)Nr )rr r rr8tsz Leaf.leavesccs |VdS)Nr )rr r rrwszLeaf.post_orderccs |VdS)Nr )rr r rr{szLeaf.pre_ordercCs|jS)N)rX)rr r rr;sz Leaf.prefixcCs|||_dS)N)r&rX)rr;r r rr;s)rBrCrDrXr-rYrLrMrPrGrHrArrr8rrrFr;rWr 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>||dSqWdSt|jt|jkrbdSx*t|j|jD]\}}|||srdSqrWdS)NTF)rmrir_r#r[rcziprf)rr.rdcre subpatternr5r r rrbAs   zNodePattern._submatch)NNN)N)rBrCrDrmrLrbr r r rrk s rkc@sZeZdZddedfddZddZdddZdd d Zd d Zd dZ ddZ ddZ dS)rlNrcCs@|dk r$ttt|}x |D]}qW||_||_||_||_dS)N)tuplerOr_minmaxr )rr_rsrtr altr r rrLks zWildcardPattern.__init__cCsd}|jdk r\}}|t|kr |dk rF|||jrFt|||j<dSq WdS)NTF)rir[rcr r!)rrgrdrprer r rrhs  zWildcardPattern.match_seqc cs:|jdkrXxJt|jdtt||jD]*}i}|jrH|d|||j<||fVq(Wn|jdkrp||Vnttdrtj }t t_ zy@x:| |dD]*\}}|jr|d|||j<||fVqWWnRt k rx:| |D],\}}|jr |d|||j<||fVqWYnXWdttdr4|t_ XdS)NrZ bare_name getrefcountr)r_rangersr[rtr _bare_name_matcheshasattrrGstderrr_recursive_matches RuntimeError_iterative_matches)rrgcountreZ save_stderrr r rris. "   z WildcardPattern.generate_matchesc cs t|}d|jkrdifVg}x>|jD]4}x.t||D] \}}||fV|||fq8Wq(Wx|rg}x|D]\}} ||krr||jkrrxn|jD]d}x^t|||dD]H\} } | dkri}|| || || |fV||| |fqWqWqrW|}qbWdS)Nr)r[rsr_rir%rtrc) rrgZnodelenrdrurpreZ new_resultsc0r0c1r1r r rr}s*       z"WildcardPattern._iterative_matchescCsvd}i}d}t|}xF|sZ||krZd}x0|jD]&}|d|||r.|d7}d}Pq.WqW|d|||j<||fS)NrFTr)r[r_rfr )rrgr~reZdonertZleafr r rrxs  z"WildcardPattern._bare_name_matchesc cs||jkrdifV||jkrxr|jD]h}xbt||D]T\}}xJ|||d|dD].\}}i}|||||||fVqXWq6Wq&WdS)Nrr)rsrtr_rir{rc) rrgr~rurrrrrer r rr{ s    "  z"WildcardPattern._recursive_matches)N)N) rBrCrDHUGErLrarfrhrir}rxr{r r r rrl]s#  -rlc@s.eZdZd ddZddZddZdd ZdS) NegatedPatternNcCs|dk r||_dS)N)r_)rr_r r rrLs zNegatedPattern.__init__cCsdS)NFr )rr.r r rrf(szNegatedPattern.matchcCs t|dkS)Nr)r[)rrgr r rrh,szNegatedPattern.match_seqccsL|jdkr"t|dkrHdifVn&x|j|D] \}}dSWdifVdS)Nr)r_r[ri)rrgrprer r rri0s    zNegatedPattern.generate_matches)N)rBrCrDrLrfrhrir r r rrs rc cs|sdifVn|d|dd}}xl||D]^\}}|sJ||fVq2xDt|||dD].\}}i}|||||||fVq^Wq2WdS)Nrr)rirc) Zpatternsrgprestrrrrrer r rri<s     ri) __author__rGiorrrrrrrIr,r\r]rjrkrlrrir r r r s"  1nNV,==#