3 \�m�@s�dZddlZddlZddlmZdZiadd�ZGdd�de�Z Gd d �d e �Z Gd d �d e �Z d d�Z Gdd�de�Z Gdd�de �ZGdd�de �ZGdd�de �ZGdd�de �Zdd�ZdS)z#Guido van Rossum �N)�StringIOi���cCsHtst|jj�D].\}}||kr|jj�|jj|=d|_|SqWdS)N)r"� enumerater#r&)r�ir.r r r�remove�s  z Base.removec CsZ|jdkrdSxFt|jj�D]6\}}||kry|jj|dStk rPdSXqWdS)Nr)r"r1r#� IndexError)rr2�childr r r� next_sibling�s zBase.next_siblingcCsP|jdkrdSxszNode.clone..)rJ)rIrr#rJ)rr r rrsz Node.cloneccs(x|jD]}|j�EdHqW|VdS)N)r#r)rr5r r rrs zNode.post_orderccs(|Vx|jD]}|j�EdHqWdS)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|<|j�dS)N)r"r#r&)rr2r5r r r� set_child!s  zNode.set_childcCs ||_|jj||�|j�dS)N)r"r#�insertr&)rr2r5r r r� insert_child+szNode.insert_childcCs||_|jj|�|j�dS)N)r"r#r%r&)rr5r r r� append_child4s zNode.append_child)NNN)r=r)rBrCrDrLrMrPrGrHrArrrrrSrTrFr;rUrWrXr r r rrI�s"     rIc@s�eZdZdZdZdZddgfdd�Zdd�Zdd �Ze j dkrBeZ d d �Z d d�Z dd�Zdd�Zdd�Zdd�Zdd�Zeee�ZdS)r,r:rNcCsF|dk r|\|_\|_|_||_||_|dk r4||_|dd�|_dS)N)�_prefixr-�columnr�valuerJ)rrr[rKr;rJr r rrLGs z Leaf.__init__cCsd|jj|j|jfS)Nz %s(%r, %r))rrBrr[)rr r rrMZsz Leaf.__repr__cCs|jt|j�S)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|jd�S)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 rrS�szLeaf._prefix_gettercCs|j�||_dS)N)r&rY)rr;r r rrT�szLeaf._prefix_setter)r=r)rBrCrDrYr-rZrLrMrPrGrHrArrr8rrrSrTrFr;r r r rr,>s$  r,cCsN|\}}}}|s||jkrt|�}x$t|�D]\}}t|t�r"d|_q"W||_||_||_dS)NT)r!r1r �WildcardPattern� wildcardsrr`r )rrr`r r2�itemr r rrL%s  zNodePattern.__init__cCs�|jrJx>t|j|j�D],\}}|t|j�kr|dk r>|j|�dSqWdSt|j�t|j�krbdSx*t|j|j�D]\}}|j||�srdSqrWdS)NTF)rnrjr`r#r\rd�ziprg)rr.re�crf� subpatternr5r r rrcBs   zNodePattern._submatch)NNN)N)rBrCrDrnrLrcr r r rrl!s rlc@sZeZdZddedfdd�Zdd�Zddd�Zdd d �Zd d �Zd d�Z dd�Z dd�Z dS)rmNrcCs@|dk r$ttt|��}x |D]}qW||_||_||_||_dS)N)�tuplerOr`�min�maxr )rr`rtrur �altr r rrLls zWildcardPattern.__init__cCs�d}|jdk r\}}|t|�kr |dk rF|j|�|jrFt|�||j<dSq WdS)NTF)rjr\rdr r!)rrhrerqrfr r rri�s  zWildcardPattern.match_seqccs:|jdkrXxJt|jdtt|�|j��D]*}i}|jrH|d|�||j<||fVq(Wn�|jdkrp|j|�Vn�ttd�r�tj }t �t_ z�y@x:|j |d�D]*\}}|jr�|d|�||j<||fVq�WWnRt k �rx:|j |�D],\}}|j�r |d|�||j<||fVq�WYnXWdttd��r4|t_ XdS)NrZ bare_name� getrefcountr)r`�rangertr\rur �_bare_name_matches�hasattrrG�stderrr�_recursive_matches� RuntimeError�_iterative_matches)rrh�countrfZ save_stderrr r rrj�s. "   z WildcardPattern.generate_matchesc cs t|�}d|jkrdifVg}x>|jD]4}x.t||�D] \}}||fV|j||f�q8Wq(Wx�|�rg}x�|D]�\}} ||krr||jkrrxn|jD]d}x^t|||d��D]H\} } | dkr�i}|j| �|j| �|| |fV|j|| |f�q�Wq�WqrW|}qbWdS)Nr)r\rtr`rjr%rurd) rrhZnodelenrervrqrfZ new_results�c0�r0�c1�r1r 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 )rrhrrf�doneruZleafr r rry�s  z"WildcardPattern._bare_name_matchesc cs�||jkrdifV||jkr�xr|jD]h}xbt||�D]T\}}xJ|j||d�|d�D].\}}i}|j|�|j|�|||fVqXWq6Wq&WdS)Nrr)rtrur`rjr|rd) rrhrrvr�r�r�r�rfr r rr| s    "  z"WildcardPattern._recursive_matches)N)N) rBrCrD�HUGErLrbrgrirjr~ryr|r r r rrm^s#  -rmc@s.eZdZd dd�Zdd�Zdd�Zdd �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 rr�s r�c cs�|sdifVn�|d|dd�}}xl|j|�D]^\}}|sJ||fVq2xDt|||d��D].\}}i}|j|�|j|�|||fVq^Wq2WdS)Nrr)rjrd) Zpatternsrh�p�restr�r�r�r�rfr r rrj=s     rj)� __author__rG�warnings�iorr�rrrrrIr,r]r^rkrlrmr�rjr r r r� s$  1nNV,==#