o
    ä›e¹H ã                   @   s<  d dl mZ d dlZddlmZmZmZmZ dZd Z	dZ
dZdZdZdZd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ ZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd „ d eƒZG d!d"„ d"eƒZG d#d$„ d$eƒZG d%d&„ d&eƒZG d'd(„ d(eƒZG d)d*„ d*eƒZ G d+d,„ d,e ƒZ!G d-d.„ d.eƒZ"G d/d0„ d0e#ƒZ$e$e	d1d2e$_%e&d3krÆe'd4ƒ e$j%Z(e'e(ƒ G d5d6„ d6e$ƒZ)e&d3kre)ƒ Z(e'e(ƒ e)d7dd8d9d:Z(e'e(ƒ e)ƒ Z(e( *d¡ +d7¡ ,d8¡ -d9¡ e'e(ƒ e'e( .¡ ƒ e'e( /¡ ƒ e'e( 0¡ ƒ e'e( 1¡ ƒ G d;d<„ d<e)ƒZ2G d=d>„ d>e#ƒZ3G d?d@„ d@e#ƒZ4G dAdB„ dBe4ƒZ5G dCdD„ dDe#ƒZ6G dEdF„ dFe#ƒZ7G dGdH„ dHe#ƒZ8G dIdJ„ dJe7ƒZ9G dKdL„ dLe7ƒZ:G dMdN„ dNe:ƒZ;G dOdP„ dPƒZ<G dQdR„ dRe#ƒZ=G dSdT„ dTe7ƒZ>G dUdV„ dVƒZ?G dWdX„ dXe#ƒZ@dYdZ„ ZAd[d\„ ZBG d]d^„ d^e#ƒZCG d_d`„ d`e#ƒZDG dadb„ dbe#ƒZEG dcdd„ ddeEƒZFG dedf„ dfe#ƒZGG dgdh„ dhe#ƒZHdidj„ ZIdkdl„ ZJG dmdn„ dne#ƒZKG dodp„ dpeKƒZLG dqdr„ dreKƒZMG dsdt„ dteMƒZNG dudv„ dveNƒZOG dwdx„ dxe#ƒZPG dydz„ dze#ƒZQG d{d|„ d|e#ƒZReLƒ ZSd}d~„ ZTdd€„ ZUdd‚„ ZVdƒd„„ ZWdS )…é    )Úprint_functionNé   )ÚlongÚ
basestringÚ	int_typesÚxrangeéÿÿÿÿé   é   Ú c                  C   s   ddddddœ} | S )NÚ2Ú7Ú5r   z2.7.5)ÚmajorÚminorÚmicroÚpatchÚversion© )Úrr   r   ú=/var/www/html/venv/lib/python3.10/site-packages/xlwt/antlr.pyr   G   s   ûr   c                 G   s   | rt d| t|ƒ ƒ d S d S )Núerror: )ÚprintÚtuple)ÚfmtÚargsr   r   r   ÚerrorR   s   ÿr   c                 C   s   | r|}|S |}|S ©Nr   )ÚcondÚ_thenÚ_elser   r   r   r   ÚifelseV   s
   ÿr!   c                 C   s   t tƒS r   )Ú
isinstancer   ©Úxr   r   r   Úis_string_type]   s   r%   c                 C   s   t | ƒsJ ‚d S r   )r%   r#   r   r   r   Úassert_string_typeb   s   r&   c                   @   ó   e Zd Zdd„ ZdS )ÚANTLRExceptionc                 G   ó   t j| g|¢R Ž  d S r   )Ú	ExceptionÚ__init__©Úselfr   r   r   r   r+   l   ó   zANTLRException.__init__N©Ú__name__Ú
__module__Ú__qualname__r+   r   r   r   r   r(   j   ó    r(   c                   @   ó    e Zd Zdd„ Zdd„ ZeZdS )ÚRecognitionExceptionc                 G   sn   t j| g|¢R Ž  d | _d| _d| _t|ƒdkr|d | _t|ƒdkr(|d | _t|ƒdkr5|d | _d S d S )Nr   é   r   r	   r
   )r(   r+   ÚfileNameÚlineÚcolumnÚlenr,   r   r   r   r+   r   s   

ÿzRecognitionException.__init__c                 C   s†   dg}| j r| | j d ¡ | jdkr7| j s| d¡ | t| jƒ¡ | jdkr2| dt| jƒ ¡ | d¡ | d¡ tdƒ |¡S )Nr   ú:r   zline ú )r7   Úappendr8   Ústrr9   Újoin)r-   Úbufr   r   r   Ú__str__~   s   




zRecognitionException.__str__N©r0   r1   r2   r+   rA   Ú__repr__r   r   r   r   r5   p   s    r5   c                   @   r4   )ÚNoViableAltExceptionc                 G   s^   t j| g|¢R Ž  d | _d | _t|d tƒr|d | _d S t|d tƒr+|d | _d S tdƒ‚)Nr   z3NoViableAltException requires Token or AST argument)r5   r+   ÚtokenÚnoder"   ÚASTÚTokenÚ	TypeErrorr,   r   r   r   r+   ‘   s   zNoViableAltException.__init__c                 C   sX   | j r| j  ¡ }| j  ¡ }| j  ¡ }d|||f S | jtkr dS | js%J ‚d| j ¡  S )Nz.unexpected symbol at line %s (column %s): "%s"zunexpected end of subtreezunexpected node: %s)rE   ÚgetLineÚ	getColumnÚgetTextrF   ÚASTNULL)r-   r8   ÚcolÚtextr   r   r   rA   œ   s   




zNoViableAltException.__str__NrB   r   r   r   r   rD      s    rD   c                   @   r4   )ÚNoViableAltForCharExceptionc                 G   s    d | _ t|ƒdkr#|d | _ |d }t | d| ¡ | ¡ | ¡ ¡ d S t|ƒdkrE|d | _ |d }|d }|d }t | d|||¡ d S t | dddd¡ d S )	Nr6   r   r   ÚNoViableAltr
   r	   r   r   )Ú	foundCharr:   r5   r+   ÚgetFilenamerJ   rK   )r-   r   Úscannerr7   r8   r9   r   r   r   r+   ­   s(   
ý
ÿÿz$NoViableAltForCharException.__init__c                 C   sf   d}| j dkr| j dkr|d| j  d 7 }|S | j r-|dtt| j ƒƒ ¡ dd …  7 }|S |d7 }|S )Nzunexpected char: r<   ú~ú'Ú0xr6   z<None>)rR   ÚhexÚordÚupper)r-   Úmesgr   r   r   rA   Á   s   ü"ÿz#NoViableAltForCharException.__str__NrB   r   r   r   r   rP   «   s    
rP   c                   @   r'   )ÚSemanticExceptionc                 G   r)   r   )r5   r+   r,   r   r   r   r+   Ð   r.   zSemanticException.__init__Nr/   r   r   r   r   r\   Î   r3   r\   c                   @   óD   e Zd ZdZdZdZdZdZdZdZ	dd	„ Z
d
d„ Zdd„ ZeZdS )ÚMismatchedCharExceptionr   r   r6   r	   r
   é   é   c                 G   s†  || _ t|ƒdkr>|d rtj| _ntj| _|d | _|d | _|d | _|d | _	t
 | d| j	 ¡ | j	 ¡ | j	 ¡ ¡ d S t|ƒdkrzt|d ƒrz|d rStj| _ntj| _|d | _|d | _|d | _	t
 | d| j	 ¡ | j	 ¡ | j	 ¡ ¡ d S t|ƒdkr·t|d tƒr·|d rtj| _ntj| _|d | _|d | _|d | _	t
 | d	| j	 ¡ | j	 ¡ | j	 ¡ ¡ d S tj| _t
 | d¡ d S )
Nr_   r	   r   r   r6   r
   zMismatched char rangezMismatched charzMismatched char set)r   r:   r^   Ú	NOT_RANGEÚmismatchTypeÚRANGErR   Ú	expectingrZ   rT   r5   r+   rS   rJ   rK   r%   ÚNOT_CHARÚCHARr"   ÚBitSetÚNOT_SETÚSETÚsetÚNONEr,   r   r   r   r+   Þ   sP   




ý



ý



ýz MismatchedCharException.__init__c                 C   sr   |r|dkr|  d¡ d S |dkr|  d¡ d S |dkr#|  d¡ d S |dkr.|  d¡ d S |  d	| d	 ¡ d S )
Niÿÿ  z'<EOF>'Ú
z'\n'úz'\r'ú	z'\t'rV   )r=   )r-   ÚsbÚcr   r   r   ÚappendCharName  s   z&MismatchedCharException.appendCharNamec                 C   sŠ  dg}|  t | ¡¡ | jtjkr*|  d¡ |  || j¡ |  d¡ |  || j¡ n“| jtj	krB|  d¡ |  || j¡ |  d¡ n{| jtj
tjfv r€|  d¡ | jtjkr[|  d¡ |  d¡ |  || j¡ |  d	¡ |  || j¡ |  d¡ |  || j¡ n=| jtjtjfv r½|  d¡ | jtjkr™|  d¡ |  d
¡ tt| jƒƒD ]}|  || j| ¡ q¥|  d¡ |  || j¡ tƒ  |¡ ¡ S )Nr   ú
expecting ú, found úexpecting anything but 'ú'; got it anywayzexpecting char úNOT ú
in range: ú..úone of (ú	), found )r=   r5   rA   rb   r^   rf   rq   rd   rR   re   rc   ra   rZ   ri   rh   Úranger:   rj   r>   r?   Ústrip©r-   ro   Úir   r   r   rA     s>   











zMismatchedCharException.__str__N)r0   r1   r2   rk   rf   re   rc   ra   ri   rh   r+   rq   rA   rC   r   r   r   r   r^   Ô   s    1#r^   c                   @   r]   )ÚMismatchedTokenExceptionr   r   r6   r	   r
   r_   r`   c                 G   sÖ  || _ g | _d | _d| _d | _t|ƒdkr7|d rtj| _ntj	| _|d | _|d | _
|d | _|d | _nWt|ƒdkr\t|d tƒr\|d rMtj| _ntj| _|d | _|d | _
n2t|ƒdkrt|d tƒr|d rrtj| _ntj| _|d | _|d | _ntj| _t | dd	d
d
¡ t|ƒdkrét|d tƒr¸|d | _| j ¡ | _t | d| j| j ¡ | j ¡ ¡ d S t|d tƒrÛ|d | _t| jƒ| _t | dd	| j ¡ | j ¡ ¡ d S d| _t | dd	d
d
¡ d S d S )Nr   r`   r	   r   r6   r_   r
   z(Mismatched Token: expecting any AST nodez<AST>r   r   zMismatched Tokenz<empty tree>)r   Ú
tokenNamesrE   Ú	tokenTextrF   r:   r   ra   rb   rc   rd   rZ   r7   r"   ÚintÚ	NOT_TOKENÚTOKENrg   rh   ri   rj   rk   r5   r+   rH   rL   rJ   rK   rG   r>   r,   r   r   r   r+   O  sb   








ý
ýÿïz!MismatchedTokenException.__init__c                 C   sZ   |t kr| d¡ d S |dk s|t| jƒkr#| dt|ƒ d ¡ d S | | j| ¡ d S )Nz<Set of tokens>r   ú<ú>)ÚINVALID_TYPEr=   r:   r€   r>   )r-   ro   Ú	tokenTyper   r   r   ÚappendTokenNameŠ  s
   z(MismatchedTokenException.appendTokenNamec                 C   sr  dg}|  t | ¡¡ | jtjkr&|  d¡ |  || j¡ |  d| j ¡ n‹| jtj	kr>|  d¡ |  || j¡ |  d¡ ns| jtj
tjfv rx|  d¡ | jtjkrW|  d¡ |  d¡ |  || j¡ |  d	¡ |  || j¡ |  d| j ¡ n9| jtjtjfv r±|  d¡ | jtjkr‘|  d¡ |  d
¡ tt| jƒƒD ]}|  || j| ¡ q|  d| j ¡ tƒ  |¡ ¡ S )Nr   rr   rs   rt   ru   zexpecting token rv   rw   rx   ry   rz   )r=   r5   rA   rb   r   r„   r‰   rd   r   rƒ   rc   ra   rZ   ri   rh   r{   r:   rj   r>   r?   r|   r}   r   r   r   rA   •  s8   








z MismatchedTokenException.__str__N)r0   r1   r2   rk   r„   rƒ   rc   ra   ri   rh   r+   r‰   rA   rC   r   r   r   r   r   E  s    ; r   c                   @   r'   )ÚTokenStreamExceptionc                 G   r)   r   ©r(   r+   r,   r   r   r   r+   º  r.   zTokenStreamException.__init__Nr/   r   r   r   r   rŠ   ¸  r3   rŠ   c                   @   r'   )ÚTokenStreamIOExceptionc                 G   óP   |rt |d tƒr|d }t | t|ƒ¡ || _d S tj| g|¢R Ž  | | _d S ©Nr   )r"   r*   rŠ   r+   r>   Úio©r-   r   r   r   r   r   r+   Á  ó   

zTokenStreamIOException.__init__Nr/   r   r   r   r   rŒ   ¿  r3   rŒ   c                   @   r4   )ÚTokenStreamRecognitionExceptionc                 G   s<   |rt |d tƒr|d }t | t|ƒ¡ || _d S tdƒ‚)Nr   zFTokenStreamRecognitionException requires RecognitionException argument)r"   r5   rŠ   r+   r>   ÚrecogrI   )r-   r   r“   r   r   r   r+   Î  s
   
z(TokenStreamRecognitionException.__init__c                 C   ó
   t | jƒS r   )r>   r“   ©r-   r   r   r   rA   Ö  ó   
z'TokenStreamRecognitionException.__str__NrB   r   r   r   r   r’   Ì  s    r’   c                   @   r'   )ÚTokenStreamRetryExceptionc                 G   r)   r   )rŠ   r+   r,   r   r   r   r+   Þ  r.   z"TokenStreamRetryException.__init__Nr/   r   r   r   r   r—   Ü  r3   r—   c                   @   r'   )ÚCharStreamExceptionc                 G   r)   r   r‹   r,   r   r   r   r+   ä  r.   zCharStreamException.__init__Nr/   r   r   r   r   r˜   â  r3   r˜   c                   @   r'   )ÚCharStreamIOExceptionc                 G   r   rŽ   )r"   r*   r˜   r+   r>   r   r   r   r   r   r+   ë  r‘   zCharStreamIOException.__init__Nr/   r   r   r   r   r™   é  r3   r™   c                   @   s   e Zd ZdS )ÚTryAgainN)r0   r1   r2   r   r   r   r   rš   õ  s    rš   c                   @   s”   e Zd ZdZdZdZdZdZdZdd„ Z	dd	„ Z
d
d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZeZeZd S )!rH   r   r   r   r	   r
   c                 K   sB   z|d | _ W n   t| _ Y z|d | _W d S    d| _Y d S )NÚtyperO   ú	<no text>)r›   r‡   rO   ©r-   Úargvr   r   r   r+     s   zToken.__init__c                 C   s
   | j tkS r   )r›   ÚEOF_TYPEr•   r   r   r   ÚisEOF  r–   zToken.isEOFc                 C   ó   dS rŽ   r   r•   r   r   r   rK     ó   zToken.getColumnc                 C   r¡   rŽ   r   r•   r   r   r   rJ     r¢   zToken.getLinec                 C   ó   d S r   r   r•   r   r   r   rS     r¢   zToken.getFilenamec                 C   ó   | S r   r   )r-   Únamer   r   r   ÚsetFilename  r¢   zToken.setFilenamec                 C   r¡   )Nrœ   r   r•   r   r   r   rL     r¢   zToken.getTextc                 C   s   t |ƒr	 | S tdƒ‚)Nz&Token.setText requires string argument)r%   rI   ©r-   rO   r   r   r   ÚsetText!  s   ÿzToken.setTextc                 C   r¤   r   r   )r-   r9   r   r   r   Ú	setColumn(  r¢   zToken.setColumnc                 C   r¤   r   r   ©r-   r8   r   r   r   ÚsetLine+  r¢   zToken.setLinec                 C   ó   | j S r   )r›   r•   r   r   r   ÚgetType.  ó   zToken.getTypec                 C   s   t |tƒr
|| _| S tdƒ‚)Nz'Token.setType requires integer argument)r"   r‚   r›   rI   )r-   r›   r   r   r   ÚsetType1  s   
ÿzToken.setTypec                 C   sR   | j }|dkr
d}n|dkrd}n|dkrd}n	|dkrd}n|}d	|  ¡ |f S )
Nr	   ÚNULL_TREE_LOOKAHEADr   rŸ   r   r‡   r   ÚSKIPz["%s",<%s>])r›   rL   )r-   Útype_Útvalr   r   r   ÚtoString8  s   zToken.toStringN)r0   r1   r2   r±   r‡   rŸ   ÚEOFr°   ÚMIN_USER_TYPEr+   r    rK   rJ   rS   r¦   rL   r¨   r©   r«   r­   r¯   r´   rA   rC   r   r   r   r   rH   ý  s,    
rH   rœ   )r›   rO   Ú__main__z
testing ..c                   @   sT   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
e
Ze
ZdS )ÚCommonTokenc                 K   sT   t j| fi |¤Ž d| _d| _z|d | _W n   Y z|d | _W d S    Y d S )Nr   r8   rN   )rH   r+   r8   rN   r   r   r   r   r+   X  s   zCommonToken.__init__c                 C   r¬   r   ©r8   r•   r   r   r   rJ   e  r®   zCommonToken.getLinec                 C   r¬   r   ©rO   r•   r   r   r   rL   h  r®   zCommonToken.getTextc                 C   r¬   r   ©rN   r•   r   r   r   rK   k  r®   zCommonToken.getColumnc                 C   ó
   || _ | S r   r¹   rª   r   r   r   r«   n  ó   zCommonToken.setLinec                 C   r¼   r   rº   r§   r   r   r   r¨   r  r½   zCommonToken.setTextc                 C   r¼   r   r»   )r-   rN   r   r   r   r©   v  r½   zCommonToken.setColumnc                 C   sb   | j }|dkr
d}n|dkrd}n|dkrd}n	|dkrd}n|}| j|| j| jd	œ}d
}|| S )Nr	   r°   r   rŸ   r   r‡   r   r±   )rO   r›   r8   Úcolmz2["%(text)s",<%(type)s>,line=%(line)s,col=%(colm)s])r›   rO   r8   rN   )r-   r²   r³   Údr   r   r   r   r´   z  s"   üzCommonToken.toStringN)r0   r1   r2   r+   rJ   rL   rK   r«   r¨   r©   r´   rA   rC   r   r   r   r   r¸   V  s    r¸   é   z	some textr_   )rN   r8   rO   r›   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚCommonHiddenStreamTokenc                 G   ó"   t j| g|¢R Ž  d | _d | _d S r   )r¸   r+   ÚhiddenBeforeÚhiddenAfterr,   r   r   r   r+   §  ó   
z CommonHiddenStreamToken.__init__c                 C   r¬   r   ©rÄ   r•   r   r   r   ÚgetHiddenAfter¬  r®   z&CommonHiddenStreamToken.getHiddenAfterc                 C   r¬   r   ©rÃ   r•   r   r   r   ÚgetHiddenBefore¯  r®   z'CommonHiddenStreamToken.getHiddenBeforec                 C   ó
   || _ d S r   rÆ   ©r-   Útr   r   r   ÚsetHiddenAfter²  r–   z&CommonHiddenStreamToken.setHiddenAfterc                 C   rÊ   r   rÈ   rË   r   r   r   ÚsetHiddenBeforeµ  r–   z'CommonHiddenStreamToken.setHiddenBeforeN)r0   r1   r2   r+   rÇ   rÉ   rÍ   rÎ   r   r   r   r   rÁ   ¦  s    rÁ   c                   @   sD   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dS )ÚQueuec                 C   ó
   g | _ d S r   ©Úbufferr•   r   r   r   r+   ¿  r–   zQueue.__init__c                 C   ó   | j  |¡ d S r   )rÒ   r=   ©r-   Úitemr   r   r   r=   Â  ó   zQueue.appendc                 C   ó
   | j | S r   rÑ   )r-   Úindexr   r   r   Ú	elementAtÅ  r–   zQueue.elementAtc                 C   rÐ   r   rÑ   r•   r   r   r   ÚresetÈ  r–   zQueue.resetc                 C   s   | j  d¡ d S rŽ   )rÒ   Úpopr•   r   r   r   ÚremoveFirstË  rÖ   zQueue.removeFirstc                 C   r”   r   )r:   rÒ   r•   r   r   r   ÚlengthÎ  r–   zQueue.lengthc                 C   r”   r   )r>   rÒ   r•   r   r   r   rA   Ñ  r–   zQueue.__str__N)
r0   r1   r2   r+   r=   rÙ   rÚ   rÜ   rÝ   rA   r   r   r   r   rÏ   ½  s    rÏ   c                   @   s|   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚInputBufferc                 C   s   d| _ d| _d| _tƒ | _d S rŽ   )ÚnMarkersÚmarkerOffsetÚnumToConsumerÏ   Úqueuer•   r   r   r   r+   Ù  s   zInputBuffer.__init__c                 C   s   d| j | j| j| jf S )Nz(%s,%s,%s,%s))rß   rà   rá   râ   r•   r   r   r   rA   ß  s   üzInputBuffer.__str__c                 C   ó   t | ƒS r   ©r>   r•   r   r   r   rC   æ  ó   zInputBuffer.__repr__c                 C   s   |  j d8  _ d S ©Nr   ©rß   r•   r   r   r   Úcommité  ó   zInputBuffer.commitc                 C   ó   |  j d7  _ d S ræ   ©rá   r•   r   r   r   Úconsumeì  ré   zInputBuffer.consumec                 C   s8   | j }| j ¡ }d}||k r|| j |¡7 }||k s|S ©Nr   )rà   râ   rÝ   rÙ   )r-   r~   ÚnÚsr   r   r   Ú
getLACharsò  s   
ÿzInputBuffer.getLACharsc                 C   s2   d}d}| j }||k r|| j |¡7 }||k s|S )Nr   r   )rà   râ   rÙ   )r-   rï   r~   rî   r   r   r   ÚgetMarkedCharsü  s   ÿzInputBuffer.getMarkedCharsc                 C   s
   | j dkS rŽ   rç   r•   r   r   r   ÚisMarked  r–   zInputBuffer.isMarkedc                 C   ó   t ƒ ‚r   ©ÚNotImplementedError©r-   Úkr   r   r   Úfill  s   zInputBuffer.fillc                 C   ó    |   |¡ | j | j| d ¡S ræ   ©rø   râ   rÙ   rà   rö   r   r   r   ÚLA  ó   
zInputBuffer.LAc                 C   ó   |   ¡  |  jd7  _| jS ræ   ©ÚsyncConsumerß   rà   r•   r   r   r   Úmark  ó   zInputBuffer.markc                 C   ó    |   ¡  || _|  jd8  _d S ræ   ©rÿ   rà   rß   ©r-   r   r   r   r   Úrewind  ó   zInputBuffer.rewindc                 C   ó    d| _ d| _d| _| j ¡  d S rŽ   ©rß   rà   rá   râ   rÚ   r•   r   r   r   rÚ     ó   zInputBuffer.resetc                 C   óN   | j dkr%| jdkr|  jd7  _n| j ¡  |  j d8  _ | j dksd S d S ©Nr   r   ©rá   rß   rà   râ   rÜ   r•   r   r   r   rÿ     ó   


ùzInputBuffer.syncConsumeN)r0   r1   r2   r+   rA   rC   rè   rì   rð   rñ   rò   rø   rû   r   r  rÚ   rÿ   r   r   r   r   rÞ   Ø  s    
rÞ   c                       s0   e Zd Z‡ fdd„Z‡ fdd„Zdd„ Z‡  ZS )Ú
CharBufferc                    s   t t| ƒ ¡  || _d S r   )Úsuperr  r+   Úinput)r-   Úreader©Ú	__class__r   r   r+   .  s   
zCharBuffer.__init__c                    s   t t| ƒ ¡ }d|ttƒf S )NzCharBuffer{%s,%s)r  r  rA   r>   r  )r-   Úbaser  r   r   rA   5  ó   zCharBuffer.__str__c              
   C   sž   z>|   ¡  | j ¡ || j k r<| j d¡}t|ƒdks#t|ƒdks#J ‚t|ƒs)J ‚| j |¡ | j ¡ || j k sW d S W d S  t	yN } zt
|ƒ‚d }~ww ©Nr   r   )rÿ   râ   rÝ   rà   r  Úreadr:   r%   r=   r*   r™   )r-   Úamountrp   Úer   r   r   rø   9  s    é€ÿzCharBuffer.fill)r0   r1   r2   r+   rA   rø   Ú__classcell__r   r   r  r   r  -  s    r  c                   @   ó$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚLexerSharedInputStatec                 C   s<   t |tƒsJ ‚|| _d| _d| _d| _d| _d| _d | _d S r  )	r"   rÞ   r  r9   r8   ÚtokenStartColumnÚtokenStartLineÚguessingÚfilename)r-   Úibufr   r   r   r+   _  s   
zLexerSharedInputState.__init__c                 C   s2   d| _ d| _d| _d| _d| _d | _| j ¡  d S r  )r9   r8   r  r  r  r   r  rÚ   r•   r   r   r   rÚ   i  s   zLexerSharedInputState.resetc                 C   s   | j  |¡S r   )r  rû   rö   r   r   r   rû   r  ó   zLexerSharedInputState.LAN)r0   r1   r2   r+   rÚ   rû   r   r   r   r   r  ^  s    
	r  c                   @   ó   e Zd Zdd„ Zdd„ ZdS )ÚTokenStreamc                 C   r£   r   r   r•   r   r   r   Ú	nextTokenz  r¢   zTokenStream.nextTokenc                 C   rã   r   )ÚTokenStreamIteratorr•   r   r   r   Ú__iter__}  rå   zTokenStream.__iter__N)r0   r1   r2   r%  r'  r   r   r   r   r$  y  ó    r$  c                   @   r#  )r&  c                 C   ó   t |tƒr
|| _d S tdƒ‚)Nz/TokenStreamIterator requires TokenStream object)r"   r$  ÚinstrI   ©r-   r*  r   r   r   r+   …  ó   
zTokenStreamIterator.__init__c                 C   ó*   | j sJ ‚| j  ¡ }|r| ¡ rtƒ ‚|S r   ©r*  r%  r    ÚStopIterationrÔ   r   r   r   Únext‹  ó
   

zTokenStreamIterator.nextN©r0   r1   r2   r+   r0  r   r   r   r   r&  „  s    r&  c                   @   sT   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ ZdS )ÚTokenStreamSelectorc                 C   s   d | _ i | _g | _d S r   )Ú_inputÚ_stmapÚ_stackr•   r   r   r   r+   ˜  s   
zTokenStreamSelector.__init__c                 C   s   || j |< d S r   )r5  )r-   ÚstreamÚkeyr   r   r   ÚaddInputStream  ó   z"TokenStreamSelector.addInputStreamc                 C   r¬   r   )r4  r•   r   r   r   ÚgetCurrentStream   r®   z$TokenStreamSelector.getCurrentStreamc                 C   s(   z| j | }W |S    td| d ƒ‚)NzTokenStream z
 not found)r5  Ú
ValueError)r-   Úsnamer7  r   r   r   Ú	getStream£  s
   þzTokenStreamSelector.getStreamc                 C   s$   	 z| j  ¡ W S  ty   Y nw qr   )r4  r%  r—   r•   r   r   r   r%  ª  s   þýzTokenStreamSelector.nextTokenc                 C   s   | j  ¡ }|  |¡ |S r   )r6  rÛ   Úselect©r-   r7  r   r   r   rÛ   ²  s   

zTokenStreamSelector.popc                 C   s   | j  | j¡ |  |¡ d S r   )r6  r=   r4  r?  ©r-   Úargr   r   r   Úpush·  s   zTokenStreamSelector.pushc                 C   ró   r   )r—   r•   r   r   r   Úretry»  r®   zTokenStreamSelector.retryc                 C   s4   t |tƒr
|| _d S t|ƒr|  |¡| _d S tdƒ‚)NzBTokenStreamSelector.select requires TokenStream or string argument)r"   r$  r4  r%   r>  rI   rA  r   r   r   r?  ¾  s   
zTokenStreamSelector.selectN)r0   r1   r2   r+   r9  r;  r>  r%  rÛ   rC  rD  r?  r   r   r   r   r3  –  s    r3  c                   @   r  )ÚTokenStreamBasicFilterc                 C   s   || _ tƒ | _d S r   )r  rg   ÚdiscardMask©r-   r  r   r   r   r+   Î  s   zTokenStreamBasicFilter.__init__c                 C   s6   t |tƒr| j |¡ d S t |tƒr|| _d S tdƒ‚)NzATokenStreamBasicFilter.discard requiresinteger or BitSet argument)r"   r‚   rF  Úaddrg   ÚdiscardMarkrI   rA  r   r   r   ÚdiscardÓ  s   

zTokenStreamBasicFilter.discardc                 C   s@   | j  ¡ }|r| j | ¡ ¡r| j  ¡ }|r| j | ¡ ¡s|S r   )r  r%  rF  Úmemberr­   )r-   Útokr   r   r   r%  Ý  s
   

ÿz TokenStreamBasicFilter.nextTokenN)r0   r1   r2   r+   rJ  r%  r   r   r   r   rE  Ì  s    
rE  c                   @   sd   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚTokenStreamHiddenTokenFilterc                 C   s*   t  | |¡ tƒ | _d | _d | _d | _d S r   )rE  r+   rg   ÚhideMaskÚnextMonitoredTokenÚlastHiddenTokenÚfirstHiddenrG  r   r   r   r+   é  s
   
z%TokenStreamHiddenTokenFilter.__init__c                 C   s   | j  ¡ | _d S r   )r  r%  rO  r•   r   r   r   rì   ð  rÖ   z$TokenStreamHiddenTokenFilter.consumec                 C   sÖ   |   ¡  d }| j |  d¡ ¡ ¡s| j |  d¡ ¡ ¡ri| j |  d¡ ¡ ¡rM|s/|  d¡}n| |  d¡¡ |  d¡ |¡ |  d¡}|| _| j	sM|| _	|   ¡  | j |  d¡ ¡ ¡s| j |  d¡ ¡ ¡sd S d S ræ   )
rì   rN  rK  rû   r­   rF  rÍ   rÎ   rP  rQ  )r-   Úpr   r   r   ÚconsumeFirstó  s$   ÿ
ô
ÿz)TokenStreamHiddenTokenFilter.consumeFirstc                 C   r¬   r   )rF  r•   r   r   r   ÚgetDiscardMask  r®   z+TokenStreamHiddenTokenFilter.getDiscardMaskc                 C   ó   |  ¡ S r   )rÇ   rË   r   r   r   rÇ     rå   z+TokenStreamHiddenTokenFilter.getHiddenAfterc                 C   rU  r   )rÉ   rË   r   r   r   rÉ     rå   z,TokenStreamHiddenTokenFilter.getHiddenBeforec                 C   r¬   r   )rN  r•   r   r   r   ÚgetHideMask  r®   z(TokenStreamHiddenTokenFilter.getHideMaskc                 C   r¬   r   )rQ  r•   r   r   r   ÚgetInitialHiddenToken  r®   z2TokenStreamHiddenTokenFilter.getInitialHiddenTokenc                 C   s2   t |tƒr| j |¡ d S t |jƒr|| _d S d S r   )r"   r‚   rN  rH  ÚBitMask)r-   Úmr   r   r   Úhide  s   

þz!TokenStreamHiddenTokenFilter.hidec                 C   r¬   r   )rO  ©r-   r~   r   r   r   rû     r®   zTokenStreamHiddenTokenFilter.LAc                 C   sì   |   d¡s	|  ¡  |   d¡}| | j¡ d | _|  ¡  |}| j |   d¡ ¡ ¡s3| j |   d¡ ¡ ¡rt| j |   d¡ ¡ ¡rZ| 	|   d¡¡ ||krR|   d¡ |¡ |   d¡ }| _|  ¡  | j |   d¡ ¡ ¡s3| j |   d¡ ¡ ¡s3|S ræ   )
rû   rS  rÎ   rP  rì   rN  rK  r­   rF  rÍ   )r-   Ú	monitoredrR  r   r   r   r%    s(   

ÿùÿz&TokenStreamHiddenTokenFilter.nextTokenN)r0   r1   r2   r+   rì   rS  rT  rÇ   rÉ   rV  rW  rZ  rû   r%  r   r   r   r   rM  ç  s    rM  c                   @   sD   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zdd
d„ZeZdd„ Z	dS )ÚStringBufferNc                 C   s   |r	t |ƒ| _d S g | _d S r   )ÚlistrO   )r-   Ústringr   r   r   r+   :  s   
zStringBuffer.__init__c                 C   s>   |sg | _ d S |dksJ ‚||  ¡ krd S | j d|… | _ d S rŽ   )rO   rÝ   )r-   Úszr   r   r   Ú	setLength@  s   zStringBuffer.setLengthc                 C   r”   r   ©r:   rO   r•   r   r   r   rÝ   J  r–   zStringBuffer.lengthc                 C   rÓ   r   )rO   r=   ©r-   rp   r   r   r   r=   M  rÖ   zStringBuffer.appendc                 C   s€   |sd}|dks
J ‚|t | jƒkrdS |s| j|d … }n|| t | jƒks(J ‚|| }| j||… }d}|D ]}||7 }q7|S )Nr   r   rb  )r-   ÚarÝ   ÚLÚbrï   r$   r   r   r   Ú	getStringT  s   zStringBuffer.getStringc                 C   r”   r   ©r>   rO   r•   r   r   r   rA   h  r–   zStringBuffer.__str__r   )NN)
r0   r1   r2   r+   ra  rÝ   r=   rg  r´   rA   r   r   r   r   r]  9  s    


r]  c                   @   r#  )ÚReaderc                 C   s   || _ g | _d S r   )Úcinr@   r@  r   r   r   r+   x  ó   
zReader.__init__c                 C   sp   |dksJ ‚t | jƒr| j ¡ S | j d¡}|rt |ƒdkr |S t|ƒ}| ¡  |D ]}| j |¡ q*|  d¡S ræ   )r:   r@   rÛ   rj  r  r^  Úreverser=   )r-   Únumrp   re  r$   r   r   r   r  |  s   


zReader.readN)r0   r1   r2   r+   r  r   r   r   r   ri  w  s    ri  c                       sÐ  e Zd ZdZdZ‡ fdd„Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Z d;d<„ Z!d=d>„ Z"d?d@„ Z#dAdB„ Z$dpdCdD„Z%dEdF„ Z&dGdH„ Z'dIdJ„ Z(dKdL„ Z)dMdN„ Z*dOdP„ Z+dQdR„ Z,dSdT„ Z-dUdV„ Z.dWdX„ Z/dYdZ„ Z0d[d\„ Z1d]d^„ Z2d_d`„ Z3dadb„ Z4dcdd„ Z5dedf„ Z6dgdh„ Z7didj„ Z8dqdldm„Z9dndo„ Z:‡  Z;S )rÚCharScannerr   r   c                    sn   t t| ƒ ¡  d| _d | _d| _d| _d | _d| _d | _	d| _
d| _tƒ | _t| ƒ| _|  t¡ | j|Ž  d S )NTé   Fr   )r  rn  r+   ÚsaveConsumedInputÚ
tokenClassÚcaseSensitiveÚcaseSensitiveLiteralsÚliteralsÚtabsizeÚ_returnTokenÚcommitToPathÚ
traceDepthr]  rO   ÚhashÚ
hashStringÚsetTokenObjectClassr¸   ÚsetInput)r-   rž   Úkwargsr  r   r   r+   š  s   

zCharScanner.__init__c                 C   rã   r   )ÚCharScannerIteratorr•   r   r   r   r'  ª  rå   zCharScanner.__iter__c                 G   sÖ   |sdd l }|  |j¡ d S |d }t|ƒr't|dƒ}|  |¡ |  |¡ d S t|tƒr5|  t|ƒ¡ d S t|t	ƒr?|| _
d S t|tƒrM|  t	|ƒ¡ d S z|jr`t|ƒ}t|ƒ}t	|ƒ}|| _
W d S    Y t|ƒ‚)Nr   Úrb)Úsysr|  Ústdinr%   Úopenr¦   r"   Úfiler  r  Ú
inputStaterÞ   r  ri  rI   )r-   rž   r€  Úarg1ÚfÚrdÚcbÚssr   r   r   r|  ­  s:   





zCharScanner.setInputc                 C   rÊ   r   ©ru  )r-   Úsizer   r   r   Ú
setTabSizeì  r–   zCharScanner.setTabSizec                 C   r¬   r   rŠ  r•   r   r   r   Ú
getTabSizeï  r®   zCharScanner.getTabSizec                 C   rÊ   r   ©rr  rË   r   r   r   ÚsetCaseSensitiveò  r–   zCharScanner.setCaseSensitivec                 C   rÊ   r   ©rw  )r-   rè   r   r   r   ÚsetCommitToPathõ  r–   zCharScanner.setCommitToPathc                 C   ó   || j _d S r   ©r„  r   ©r-   r†  r   r   r   r¦   ø  r"  zCharScanner.setFilenamec                 C   r’  r   ©r„  r8   rª   r   r   r   r«   û  r"  zCharScanner.setLinec                 C   s   |   ¡  | j |¡ d S r   )Ú	resetTextrO   r=   ©r-   rï   r   r   r   r¨   þ  s   zCharScanner.setTextc                 C   r¬   r   rŽ  r•   r   r   r   ÚgetCaseSensitive  r®   zCharScanner.getCaseSensitivec                 C   r¬   r   )rs  r•   r   r   r   ÚgetCaseSensitiveLiterals  r®   z$CharScanner.getCaseSensitiveLiteralsc                 C   ó   | j jS r   ©r„  r9   r•   r   r   r   rK     rå   zCharScanner.getColumnc                 C   r’  r   r›  rc  r   r   r   r©     r"  zCharScanner.setColumnc                 C   r¬   r   r  r•   r   r   r   ÚgetCommitToPath  r®   zCharScanner.getCommitToPathc                 C   rš  r   r“  r•   r   r   r   rS     rå   zCharScanner.getFilenamec                 C   rš  r   ©r„  r  r•   r   r   r   ÚgetInputBuffer  rå   zCharScanner.getInputBufferc                 C   r¬   r   ©r„  r•   r   r   r   ÚgetInputState  r®   zCharScanner.getInputStatec                 C   ó   t |tƒsJ ‚|| _d S r   )r"   r  r„  ©r-   Ústater   r   r   ÚsetInputState  ó   
zCharScanner.setInputStatec                 C   rš  r   r•  r•   r   r   r   rJ     rå   zCharScanner.getLinec                 C   r”   r   rh  r•   r   r   r   rL   !  r–   zCharScanner.getTextc                 C   r¬   r   )rv  r•   r   r   r   ÚgetTokenObject$  r®   zCharScanner.getTokenObjectc                 C   s$   | j j |¡}| js|j |¡}|S r   )r„  r  rû   rr  r  Úlower)r-   r~   rp   r   r   r   rû   '  s   zCharScanner.LAc                 C   sX   z| j sJ ‚|   ¡ }| |¡ | | jj¡ | | jj¡ |W S    |  d¡ Y tj	S )Nzunable to create new token)
rq  r¯   r©   r„  r  r«   r  ÚpanicrH   ÚbadToken)r-   r›   rL  r   r   r   Ú	makeToken.  s   

zCharScanner.makeTokenc                 C   ó   | j j ¡ S r   ©r„  r  r   r•   r   r   r   r   ;  r"  zCharScanner.markc                 C   s0   |  |  d¡¡r|  ¡  d S t|  d¡|d| ƒ‚©Nr   F)rK  rû   rì   r^   ©r-   rf  r   r   r   Ú_match_bitset>  s   zCharScanner._match_bitsetc                 C   s8   |D ]}|   d¡|kr|  ¡  qt|   d¡|d| ƒ‚d S r­  ©rû   rì   r^   )r-   rï   rp   r   r   r   Ú_match_stringD  s
   
üzCharScanner._match_stringc                 C   s   t |ƒr	|  |¡S |  |¡S r   )r%   r±  r¯  rÔ   r   r   r   ÚmatchK  s   

zCharScanner.matchc                 C   s.   |   d¡|kr|  ¡  d S t|   d¡|d| ƒ‚©Nr   Tr°  rc  r   r   r   ÚmatchNotQ  s   zCharScanner.matchNotc                 C   s>   |   d¡|k s|   d¡|krt|   d¡||d| ƒ‚|  ¡  d S r­  )rû   r^   rì   )r-   Úc1Úc2r   r   r   Ú
matchRangeW  s   zCharScanner.matchRangec                 C   s   | j  jd7  _d| j _d S ræ   )r„  r8   r9   r•   r   r   r   Únewline]  s   zCharScanner.newlinec                 C   s2   |   ¡ }|d | j d | j d }|  |¡ d S ræ   )rK   ru  r©   )r-   rp   Úncr   r   r   Útaba  s   zCharScanner.tabc                 C   s   t d| ƒ t d¡ d S )NzCharScanner: panic: r   )r   r€  Úexitr—  r   r   r   r¨  f  s   zCharScanner.panicc                 C   ó8   |   ¡ stdt|ƒ ƒ d S t|   ¡ d t|ƒ ƒ d S )Nr   z	: error: ©rS   r   r>   r—  r   r   r   ÚreportErrorj  ó   zCharScanner.reportErrorc                 C   r¼  )Nz	warning: z: warning: r½  r—  r   r   r   ÚreportWarningp  r¿  zCharScanner.reportWarningc                 C   s(   | j  d¡ | jj| j_| jj| j_d S rŽ   )rO   ra  r„  r9   r  r8   r  r•   r   r   r   r–  v  s   zCharScanner.resetTextc                 C   ó   | j j |¡ d S r   ©r„  r  r  ©r-   Úposr   r   r   r  {  ré   zCharScanner.rewindc                 C   rÊ   r   )rq  ©r-   Úclr   r   r   r{  ~  r–   zCharScanner.setTokenObjectClassc                 C   sh   |sd S t |tƒsJ ‚| ¡ }|ttttfv rd S | ¡ }|s!d S t|ƒs'J ‚|  	||¡}| 
|¡ |S r   )r"   rH   r­   r±   r‡   rŸ   r°   rL   r%   ÚtestLiteralsTabler¯   )r-   rE   Ú_typeÚ_textr   r   r   ÚtestForLiteral  s   
zCharScanner.testForLiteralc                 G   sˆ   t |d ƒr|d }|d }n	| j ¡ }|d }t|tƒs$t|tƒs$J ‚t| jtƒs,J ‚z| js6|j 	|¡}| j| }W |S    Y |S r  )
r%   rO   rg  r"   r‚   rt  Údictrs  r  r§  )r-   r   rï   r~   r   r   r   rÇ  •  s    


þzCharScanner.testLiteralsTablec                 C   s
   |j  ¡ S r   )r  r§  rc  r   r   r   ÚtoLower¬  r–   zCharScanner.toLowerc                 C   ó   t d| j ƒ d S ©Nr<   ©r   rx  r•   r   r   r   ÚtraceIndent¯  ré   zCharScanner.traceIndentc                 C   s0   |  j d7  _ |  ¡  td||  d¡f ƒ d S )Nr   z> lexer %s c== %s)rx  rÐ  r   rû   ©r-   Úrnamer   r   r   ÚtraceIn²  s   zCharScanner.traceInc                 C   s0   |   ¡  td||  d¡f ƒ |  jd8  _d S )Nz< lexer %s c== %sr   )rÐ  r   rû   rx  rÑ  r   r   r   ÚtraceOut·  s   zCharScanner.traceOutc                 C   r£   r   r   r•   r   r   r   ÚuponEOF¼  r¢   zCharScanner.uponEOFc                 C   s   | j r| j |¡ d S d S r   )rp  rO   r=   rc  r   r   r   r=   ¿  s   ÿzCharScanner.appendc                 C   ó   | j j ¡  d S r   )r„  r  rè   r•   r   r   r   rè   Ã  rÖ   zCharScanner.commitc                 C   sr   | j js1|  d¡}| jr|  |¡ n| j j d¡}|  |¡ |r)|dv r)|  ¡  n| j  jd7  _| j j ¡  d S )Nr   rn   )	r„  r  rû   rr  r=   r  rº  r9   rì   rc  r   r   r   rì   Æ  s   


zCharScanner.consumec                 C   óP   |   d¡tkr"|   d¡|kr&|  ¡  |   d¡tkr$|   d¡|ksd S d S d S d S ræ   )rû   ÚEOF_CHARrì   rc  r   r   r   ÚconsumeUntil_charØ  ó   ,ÿzCharScanner.consumeUntil_charc                 C   sX   |   d¡tkr&| j |   d¡¡s*|  ¡  |   d¡tkr(| j |   d¡¡rd S d S d S d S ræ   )rû   rØ  rj   rK  rì   )r-   Úbitsetr   r   r   ÚconsumeUntil_bitsetÝ  s    0ÿzCharScanner.consumeUntil_bitsetc                 C   s*   |s|   ¡  |  t¡| _d S |  |¡ d S r   )rÕ  rª  rŸ   rv  Úraise_NoViableAlt)r-   Úla1r   r   r   Údefaultã  s   zCharScanner.defaultc              
   G   s’   |s|   ¡  |  t¡| _d S |s|  ¡  tƒ ‚|  ¡  z|d }||dd … Ž  W tƒ ‚ tyH } z|  |¡ |  ¡  W Y d }~tƒ ‚d }~ww r  )	rÕ  rª  rŸ   rv  rì   rš   rè   r5   r¾  )r-   rÞ  r   Úfuncr  r   r   r   Úfilterdefaultê  s$   ü
€üzCharScanner.filterdefaultNc                 C   s4   |s|   d¡}|  ¡ }|  ¡ }|  ¡ }t||||ƒ‚ræ   )rû   rS   rJ   rK   rP   )r-   rÞ  Úfnamer8   rN   r   r   r   rÝ  ÿ  s
   zCharScanner.raise_NoViableAltc                 C   s:   |r|s|t ks| j |¡}|  |¡}| |¡ || _|S r   )r±   rO   rg  rª  r¨   rv  )r-   Ú_createÚ_tokenÚ_ttypeÚ_offsetr_  r   r   r   Úset_return_token  s   

zCharScanner.set_return_token)r   r   )<r0   r1   r2   ÚNO_CHARrØ  r+   r'  r|  rŒ  r  r  r‘  r¦   r«   r¨   r˜  r™  rK   r©   rœ  rS   rž  r   r¤  rJ   rL   r¦  rû   rª  r   r¯  r±  r²  r´  r·  r¸  rº  r¨  r¾  rÀ  r–  r  r{  rÊ  rÇ  rÌ  rÐ  rÓ  rÔ  rÕ  r=   rè   rì   rÙ  rÜ  rß  rá  rÝ  rç  r  r   r   r  r   rn  •  sr    ?

rn  c                   @   r#  )r~  c                 C   r)  )Nz/CharScannerIterator requires CharScanner object)r"   rn  r*  rI   r+  r   r   r   r+     r,  zCharScannerIterator.__init__c                 C   r-  r   r.  rÔ   r   r   r   r0    r1  zCharScannerIterator.nextNr2  r   r   r   r   r~    s    r~  c                   @   sr   e Zd ZdZdZdZed Zddd„Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ Zddd„ZeZddd„Zdd„ ZdS )rg   é@   r
   r`   r   Nc                 C   s˜   |st  | tdƒg¡ d S t|tƒrt  | t|ƒg¡ d S t|tƒr+t  | |g¡ d S t|tƒs4tdƒ‚|D ]}t|tƒsFt| dd|  ƒ‚q6|| _d S )Nr   z/BitSet requires integer, long, or list argumentzList argument item is znot a long: %s)	rg   r+   r   r"   r‚   r^  rI   r   Údata)r-   rê  r$   r   r   r   r+   /  s$   



ÿÿ
zBitSet.__init__c                 C   s`   t | jƒtj }d}td|ƒD ]}|  |¡r|d7 }n|d7 }|d d s-|d|d  7 }q|S )Nr   r   Ú1Úor   é
   z|%s|)r:   rê  rg   ÚBITSr   Úat)r-   Úbitsrï   r~   r   r   r   rA   B  s   

€zBitSet.__str__c                 C   rã   r   rä   r•   r   r   r   rC   N  rå   zBitSet.__repr__c                 C   s^   |sdS t |tƒr|  |¡S t|ƒst| d| ƒ‚t|ƒdkr&t| d| ƒ‚t|ƒ}|  |¡S )NFzchar or unichar expected: %sr   zchar expected: %s)r"   r‚   rï  r%   rI   r:   rY   )r-   rÕ   rm  r   r   r   rK  Q  s   


zBitSet.memberc                 C   s
   |t j? S r   )rg   ÚLOG_BITS)r-   Úbitr   r   r   Ú
wordNumberg  r–   zBitSet.wordNumberc                 C   s   |t j@ }d|> S ræ   )rg   ÚMOD_MASK)r-   rò  rÄ  r   r   r   ÚbitMaskj  s   
zBitSet.bitMaskTc                 C   s˜   |   |¡}|  |¡}|t| jƒkr3|t| jƒ d }td|ƒD ]}| j d¡ qt| jƒ|d ks3J ‚|r@| j|  |O  < d S | j|  | M  < d S r  )ró  rõ  r:   rê  r   r=   )r-   rò  Úonr~   Úmaskr¿   r$   r   r   r   rj   n  s   

z
BitSet.setc                 C   s   |   || ¡ d S r   )rj   )r-   rò  Úoffr   r   r   rø    ré   z
BitSet.offc                 C   s&   |   |¡}| j| }|  |¡}||@ S r   )ró  rê  rõ  )r-   rò  r~   ÚvrY  r   r   r   rï  ‚  s   


z	BitSet.atr   )T)r0   r1   r2   rî  ÚNIBBLErñ  rô  r+   rA   rC   rK  ró  rõ  rj   rH  rø  rï  r   r   r   r   rg   )  s    


rg   c                 C   ó   t d| j ƒ‚©Nz1%s is only valid if parser is built for debugging)r<  Ú	func_name©rà  r   r   r   Úillegalarg_ex  ó
   ÿÿrÿ  c                 C   rû  rü  )ÚRuntimeErrorrý  rþ  r   r   r   Ú
runtime_ex’  r   r  c                   @   sl   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTokenBufferc                 C   s$   || _ d| _d| _d| _tƒ | _d S rŽ   )r  rß   rà   rá   rÏ   râ   r@  r   r   r   r+   œ  s
   zTokenBuffer.__init__c                 C   r  rŽ   r  r•   r   r   r   rÚ   £  r	  zTokenBuffer.resetc                 C   rê   ræ   rë   r•   r   r   r   rì   ©  ré   zTokenBuffer.consumec                 C   sJ   |   ¡  | j ¡ || j k r#| j | j ¡ ¡ | j ¡ || j k sd S d S r   )rÿ   râ   rÝ   rà   r=   r  r%  )r-   r  r   r   r   rø   ¬  s   ÿzTokenBuffer.fillc                 C   r¬   r   )r  r•   r   r   r   ÚgetInput±  r®   zTokenBuffer.getInputc                 C   s"   |   |¡ | j | j| d ¡jS ræ   )rø   râ   rÙ   rà   r›   rö   r   r   r   rû   ´  s   
zTokenBuffer.LAc                 C   rù   ræ   rú   rö   r   r   r   ÚLT¸  rü   zTokenBuffer.LTc                 C   rý   ræ   rþ   r•   r   r   r   r   ¼  r  zTokenBuffer.markc                 C   r  ræ   r  r  r   r   r   r  Á  r  zTokenBuffer.rewindc                 C   r
  r  r  r•   r   r   r   rÿ   Æ  r  zTokenBuffer.syncConsumec                 C   s   d| j | j| j| j| jf S )Nz(%s,%s,%s,%s,%s))r  rß   rà   rá   râ   r•   r   r   r   rA   Ð  s   ûzTokenBuffer.__str__c                 C   rã   r   rä   r•   r   r   r   rC   Ø  rå   zTokenBuffer.__repr__N)r0   r1   r2   r+   rÚ   rì   rø   r  rû   r  r   r  rÿ   rA   rC   r   r   r   r   r  ›  s    
r  c                   @   r#  )ÚParserSharedInputStatec                 C   s   d | _ |  ¡  d S r   )r  rÚ   r•   r   r   r   r+   á  s   zParserSharedInputState.__init__c                 C   s$   d| _ d | _| jr| j ¡  d S d S rŽ   )r  r   r  rÚ   r•   r   r   r   rÚ   å  s
   ÿzParserSharedInputState.resetN)r0   r1   r2   r+   rÚ   r   r   r   r   r  ß  s    r  c                   @   s¤  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Z d=d>„ Z!d?d@„ Z"dAdB„ Z#dCdD„ Z$dEdF„ Z%dGdH„ Z&dIdJ„ Z'dKdL„ Z(dMdN„ Z)dOdP„ Z*dQdR„ Z+dSdT„ Z,dUdV„ Z-dWdX„ Z.dYdZ„ Z/d[d\„ Z0d]d^„ Z1d_d`„ Z2dadb„ Z3dcdd„ Z4dedf„ Z5dgS )hÚParserc                 O   sT   d | _ d | _d | _i | _d| _d| _|stƒ | _d S |d }t|tƒs%J ‚|| _d S )NFr   )	r€   Ú	returnASTÚ
astFactoryÚtokenTypeToASTClassMapÚignoreInvalidDebugCallsrx  r  r„  r"   )r-   r   r}  Úarg0r   r   r   r+   ñ  s   zParser.__init__c                 C   r¬   r   )r
  r•   r   r   r   ÚgetTokenTypeToASTClassMap   r®   z Parser.getTokenTypeToASTClassMapc                 C   ó   | j s
t| jƒ d S d S r   )r  rÿ  ÚaddMessageListener©r-   Úlr   r   r   r    ó   ÿzParser.addMessageListenerc                 C   r  r   )r  rÿ  ÚaddParserListenerr  r   r   r   r    r  zParser.addParserListenerc                 C   r  r   )r  rÿ  ÚaddParserMatchListenerr  r   r   r   r    r  zParser.addParserMatchListenerc                 C   r  r   )r  rÿ  ÚaddParserTokenListenerr  r   r   r   r    r  zParser.addParserTokenListenerc                 C   r  r   )r  rÿ  ÚaddSemanticPredicateListenerr  r   r   r   r    r  z#Parser.addSemanticPredicateListenerc                 C   r  r   )r  rÿ  ÚaddSyntacticPredicateListenerr  r   r   r   r    r  z$Parser.addSyntacticPredicateListenerc                 C   r  r   )r  rÿ  ÚaddTraceListenerr  r   r   r   r    r  zParser.addTraceListenerc                 C   ró   r   rô   r•   r   r   r   rì      r®   zParser.consumec                 C   r×  ræ   )rû   rŸ   rì   )r-   rˆ   r   r   r   Ú_consumeUntil_type#  rÚ  zParser._consumeUntil_typec                 C   sT   |   d¡tkr$| |   d¡¡s(|  ¡  |   d¡tkr&| |   d¡¡rd S d S d S d S ræ   )rû   rŸ   rK  rì   ©r-   rj   r   r   r   Ú_consumeUntil_bitset'  s   .ÿzParser._consumeUntil_bitsetc                 C   s&   t |tƒr|  |¡ d S |  |¡ d S r   )r"   r‚   r  r  rA  r   r   r   ÚconsumeUntil+  s   
zParser.consumeUntilc                 C   r£   r   r   r•   r   r   r   ÚdefaultDebuggingSetup1  r¢   zParser.defaultDebuggingSetupc                 C   r¬   r   ©r  r•   r   r   r   ÚgetAST4  r®   zParser.getASTc                 C   r¬   r   ©r	  r•   r   r   r   ÚgetASTFactory7  r®   zParser.getASTFactoryc                 C   rš  r   r“  r•   r   r   r   rS   :  rå   zParser.getFilenamec                 C   r¬   r   rŸ  r•   r   r   r   r   =  r®   zParser.getInputStatec                 C   rÊ   r   rŸ  r¢  r   r   r   r¤  @  r–   zParser.setInputStatec                 C   r×   r   ©r€   ©r-   rm  r   r   r   ÚgetTokenNameC  r–   zParser.getTokenNamec                 C   r¬   r   r"  r•   r   r   r   ÚgetTokenNamesF  r®   zParser.getTokenNamesc                 C   r¬   r   )Úfalser•   r   r   r   ÚisDebugModeI  r®   zParser.isDebugModec                 C   ró   r   rô   r[  r   r   r   rû   L  r®   z	Parser.LAc                 C   ró   r   rô   r[  r   r   r   r  O  r®   z	Parser.LTc                 C   r«  r   r¬  r•   r   r   r   r   R  r"  zParser.markc                 C   s6   |   d¡|krt| j|  d¡|d|  ¡ ƒ‚|  ¡  d S r­  ©rû   r   r€   r  rS   rì   rË   r   r   r   Ú
_match_intU  ó
   ÿzParser._match_intc                 C   s8   |  |  d¡¡st| j|  d¡|d|  ¡ ƒ‚|  ¡  d S r­  )rK  rû   r   r€   r  rS   rì   r®  r   r   r   Ú
_match_set\  s
   ÿzParser._match_setc                 C   s8   t |tƒr|  |¡ d S t |tƒr|  |¡ d S tdƒ‚)Nz0Parser.match requires integer ot BitSet argument)r"   r‚   r)  rg   r+  rI   r  r   r   r   r²  c  s   



zParser.matchc                 C   s6   |   d¡|krt| j|  d¡|d|  ¡ ƒ‚|  ¡  d S r³  r(  rË   r   r   r   r´  l  r*  zParser.matchNotc                 C   r  r   )r  r  ÚremoveMessageListenerr  r   r   r   r,  s  r  zParser.removeMessageListenerc                 C   r  r   )r  r  ÚremoveParserListenerr  r   r   r   r-  w  r  zParser.removeParserListenerc                 C   r  r   )r  r  ÚremoveParserMatchListenerr  r   r   r   r.  {  r  z Parser.removeParserMatchListenerc                 C   r  r   )r  r  ÚremoveParserTokenListenerr  r   r   r   r/    r  z Parser.removeParserTokenListenerc                 C   r  r   )r  r  ÚremoveSemanticPredicateListenerr  r   r   r   r0  ƒ  r  z&Parser.removeSemanticPredicateListenerc                 C   r  r   )r  r  Ú removeSyntacticPredicateListenerr  r   r   r   r1  ‡  r  z'Parser.removeSyntacticPredicateListenerc                 C   r  r   )r  r  ÚremoveTraceListenerr  r   r   r   r2  ‹  r  zParser.removeTraceListenerc                 C   sz   d}|   ¡ }|rd| | }t|tƒr1| ¡ }| ¡ }| ¡ }|d }t||||f tjd d S t|t	|ƒtjd d S )Nzsyntax error:z%s:z/unexpected symbol at line %s (column %s) : "%s"©rƒ  )
rS   r"   rH   rK   rJ   rL   r   r€  Ústderrr>   )r-   r$   r   r†  r8   rN   rO   r   r   r   r¾    s   
zParser.reportErrorc                 C   s8   |   ¡ }|rtd|t|ƒf ƒ d S tdt|ƒ ƒ d S )Nz%s:warning: %szwarning: %sr½  )r-   rï   r†  r   r   r   rÀ    s   zParser.reportWarningc                 C   rÁ  r   rÂ  rÃ  r   r   r   r  ¤  ré   zParser.rewindc                 C   rÊ   r   r   r”  r   r   r   ÚsetASTFactory§  r–   zParser.setASTFactoryc                 C   rÓ   r   ©r	  ÚsetASTNodeTyperÅ  r   r   r   ÚsetASTNodeClassª  rÖ   zParser.setASTNodeClassc                 C   ó   |   |¡ d S r   ©r8  ©r-   ÚnodeTyper   r   r   r7  ­  r:  zParser.setASTNodeTypec                 C   r  r   )r  r  ÚsetDebugMode)r-   Ú	debugModer   r   r   r=  °  r  zParser.setDebugModec                 C   r’  r   r“  r”  r   r   r   r¦   ´  r"  zParser.setFilenamec                 C   rÊ   r   )r  )r-   Úvaluer   r   r   ÚsetIgnoreInvalidDebugCalls·  r–   z!Parser.setIgnoreInvalidDebugCallsc                 C   r’  r   r  rË   r   r   r   ÚsetTokenBufferº  r"  zParser.setTokenBufferc                 C   rÍ  rÎ  rÏ  r•   r   r   r   rÐ  ½  ré   zParser.traceIndentc                 C   ó   |  j d7  _ |  d|¡ d S ©Nr   ú> ©rx  ÚtracerÑ  r   r   r   rÓ  À  r  zParser.traceInc                 C   ó   |   d|¡ |  jd8  _d S ©Nú< r   ©rF  rx  rÑ  r   r   r   rÔ  Ä  ó   zParser.traceOutc                 C   óH   |sd S |j s||_ n|js|j  |¡ n|j |¡ ||_| ¡  d S r   ©ÚrootÚchildÚsetFirstChildÚsetNextSiblingÚadvanceChildToEnd©r-   Ú
currentASTrO  r   r   r   ÚaddASTChildÉ  ó   zParser.addASTChildc                 C   ó.   |r|  |j¡ |j|_| ¡  ||_d S d S r   ©ÚaddChildrN  rO  rR  ©r-   rT  rN  r   r   r   ÚmakeASTRootÖ  ó   
ùzParser.makeASTRootN)6r0   r1   r2   r+   r  r  r  r  r  r  r  r  rì   r  r  r  r  r  r!  rS   r   r¤  r$  r%  r'  rû   r  r   r)  r+  r²  r´  r,  r-  r.  r/  r0  r1  r2  r¾  rÀ  r  r5  r8  r7  r=  r¦   r@  rA  rÐ  rÓ  rÔ  rU  r[  r   r   r   r   r  ï  sh    	r  c                       sT   e Zd Z‡ fdd„Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
‡  ZS )Ú	LLkParserc                    sì   z|d }W n   d}Y t |tƒrtt| ƒ ¡  || _d S t |tƒr6tt| ƒ |¡ | jdg|¢R Ž  d S t |tƒrRtt| ƒ ¡  |  	|¡ | jdg|¢R Ž  d S t |t
ƒrrtt| ƒ ¡  t|ƒ}|  	|¡ | jdg|¢R Ž  d S tdƒ‚)Nr   r   zKLLkParser requires integer, ParserSharedInputStream or TokenStream argument)r"   r‚   r  r]  r+   r÷   r  Úset_kr  rA  r$  rI   )r-   r   r}  r…  ÚtokenBufr  r   r   r+   æ  s0   





zLLkParser.__init__c                 C   rÖ  r   )r„  r  rì   r•   r   r   r   rì     rÖ   zLLkParser.consumec                 C   ó   | j j |¡S r   )r„  r  rû   r[  r   r   r   rû   
  r:  zLLkParser.LAc                 C   r`  r   )r„  r  r  r[  r   r   r   r    r:  zLLkParser.LTc                 G   s$   z|| | _ W d S    d| _ Y d S ræ   )r÷   )r-   rØ   r   r   r   r   r^    s   zLLkParser.set_kc                 C   s˜   t t| ƒƒ |  ¡  d}| jjdkrd}t || | ƒ td| jd ƒD ]!}|dkr.t dƒ |  |¡r;|  |¡ ¡ }nd}t d||f ƒ q$t dƒ d S )	Nr   r   z [guessing]r   z, ÚnullzLA(%s) == %srl   )	r   r›   rÐ  r„  r  r   r÷   r  rL   )r-   ÚeerÒ  Úguessr~   rù  r   r   r   rF    s   
zLLkParser.tracec                 C   rB  rC  rE  rÑ  r   r   r   rÓ  '  r  zLLkParser.traceInc                 C   rG  rH  rJ  rÑ  r   r   r   rÔ  +  rK  zLLkParser.traceOut)r0   r1   r2   r+   rì   rû   r  r^  rF  rÓ  rÔ  r  r   r   r  r   r]  ä  s    !r]  c                   @   r'   )ÚTreeParserSharedInputStatec                 C   s
   d| _ d S rŽ   )r  r•   r   r   r   r+   4  r–   z#TreeParserSharedInputState.__init__Nr/   r   r   r   r   rd  3  s    rd  c                   @   s”   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#S )$Ú
TreeParserc                 O   s,   t ƒ | _d | _g | _d | _tƒ | _d| _d S rŽ   )rd  r„  Ú_retTreer€   r  Ú
ASTFactoryr	  rx  )r-   r   r}  r   r   r   r+   =  s   
zTreeParser.__init__c                 C   r¬   r   r  r•   r   r   r   r  E  r®   zTreeParser.getASTc                 C   r¬   r   r   r•   r   r   r   r!  H  r®   zTreeParser.getASTFactoryc                 C   r×   r   r"  r#  r   r   r   r$  K  r–   zTreeParser.getTokenNamec                 C   r¬   r   r"  r•   r   r   r   r%  N  r®   zTreeParser.getTokenNamesc                 C   sŽ   t |tƒst |tƒsJ ‚|r|tkrt|  ¡ ||dƒ‚t |tƒr/| ¡ |kr/t|  ¡ ||dƒ‚t |tƒrC| |j¡sEt|  ¡ ||dƒ‚d S d S ©NF)r"   r‚   rg   rM   r   r%  r­   rK  )r-   rÌ   rj   r   r   r   r²  Q  s   ÿzTreeParser.matchc                 C   s.   |r|t ks| ¡ |krt|  ¡ ||dƒ‚d S ©NT)rM   r­   r   r%  )r-   rÌ   Úttyper   r   r   r´  \  s   ÿzTreeParser.matchNotc                 C   s   t d|tjd d S )Nzerror:r3  )r   r€  r4  )r-   Úexr   r   r   r¾  `  s   zTreeParser.reportErrorc                 C   s   t d|ƒ d S )Nzwarning:)r   r—  r   r   r   rÀ  c  r:  zTreeParser.reportWarningc                 C   rÊ   r   r   r”  r   r   r   r5  f  r–   zTreeParser.setASTFactoryc                 C   r9  r   r:  r;  r   r   r   r7  i  r:  zTreeParser.setASTNodeTypec                 C   rÓ   r   r6  r;  r   r   r   r8  l  rÖ   zTreeParser.setASTNodeClassc                 C   rÍ  rÎ  rÏ  r•   r   r   r   rÐ  o  ré   zTreeParser.traceIndentc                 C   sR   |  j d7  _ |  ¡  td| d t|t|ƒdƒ d t| jjdkddƒ ƒ d S )	Nr   rD  ú(ra  ú)r   ú
[guessing]r   )rx  rÐ  r   r!   r>   r„  r  ©r-   rÒ  rÌ   r   r   r   rÓ  r  s   ÿÿ
þzTreeParser.traceInc                 C   sR   |   ¡  td| d t|t|ƒdƒ d t| jjdkddƒ ƒ |  jd8  _d S )	NrI  rl  ra  rm  r   rn  r   r   )rÐ  r   r!   r>   r„  r  rx  ro  r   r   r   rÔ  y  s   ÿÿþzTreeParser.traceOutc                 C   rL  r   rM  rS  r   r   r   rU    rV  zTreeParser.addASTChildc                 C   rW  r   rX  rZ  r   r   r   r[  Ž  r\  zTreeParser.makeASTRootN)r0   r1   r2   r+   r  r!  r$  r%  r²  r´  r¾  rÀ  r5  r7  r8  rÐ  rÓ  rÔ  rU  r[  r   r   r   r   re  ;  s$    re  c                 C   s   | r| j r| j } | j s| S r   ©Úright)Úastr   r   r   Ú	rightmostœ  s
   ÿrs  c                 C   s`   | r#|r#|   |¡sdS t|  ¡ | ¡ |ƒsdS |  ¡ } | ¡ }| r#|st|| |  o,| ƒ}|S rh  )ÚequalsÚcmptreeÚgetFirstChildÚgetNextSiblingr!   )rï   rÌ   Úpartialr   r   r   r   ru  ¢  s   
öru  c                   @   sÐ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ ZeZd-d.„ Zd/d0„ Zd1S )2rG   c                 C   r£   r   r   r•   r   r   r   r+   ·  r¢   zAST.__init__c                 C   r£   r   r   rc  r   r   r   rY  º  r¢   zAST.addChildc                 C   r¡   rh  r   rË   r   r   r   rt  ½  r¢   z
AST.equalsc                 C   r¡   rh  r   rË   r   r   r   Ú
equalsListÀ  r¢   zAST.equalsListc                 C   r¡   rh  r   rË   r   r   r   ÚequalsListPartialÃ  r¢   zAST.equalsListPartialc                 C   r¡   rh  r   rË   r   r   r   Ú
equalsTreeÆ  r¢   zAST.equalsTreec                 C   r¡   rh  r   rË   r   r   r   ÚequalsTreePartialÉ  r¢   zAST.equalsTreePartialc                 C   r£   r   r   )r-   Útreer   r   r   ÚfindAllÌ  r¢   zAST.findAllc                 C   r£   r   r   )r-   Úsubtreer   r   r   ÚfindAllPartialÏ  r¢   zAST.findAllPartialc                 C   r¤   r   r   r•   r   r   r   rv  Ò  r¢   zAST.getFirstChildc                 C   r¤   r   r   r•   r   r   r   rw  Õ  r¢   zAST.getNextSiblingc                 C   r¡   rí   r   r•   r   r   r   rL   Ø  r¢   zAST.getTextc                 C   ó   t S r   )r‡   r•   r   r   r   r­   Û  r¢   zAST.getTypec                 C   r¡   rŽ   r   r•   r   r   r   rJ   Þ  r¢   zAST.getLinec                 C   r¡   rŽ   r   r•   r   r   r   rK   á  r¢   zAST.getColumnc                 C   r¡   rŽ   r   r•   r   r   r   ÚgetNumberOfChildrenä  r¢   zAST.getNumberOfChildrenc                 C   r£   r   r   rË   r   r   r   Ú
initializeç  r¢   zAST.initializec                 C   r£   r   r   rc  r   r   r   rP  ê  r¢   zAST.setFirstChildc                 C   r£   r   r   ©r-   rî   r   r   r   rQ  í  r¢   zAST.setNextSiblingc                 C   r£   r   r   r§   r   r   r   r¨   ð  r¢   zAST.setTextc                 C   r£   r   r   ©r-   rj  r   r   r   r¯   ó  r¢   zAST.setTypec                 C   s   |   ¡  d S r   ©rL   r•   r   r   r   r´   ö  r"  zAST.toStringc                 C   ó   |   ¡ S r   r†  r•   r   r   r   ÚtoStringListû  rå   zAST.toStringListc                 C   r‡  r   r†  r•   r   r   r   ÚtoStringTreeþ  rå   zAST.toStringTreeN)r0   r1   r2   r+   rY  rt  ry  rz  r{  r|  r~  r€  rv  rw  rL   r­   rJ   rK   r‚  rƒ  rP  rQ  r¨   r¯   r´   rA   rˆ  r‰  r   r   r   r   rG   ¶  s4    rG   c                   @   r  )ÚASTNULLTypec                 C   s   t  | ¡ d S r   )rG   r+   r•   r   r   r   r+   	  s   
zASTNULLType.__init__c                 C   r¡   )Nz	<ASTNULL>r   r•   r   r   r   rL   	  r¢   zASTNULLType.getTextc                 C   r  r   )r°   r•   r   r   r   r­   	  r¢   zASTNULLType.getTypeN)r0   r1   r2   r+   rL   r­   r   r   r   r   rŠ  	  s    rŠ  c                   @   sø   e Zd ZdZdZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ ZeeƒZd1d2„ Zd3d4„ Zd5d6„ ZeZ d7d8„ Z!dS )9ÚBaseASTFNc                 C   ó   d | _ d | _d S r   ©Údownrq  r•   r   r   r   r+   	  rk  zBaseAST.__init__c                 C   s4   |rt | jƒ}|r||_d S | jrJ ‚|| _d S d S r   )rs  rŽ  rq  )r-   rF   rÌ   r   r   r   rY  	  s   



úzBaseAST.addChildc                 C   s$   | j }d}|r|d7 }|j}|s|S r  r  )r-   rÌ   rî   r   r   r   r‚  (	  s   þzBaseAST.getNumberOfChildrenc                 C   sr   | }|r7|o
|  |¡}|r| |¡ n| o| |¡}|r"| |¡ | ¡ r/| ¡  |||¡ | ¡ }|sd S d S r   )r|  r=   r{  rv  ÚdoWorkForFindAllrw  )r-   rù  ÚtargetÚpartialMatchÚsiblingrµ  r¶  r   r   r   r  0	  s   
ózBaseAST.doWorkForFindAllc                 C   s(   |sdS |   ¡ |  ¡ ko|  ¡ | ¡ kS rh  )rL   r­   rË   r   r   r   rt  C	  s    zBaseAST.equalsc                 C   ó   t | |ddS ©NF©rx  ©ru  rË   r   r   r   ry  K	  r:  zBaseAST.equalsListc                 C   r“  ©NTr•  r–  rË   r   r   r   rz  Q	  r:  zBaseAST.equalsListPartialc                 C   s    |   |¡ot|  ¡ | ¡ ddS r”  ©rt  ru  rv  rË   r   r   r   r{  W	  s   
ÿzBaseAST.equalsTreec                 C   s(   |sdS |   |¡ot|  ¡ | ¡ ddS r—  r˜  rË   r   r   r   r|  ^	  s
   ÿzBaseAST.equalsTreePartialc                 C   ó   g }|sd S |   ||d¡ |S rh  ©r  )r-   r  Úrootsr   r   r   r~  g	  ó
   zBaseAST.findAllc                 C   r™  ri  rš  )r-   Úsubr›  r   r   r   r€  t	  rœ  zBaseAST.findAllPartialc                 C   r¬   r   ©rŽ  r•   r   r   r   rv  	  r®   zBaseAST.getFirstChildc                 C   r¬   r   rp  r•   r   r   r   rw  ƒ	  r®   zBaseAST.getNextSiblingc                 C   r¡   rí   r   r•   r   r   r   rL   ‡	  r¢   zBaseAST.getTextc                 C   r¡   rŽ   r   r•   r   r   r   r­   ‹	  r¢   zBaseAST.getTypec                 C   r¡   rŽ   r   r•   r   r   r   rJ   Ž	  r¢   zBaseAST.getLinec                 C   r¡   rŽ   r   r•   r   r   r   rK   ‘	  r¢   zBaseAST.getColumnc                 C   s
   d | _ d S r   rž  r•   r   r   r   ÚremoveChildren•	  r–   zBaseAST.removeChildrenc                 C   rÊ   r   rž  rc  r   r   r   rP  ˜	  r–   zBaseAST.setFirstChildc                 C   rÊ   r   rp  r„  r   r   r   rQ  ›	  r–   zBaseAST.setNextSiblingc                 C   r£   r   r   r§   r   r   r   r¨   Ÿ	  r¢   zBaseAST.setTextc                 C   r£   r   r   r…  r   r   r   r¯   £	  r¢   zBaseAST.setTypec                 C   s   | }|}d S r   r   )ÚverboseÚnamesÚverboseStringConversionr€   r   r   r   ÚsetVerboseStringConversion§	  s   z"BaseAST.setVerboseStringConversionc                   C   r  r   r"  r   r   r   r   r%  ®	  r¢   zBaseAST.getTokenNamesc                 C   r‡  r   r†  r•   r   r   r   r´   ±	  rå   zBaseAST.toStringc                 C   s$   |   ¡ }|  ¡ }|r|| ¡ 7 }|S r   )r‰  rw  rˆ  )r-   ÚtsÚsibr   r   r   rˆ  µ	  s
   zBaseAST.toStringListc                 C   sD   d}|   ¡ }|r|d7 }|d|  ¡  7 }|r || ¡ 7 }|d7 }|S )Nr   z (r<   z ))rv  r´   rˆ  )r-   r¤  Úkidr   r   r   r‰  ¿	  s   zBaseAST.toStringTree)"r0   r1   r2   r¢  r€   r+   rY  r‚  r  rt  ry  rz  r{  r|  r~  r€  rv  rw  rL   r­   rJ   rK   rŸ  rP  rQ  r¨   r¯   r£  Ústaticmethodr%  r´   rˆ  rA   r‰  r   r   r   r   r‹  	  s@    		r‹  c                       sV   e Zd Zd‡ fdd„	Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
‡  ZS )Ú	CommonASTNc                    s4   t t| ƒ ¡  t| _d| _d| _d| _|  |¡ d S )Nrœ   r   )	r  r¨  r+   r‡   rj  rO   r8   r9   rƒ  )r-   rE   r  r   r   r+   Ð	  s   zCommonAST.__init__c                 C   r¬   r   rº   r•   r   r   r   rL   Ú	  r®   zCommonAST.getTextc                 C   r¬   r   )rj  r•   r   r   r   r­   Þ	  r®   zCommonAST.getTypec                 C   r¬   r   r¹   r•   r   r   r   rJ   â	  r®   zCommonAST.getLinec                 C   r¬   r   )r9   r•   r   r   r   rK   æ	  r®   zCommonAST.getColumnc                 G   s†   |sd S |d }t |tƒr|d }|  |¡ |  |¡ d S t |tƒs't |tƒrA|  | ¡ ¡ |  | ¡ ¡ | ¡ | _	| 
¡ | _d S d S r  )r"   r‚   r¯   r¨   rG   rH   rL   r­   rJ   r8   rK   r9   )r-   r   r  r…  r   r   r   rƒ  é	  s   




ûzCommonAST.initializec                 C   s   t |ƒsJ ‚|| _d S r   )r%   rO   )r-   Útext_r   r   r   r¨   ý	  s   
zCommonAST.setTextc                 C   r¡  r   )r"   r‚   rj  )r-   Úttype_r   r   r   r¯   
  r¥  zCommonAST.setTyper   )r0   r1   r2   r+   rL   r­   rJ   rK   rƒ  r¨   r¯   r  r   r   r  r   r¨  Ï	  s    
r¨  c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚCommonASTWithHiddenTokensc                 G   rÂ   r   )r¨  r+   rÃ   rÄ   r,   r   r   r   r+   
  rÅ   z"CommonASTWithHiddenTokens.__init__c                 C   r¬   r   rÆ   r•   r   r   r   rÇ   
  r®   z(CommonASTWithHiddenTokens.getHiddenAfterc                 C   r¬   r   rÈ   r•   r   r   r   rÉ   
  r®   z)CommonASTWithHiddenTokens.getHiddenBeforec                 G   s^   t j| g|¢R Ž  |r+t|d tƒr-t|d tƒsJ ‚|d  ¡ | _|d  ¡ | _d S d S d S rŽ   )	r¨  rƒ  r"   rH   rÁ   rÉ   rÃ   rÇ   rÄ   r,   r   r   r   rƒ  
  s   ýz$CommonASTWithHiddenTokens.initializeN)r0   r1   r2   r+   rÇ   rÉ   rƒ  r   r   r   r   r«  

  s
    r«  c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ ZeZeZd	S )
ÚASTPairc                 C   rŒ  r   )rN  rO  r•   r   r   r   r+   #
  rk  zASTPair.__init__c                 C   s2   | j r| j  ¡ r| j  ¡ | _ | j  ¡ sd S d S d S r   )rO  rw  r•   r   r   r   rR  (
  s   
ÿÿzASTPair.advanceChildToEndc                 C   s   t ƒ }| j|_| j|_|S r   )r¬  rN  rO  )r-   Útmpr   r   r   Úcopy.
  s   zASTPair.copyc                 C   s4   t t d| j ¡ ƒ}t t d| j ¡ ƒ}d||f S )Nra  z[%s,%s])r!   rN  rL   rO  )r-   r   rp   r   r   r   r´   4
  s   zASTPair.toStringN)	r0   r1   r2   r+   rR  r®  r´   rA   rC   r   r   r   r   r¬  "
  s    r¬  c                   @   sx   e Zd Zddd„Zdd„ Zddd„ZeZdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZeZdS )rg  Nc                 C   s   d | _ t||d ƒ| _d S r   )Ú_classr!   Ú	_classmap)r-   Útabler   r   r   r+   B
  s   zASTFactory.__init__c                 G   s~  |s|   t¡S |d }d }d }z
|d }|d }W n   Y t|tƒr=|s=|  |¡}|   |¡}|r;| |t||dƒ¡ |S t|tƒrS|rS|   |¡}|rQ| ||¡ |S t|tƒrh|   | ¡ ¡}|rf| |¡ |S t|t	ƒrˆ|sˆ| ¡ }t|tƒszJ ‚|   |¡}|r†| |¡ |S t|t	ƒr¬|r¬t|t
ƒs–J ‚t|tƒsJ ‚||ƒ}|r¨t|tƒsªJ ‚|S t|t
ƒr½|ƒ }t|tƒs»J ‚|S d S )Nr   r   r6   r   )Úcreater‡   r"   r‚   ÚgetASTNodeTyperƒ  r!   rG   r­   rH   r›   Ú
issubclass)r-   r   r  r…  Úarg2rp   rÌ   rj  r   r   r   r²  F
  sX   








üzASTFactory.createc                 C   s.   |sd S t |tƒsJ ‚t|tƒsJ ‚|| _d S r   )r"   r›   r´  rG   r¯  )r-   Ú	classNamer   r   r   r8  †
  s
   
zASTFactory.setASTNodeClassc                 C   r¬   r   )r¯  r•   r   r   r   ÚgetASTNodeClass
  r®   zASTFactory.getASTNodeClassc                 C   r¬   r   ©r°  r•   r   r   r   r  •
  r®   z$ASTFactory.getTokenTypeToASTClassMapc                 C   rÊ   r   r¸  )r-   Úamapr   r   r   ÚsetTokenTypeToASTClassMap˜
  r–   z$ASTFactory.setTokenTypeToASTClassMapc                 C   s   dd l }t||jd d S )Nr   r3  )r€  r   r4  )r-   r  r€  r   r   r   r   ›
  s   zASTFactory.errorc                 C   sV   | j si | _ |sz| j |= W dS    Y dS t|tƒsJ ‚t|tƒs$J ‚|| j |< dS )zK
        Specify a mapping between a token type and a (AST) class.
        N)r°  r"   r›   r´  rG   )r-   rˆ   r¶  r   r   r   ÚsetTokenTypeASTNodeTypeŸ
  s   z"ASTFactory.setTokenTypeASTNodeTypec                 C   s8   | j rz| j | }|r|W S W n   Y | jr| jS tS )zµ
        For a given token type return the AST node type. First we
        lookup a mapping table, second we try _class
        and finally we resolve to "antlr.CommonAST".
        )r°  r¯  r¨  )r-   rˆ   rp   r   r   r   r³  µ
  s   
ÿzASTFactory.getASTNodeTypec                 C   ó
   t || ƒS r   )ÚduprË   r   r   r   r½  Í
  r–   zASTFactory.dupc                 C   r¼  r   )ÚdupListrË   r   r   r   r¾  Ð
  r–   zASTFactory.dupListc                 C   r¼  r   )ÚdupTreerË   r   r   r   r¿  Ó
  r–   zASTFactory.dupTreer   )r0   r1   r2   r+   r²  r8  r7  r·  r  rº  r   r»  r³  r½  r¾  r¿  Úmaptyper   r   r   r   rg  A
  s    

@rg  c                   @   r#  )Ú
ASTVisitorc                 G   r£   r   r   r,   r   r   r   r+   â
  r¢   zASTVisitor.__init__c                 C   r£   r   r   )r-   rr  r   r   r   Úvisitå
  r¢   zASTVisitor.visitN)r0   r1   r2   r+   rÂ  r   r   r   r   rÁ  á
  r(  rÁ  c                  G   sÎ   | sd S t dt| ƒƒD ]}| | }|rt|tƒsJ ‚q| d }d }|r(| d ¡ t dt| ƒƒD ]5}| | s6q/|s?| |  }}n|sM| | | ¡ | ¡ }n| | | ¡ | ¡ }| ¡ rd| ¡ }| ¡ s\q/|S r  )r   r:   r"   rG   rP  rv  rQ  rw  )Únodesr~   rF   rN  Útailr   r   r   Úmakeð
  s4   €

ÿ€rÅ  c                 C   s0   | sd S |r|  | j¡}ntdƒ‚| | ¡ |S )Nz)dup function requires ASTFactory argument)r²  r  rI   rƒ  )rÌ   ÚfactoryÚdup_tr   r   r   r½    s   
r½  c                 C   s:   t | |ƒ}|}| r|  ¡ } | t | |ƒ¡ | ¡ }| s	|S r   )r¿  rw  rQ  )rÌ   rÆ  ÚresultÚntr   r   r   r¾    s   
ür¾  c                 C   s&   t | |ƒ}| r| t|  ¡ |ƒ¡ |S r   )r½  rP  r¾  rv  )rÌ   rÆ  rÈ  r   r   r   r¿  $  s   
r¿  )XÚ
__future__r   r€  Úcompatr   r   r   r   r±   r‡   rŸ   rµ   r°   r¶   rØ  r   r   r!   r%   r&   r*   r(   r5   rD   rP   r\   r^   r   rŠ   rŒ   r’   r—   r˜   r™   rš   ÚobjectrH   r©  r0   r   ÚTr¸   r«   r©   r¨   r¯   rJ   rK   rL   r­   rÁ   rÏ   rÞ   r  r  r$  r&  r3  rE  rM  r]  ri  rn  r~  rg   rÿ  r  r  r  r  r]  rd  re  rs  ru  rG   rŠ  r‹  r¨  r«  r¬  rg  rÁ  rM   rÅ  r½  r¾  r¿  r   r   r   r   Ú<module>   s¶    ,	#qsN
?U16R>  d	D vOaP :; !
