
    MfH                       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	 Zd
 Zd Zd Zd Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d  d!e          Z G d" d#e          Z G d$ d%e          Z  G d& d'e           Z! G d( d)e          Z" G d* d+e#          Z$ e$e	d,-          e$_%        e&d.k    r e'd/           e$j%        Z( e'e(            G d0 d1e$          Z)e&d.k    r e)            Z( e'e(            e)d2dd3d45          Z( e'e(            e)            Z(e(*                    d          +                    d2          ,                    d3          -                    d4            e'e(            e'e(.                                            e'e(/                                            e'e(0                                            e'e(1                                            G d6 d7e)          Z2 G d8 d9e#          Z3 G d: d;e#          Z4 G d< d=e4          Z5 G d> d?e#          Z6 G d@ dAe#          Z7 G dB dCe#          Z8 G dD dEe7          Z9 G dF dGe7          Z: G dH dIe:          Z; G dJ dK          Z< G dL dMe#          Z= G dN dOe7          Z> G dP dQ          Z? G dR dSe#          Z@dT ZAdU ZB G dV dWe#          ZC G dX dYe#          ZD G dZ d[e#          ZE G d\ d]eE          ZF G d^ d_e#          ZG G d` dae#          ZHdb ZIdc ZJ G dd dee#          ZK G df dgeK          ZL G dh dieK          ZM G dj dkeM          ZN G dl dmeN          ZO G dn doe#          ZP G dp dqe#          ZQ G dr dse#          ZR eL            ZSdt ZTdu ZUdv ZVdw ZWdS )x    )print_functionN   )long
basestring	int_typesxrange       c                      dddddd} | S )N275r   z2.7.5)majorminormicropatchversion )rs    I/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/xlwt/antlr.pyr   r   G   s$    	
 	
A H    c                 N    | r"t          d| t          |          z             d S d S )Nerror: )printtuple)fmtargss     r   errorr    R   s5    
 ,iuT{{*+++++, ,r   c                     | r|}n|}|S Nr   )cond_then_elser   s       r   ifelser&   V   s     Hr   c                 *    t          t                    S r"   )
isinstancer   xs    r   is_string_typer+   ]   s     j!!!r   c                 (    t          |           sJ d S r"   )r+   r)   s    r   assert_string_typer-   b   s    !Dr   c                       e Zd Zd ZdS )ANTLRExceptionc                 *    t          j        | g|R   d S r"   )	Exception__init__selfr   s     r   r2   zANTLRException.__init__l   s!    4'$''''''r   N__name__
__module____qualname__r2   r   r   r   r/   r/   j   s#        ( ( ( ( (r   r/   c                       e Zd Zd Zd ZeZdS )RecognitionExceptionc                    t          j        | g|R   d | _        d| _        d| _        t          |          dk    r|d         | _        t          |          dk    r|d         | _        t          |          dk    r|d         | _        d S d S )Nr	      r   r
   r   )r/   r2   fileNamelinecolumnlenr3   s     r   r2   zRecognitionException.__init__r   s    ,t,,,,	t99>> GDMt99>>QDIt99>>q'DKKK >r   c                    dg}| j         r|                    | j         dz              | j        dk    r| j         s|                    d           |                    t          | j                             | j        dk    r*|                    dt          | j                  z              |                    d           |                    d           t          d                              |          S )Nr   :r	   zline  )r=   appendr>   strr?   join)r4   bufs     r   __str__zRecognitionException.__str__~   s    d= 	,JJt}s*+++9??= $

7###JJs49~~&&&{b  

3T[!1!11222JJsOOO

32ww||C   r   Nr6   r7   r8   r2   rH   __repr__r   r   r   r:   r:   p   s3        
" 
" 
"! ! ! HHHr   r:   c                       e Zd Zd Zd ZeZdS )NoViableAltExceptionc                    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)r:   r2   tokennoder(   ASTToken	TypeErrorr3   s     r   r2   zNoViableAltException.__init__   s    %d2T2222
	d1gc"" 	SQDIIIQ&& 	SaDJJJQRRRr   c                 ,   | j         rW| j                                         }| j                                         }| j                                         }d|d|d|dS | j        t
          k    rdS | j        sJ d| j                                        z  S )Nzunexpected symbol at line z	 (column z): ""zunexpected end of subtreezunexpected node: %s)rN   getLine	getColumngetTextrO   ASTNULL)r4   r>   coltexts       r   rH   zNoViableAltException.__str__   s    : 	X:%%''D:''))C:%%''DDIMcccRVRVRVWW9..y$	(9(9(;(;<<r   NrI   r   r   r   rL   rL      s6        	S 	S 	S
= 
= 
= HHHr   rL   c                       e Zd Zd Zd ZeZdS )NoViableAltForCharExceptionc                    d | _         t          |          dk    rk|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 )	Nr<   r   r   NoViableAltr   r
   r   r	   )	foundCharr@   r:   r2   getFilenamerU   rV   )r4   r   scannerr=   r>   r?   s         r   r2   z$NoViableAltForCharException.__init__   s   t99>>!!WDN1gG ))$*1*=*=*?*?*1//*;*;*1*;*;*=*=? ? ? ? ? YY!^^!!WDNAwH7D!WF ))$*2D&B B B B B !))$*,b"6 6 6 6 6r   c                     d}| j         dk    r| j         dk    r|d| j         z   dz   z  }nN| j         rB|dt          t          | j                                                             dd          z   z  }n|dz  }|S )Nzunexpected char: rC   ~'0xr<   z<None>)r_   hexordupper)r4   mesgs     r   rH   z#NoViableAltForCharException.__str__   s    ">S  T^s%:%:C$.(3..DD^ 	D3s4>223399;;ABB???DDHDr   NrI   r   r   r   r\   r\      s3        6 6 6(   HHHr   r\   c                       e Zd Zd ZdS )SemanticExceptionc                 *    t          j        | g|R   d S r"   )r:   r2   r3   s     r   r2   zSemanticException.__init__   !    %d2T222222r   Nr5   r   r   r   rk   rk      #        3 3 3 3 3r   rk   c                   @    e Zd ZdZdZdZdZdZdZdZ	d Z
d	 Zd
 ZeZdS )MismatchedCharExceptionr   r   r<   r
   r         c                    || _         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    rt          |d                   r|d         rt          j        | _        nt          j        | _        |d         | _        |d         | _        |d         | _	        t                              | d| j	                                        | j	                                        | j	                                                   d S t          |          dk    rt%          |d         t&                    r|d         rt          j        | _        nt          j        | _        |d         | _        |d         | _        |d         | _	        t                              | d	| j	                                        | j	                                        | j	                                                   d S t          j        | _        t                              | d           d S )
Nrq   r
   r   r   r<   r   zMismatched char rangezMismatched charzMismatched char set)r   r@   rp   	NOT_RANGEmismatchTypeRANGEr_   	expectingrh   ra   r:   r2   r`   rU   rV   r+   NOT_CHARCHARr(   BitSetNOT_SETSETsetNONEr3   s     r   r2   z MismatchedCharException.__init__   s   	t99>>Aw B$;$E!!$;$A!!!WDN!!WDNaDJ7DL ))$0G*.,*B*B*D*D*.,*>*>*@*@*.,*@*@*B*BD D D D D YY!^^tAw 7 7^Aw A$;$D!!$;$@!!!WDN!!WDN7DL ))$0A*.,*B*B*D*D*.,*>*>*@*@*.,*@*@*B*BD D D D D YY!^^
47F ; ;^Aw @$;$C!!$;$?!!!WDNAwDH7DL ))$0E*.,*B*B*D*D*.,*>*>*@*@*.,*@*@*B*BD D D D D
 !8 <D ))$0ABBBBBr   c                 (   |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	|z   d	z              d S )
Ni  z'<EOF>'
z'\n'z'\r'	z'\t'rd   )rD   )r4   sbcs      r   appendCharNamez&MismatchedCharException.appendCharName  s     
	'AJJIIi     $YYIIg$YYIIg$YYIIgIIdQho&&&&&r   c                    dg}|                     t                              |                      | j        t          j        k    rb|                     d           |                     || j                   |                     d           |                     || j                   n3| j        t          j	        k    rG|                     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        |                    $|                     d           |                     || j                   t%                                          |                                          S )Nr   
expecting , found expecting anything but ''; got it anywayzexpecting char NOT 
in range: ..one of (	), found )rD   r:   rH   ru   rp   ry   r   rw   r_   rx   rv   rt   rh   r|   r{   ranger@   r}   rE   rF   stripr4   r   is      r   rH   zMismatchedCharException.__str__  s   T
		&..t44555 7 <<<IIl###DN333IIj!!!DN3333"9"BBBII0111DN333II())))#:#@BYBc"dddII'((( $;$EEE		&!!!IIl###DN333IIdOOODJ///IIj!!!DN3333#:#>@W@_"```IIl### $;$CCC		&!!!IIj!!!3tx==)) 5 5##B4444IIk"""DN333uuzz"~~##%%%r   N)r6   r7   r8   r~   ry   rx   rv   rt   r|   r{   r2   r   rH   rJ   r   r   r   rp   rp      sj        DDHEI
CG,C ,C ,Cb' ' ' !& !& !&F HHHr   rp   c                   @    e Zd ZdZdZdZdZdZdZdZ	d Z
d	 Zd
 ZeZdS )MismatchedTokenExceptionr   r   r<   r
   r   rq   rr   c                 (   || _         g | _        d | _        d| _        d | _        t          |          dk    ra|d         rt          j        | _        nt          j	        | _        |d         | _        |d         | _
        |d         | _        |d         | _        nt          |          dk    rat          |d         t                    rF|d         rt          j        | _        nt          j        | _        |d         | _        |d         | _
        nt          |          dk    rat          |d         t"                    rF|d         rt          j        | _        nt          j        | _        |d         | _        |d         | _        n/t          j        | _        t,                              | dd	d
d
           t          |          dk    rOt          |d         t0                    r~|d         | _        | j                                        | _        t,                              | d| j        | j                                        | j                                                   d S t          |d         t8                    rt|d         | _        t;          | j                  | _        t,                              | dd	| j                                        | j                                                   d S d| _        t,                              | dd	d
d
           d S d S )Nr   rr   r
   r   r<   rq   r   z(Mismatched Token: expecting any AST nodez<AST>r	   r   zMismatched Tokenz<empty tree>)r   
tokenNamesrN   	tokenTextrO   r@   r   rt   ru   rv   rw   rh   r=   r(   int	NOT_TOKENTOKENrz   r{   r|   r}   r~   r:   r2   rQ   rW   rU   rV   rP   rE   r3   s     r   r2   z!MismatchedTokenException.__init__O  s   	
	t99>>Aw C$<$F!!$<$B!"1gDO!!WDNaDJ GDMMYY!^^
47C 8 8^Aw C$<$F!!$<$B!"1gDO!!WDNNYY!^^
47F ; ;^Aw A$<$D!!$<$@!"1gDOAwDHH !9 =D ))$0Z\cegiklllt99>>$q'%(( ?!!W
!%!3!3!5!5$--d4F.2m.2j.@.@.B.B.2j.B.B.D.DF F F F F DGC(( 
? G	!$TY$--d4F.5.2i.?.?.A.A.2i.A.A.C.CE E E E E
 "0$--d4F.5r2? ? ? ? ?# >r   c                    |t           k    r|                    d           d S |dk     s|t          | j                  k    r*|                    dt	          |          z   dz              d S |                    | j        |                    d S )Nz<Set of tokens>r   <>)INVALID_TYPErD   r@   r   rE   )r4   r   	tokenTypes      r   appendTokenNamez(MismatchedTokenException.appendTokenName  s    $$II'(((((]]i3t+?+???IIcC	NN*S011111IIdoi011111r   c                    dg}|                     t                              |                      | j        t          j        k    rO|                     d           |                     || j                   |                     d| j        z              n| j        t          j	        k    rG|                     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        z              n| j        t          j        t          j        fv r|                     d           | j        t          j        k    r|                     d           |                     d
           t          t!          | j                            D ]#}|                     || j        |                    $|                     d| j        z              t%                                          |                                          S )Nr   r   r   r   r   zexpecting token r   r   r   r   r   )rD   r:   rH   ru   r   r   r   rw   r   r   rv   rt   rh   r|   r{   r   r@   r}   rE   rF   r   r   s      r   rH   z MismatchedTokenException.__str__  sn   T
		&..t44555 8 >>>IIl###  T^444IIj4>12222":"DDDII0111  T^444II())))#;#AC[Ce"fffII())) $<$FFF		&!!!IIl###  T^444IIdOOO  TZ000IIj4>12222#;#?AYAa"bbbIIl### $<$DDD		&!!!IIj!!!3tx==)) 6 6$$R!5555IIkDN2333uuzz"~~##%%%r   N)r6   r7   r8   r~   r   r   rv   rt   r|   r{   r2   r   rH   rJ   r   r   r   r   r   E  sg        DEIEI
CG9? 9? 9?v2 2 2& & &@ HHHr   r   c                       e Zd Zd ZdS )TokenStreamExceptionc                 *    t          j        | g|R   d S r"   r/   r2   r3   s     r   r2   zTokenStreamException.__init__  !    ,t,,,,,,r   Nr5   r   r   r   r   r     #        - - - - -r   r   c                       e Zd Zd ZdS )TokenStreamIOExceptionc                     |rTt          |d         t                    r9|d         }t                              | t	          |                     || _        d S t          j        | g|R   | | _        d S Nr   )r(   r1   r   r2   rE   ior4   r   r   s      r   r2   zTokenStreamIOException.__init__  ss     	JtAw	22 	aB ))$B888DGGG )$66666DGGGr   Nr5   r   r   r   r   r     #            r   r   c                       e Zd Zd Zd ZeZdS )TokenStreamRecognitionExceptionc                     |rTt          |d         t                    r9|d         }t                              | t	          |                     || _        d S t          d          )Nr   zFTokenStreamRecognitionException requires RecognitionException argument)r(   r:   r   r2   rE   recogrR   )r4   r   r   s      r   r2   z(TokenStreamRecognitionException.__init__  sa     	fJtAw(<== 	fGE ))$E

;;;DJJJdeeer   c                 *    t          | j                  S r"   )rE   r   r4   s    r   rH   z'TokenStreamRecognitionException.__str__  s    4:r   NrI   r   r   r   r   r     s6        f f f   HHHr   r   c                       e Zd Zd ZdS )TokenStreamRetryExceptionc                 *    t          j        | g|R   d S r"   )r   r2   r3   s     r   r2   z"TokenStreamRetryException.__init__  rm   r   Nr5   r   r   r   r   r     rn   r   r   c                       e Zd Zd ZdS )CharStreamExceptionc                 *    t          j        | g|R   d S r"   r   r3   s     r   r2   zCharStreamException.__init__  r   r   Nr5   r   r   r   r   r     r   r   r   c                       e Zd Zd ZdS )CharStreamIOExceptionc                     |rTt          |d         t                    r9|d         }t                              | t	          |                     || _        d S t          j        | g|R   | | _        d S r   )r(   r1   r   r2   rE   r   r   s      r   r2   zCharStreamIOException.__init__  ss     	JtAw	22 	aB((s2ww777DGGG(55555DGGGr   Nr5   r   r   r   r   r     r   r   r   c                       e Zd ZdS )TryAgainN)r6   r7   r8   r   r   r   r   r     s        Dr   r   c                   |    e Zd ZdZdZdZdZdZdZd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd ZeZeZdS )rQ   r	   r   r   r
   r   c                     	 |d         | _         n#  t          | _         Y nxY w	 |d         | _        d S #  d| _        Y d S xY w)NtyperZ   	<no text>)r   r   rZ   r4   argvs     r   r2   zToken.__init__  sR    	%VDII	%$DIII	$VDIII	$#DIIIIs     3 	?c                 "    | j         t          k    S r"   )r   EOF_TYPEr   s    r   isEOFzToken.isEOF  s    	X%&r   c                     dS r   r   r   s    r   rV   zToken.getColumn      qr   c                     dS r   r   r   s    r   rU   zToken.getLine  r   r   c                     d S r"   r   r   s    r   r`   zToken.getFilename      tr   c                     | S r"   r   )r4   names     r   setFilenamezToken.setFilename      r   c                     dS )Nr   r   r   s    r   rW   zToken.getText      {r   c                 D    t          |          rnt          d          | S )Nz&Token.setText requires string argument)r+   rR   r4   rZ   s     r   setTextzToken.setText!  s*    $ 	FDEEEr   c                     | S r"   r   )r4   r?   s     r   	setColumnzToken.setColumn(  r   r   c                     | S r"   r   r4   r>   s     r   setLinezToken.setLine+  r   r   c                     | j         S r"   )r   r   s    r   getTypezToken.getType.  
    yr   c                 ^    t          |t                    r|| _        nt          d          | S )Nz'Token.setType requires integer argument)r(   r   r   rR   )r4   r   s     r   setTypezToken.setType1  s2    d3 	GDIIEFFFr   c                     | j         }|dk    rd}n|dk    rd}n|dk    rd}n|dk    rd}n|}d	|                                 d
|dS )Nr
   NULL_TREE_LOOKAHEADr   r   r   r   r	   SKIPz["z",<z>])r   rW   )r4   type_tvals      r   toStringzToken.toString8  sj    	A::(DDaZZDDaZZ!DDb[[DDD $ttt44r   N)r6   r7   r8   r   r   r   EOFr   MIN_USER_TYPEr2   r   rV   rU   r`   r   rW   r   r   r   r   r   r   rH   rJ   r   r   r   rQ   rQ     s        DLHCM$ $ $' ' '                    5 5 5 GHHHr   rQ   r   )r   rZ   __main__z
testing ..c                   F    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
e
Ze
Zd	S )
CommonTokenc                     t          j        | fi | d| _        d| _        	 |d         | _        n#  Y nxY w	 |d         | _        d S #  Y d S xY w)Nr   r>   rY   )rQ   r2   r>   rY   r   s     r   r2   zCommonToken.__init__X  sl    t##d###		VDII	D	E{DHHH	DDs   0 4A Ac                     | j         S r"   r>   r   s    r   rU   zCommonToken.getLinee  r   r   c                     | j         S r"   rZ   r   s    r   rW   zCommonToken.getTexth  r   r   c                     | j         S r"   rY   r   s    r   rV   zCommonToken.getColumnk  s	    xr   c                     || _         | S r"   r   r   s     r   r   zCommonToken.setLinen      	r   c                     || _         | S r"   r   r   s     r   r   zCommonToken.setTextr  r   r   c                     || _         | S r"   r   )r4   rY   s     r   r   zCommonToken.setColumnv  s    r   c                     | 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
}||z  S )Nr
   r   r   r   r   r   r	   r   )rZ   r   r>   colmz2["%(text)s",<%(type)s>,line=%(line)s,col=%(colm)s])r   rZ   r>   rY   )r4   r   r   dr   s        r   r   zCommonToken.toStringz  s}    	A::(DDaZZDDaZZ!DDb[[DDDIIH	  CQwr   N)r6   r7   r8   r2   rU   rW   rV   r   r   r   r   rH   rJ   r   r   r   r   r   V  s                        . GHHHr   r      z	some textrq   )rY   r>   rZ   r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )CommonHiddenStreamTokenc                 F    t          j        | g|R   d | _        d | _        d S r"   )r   r2   hiddenBeforehiddenAfterr3   s     r   r2   z CommonHiddenStreamToken.__init__  s1    T(4((((  r   c                     | j         S r"   r   r   s    r   getHiddenAfterz&CommonHiddenStreamToken.getHiddenAfter      r   c                     | j         S r"   r   r   s    r   getHiddenBeforez'CommonHiddenStreamToken.getHiddenBefore        r   c                     || _         d S r"   r  r4   ts     r   setHiddenAfterz&CommonHiddenStreamToken.setHiddenAfter  s    r   c                     || _         d S r"   r  r
  s     r   setHiddenBeforez'CommonHiddenStreamToken.setHiddenBefore  s    r   N)r6   r7   r8   r2   r  r  r  r  r   r   r   r   r     s_        ! ! !
     ! ! !      r   r   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	Queuec                     g | _         d S r"   bufferr   s    r   r2   zQueue.__init__      r   c                 :    | j                             |           d S r"   )r  rD   r4   items     r   rD   zQueue.append  s    4     r   c                     | j         |         S r"   r  )r4   indexs     r   	elementAtzQueue.elementAt  s    {5!!r   c                     g | _         d S r"   r  r   s    r   resetzQueue.reset  r  r   c                 :    | j                             d           d S r   )r  popr   s    r   removeFirstzQueue.removeFirst  s    r   c                 *    t          | j                  S r"   )r@   r  r   s    r   lengthzQueue.length      4;r   c                 *    t          | j                  S r"   )rE   r  r   s    r   rH   zQueue.__str__  r"  r   N)
r6   r7   r8   r2   rD   r  r  r  r!  rH   r   r   r   r  r    s}          ! ! !" " "                  r   r  c                   b    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd ZdS )InputBufferc                 V    d| _         d| _        d| _        t                      | _        d S r   )nMarkersmarkerOffsetnumToConsumer  queuer   s    r   r2   zInputBuffer.__init__  s(    WW


r   c           	      H    d| j         d| j        d| j        d| j        d	S N(,))r'  r(  r)  r*  r   s    r   rH   zInputBuffer.__str__  s8     ===:::	 	r   c                      t          |           S r"   rE   r   s    r   rJ   zInputBuffer.__repr__      4yyr   c                 &    | xj         dz  c_         d S Nr   r'  r   s    r   commitzInputBuffer.commit  s    r   c                 &    | xj         dz  c_         d S r4  r)  r   s    r   consumezInputBuffer.consume      Qr   c                     | j         }| j                                        }d}||k     r#|| j                            |          z  }||k     #|S Nr   )r(  r*  r!  r  )r4   r   nss       r   
getLACharszInputBuffer.getLAChars  sU    Jcc%%a(((A ccr   c                 n    d}d}| j         }||k     r#|| j                            |          z  }||k     #|S )Nr   r   )r(  r*  r  )r4   r>  r   r=  s       r   getMarkedCharszInputBuffer.getMarkedChars  sG    cc%%a(((A ccr   c                     | j         dk    S r   r5  r   s    r   isMarkedzInputBuffer.isMarked  s    }!!r   c                     t                      r"   NotImplementedErrorr4   ks     r   fillzInputBuffer.fill  s    !###r   c                 v    |                      |           | j                            | j        |z   dz
            S r4  rI  r*  r  r(  rG  s     r   LAzInputBuffer.LA  4    		!z##D$5$9A$=>>>r   c                 X    |                                   | xj        dz  c_        | j        S r4  syncConsumer'  r(  r   s    r   markzInputBuffer.mark  -      r   c                 \    |                                   || _        | xj        dz  c_        d S r4  rP  r(  r'  r4   rQ  s     r   rewindzInputBuffer.rewind  0     r   c                 b    d| _         d| _        d| _        | j                                         d S r   r'  r(  r)  r*  r  r   s    r   r  zInputBuffer.reset  3    
r   c                     | j         dk    rR| j        dk    r| xj        dz  c_        n| j                                         | xj         dz  c_         | j         dk    Pd S d S Nr   r   r)  r'  r(  r*  r  r   s    r   rP  zInputBuffer.syncConsume  z    !##}q  !!Q&!!! 
&&(((" !######r   N)r6   r7   r8   r2   rH   rJ   r6  r9  r?  rA  rC  rI  rL  rQ  rV  r  rP  r   r   r   r%  r%    s                      " " "$ $ $? ? ?! ! !
  
  # # # # #r   r%  c                   .     e Zd Z fdZ fdZd Z xZS )
CharBufferc                 d    t          t          |                                            || _        d S r"   )superr`  r2   input)r4   reader	__class__s     r   r2   zCharBuffer.__init__.  s,    j''))) 


r   c                     t          t          |                                           }d|dt          t                    S )NzCharBuffer{r.  )rb  r`  rH   rE   rc  )r4   basere  s     r   rH   zCharBuffer.__str__5  s7    Z%%--//%)TT#e***55r   c                    	 |                                   | j                                        || j        z   k     r| j                            d          }t          |          dk    st          |          dk    sJ t          |          sJ | j                            |           | j                                        || j        z   k     d S d S # t          $ r}t          |          d }~ww xY wNr   r   )rP  r*  r!  r(  rc  readr@   r+   rD   r1   r   )r4   amountr   es       r   rI  zCharBuffer.fill9  s    	+*##%%$2C)CDD JOOA&& 1vv{{c!ffkkkk &a((((( 
!!!$$$/ *##%%$2C)CDDDDDD0  	+ 	+ 	+'***	+s   CC 
C/C**C/)r6   r7   r8   r2   rH   rI  __classcell__re  s   @r   r`  r`  -  s`            6 6 6 6 6+ + + + + + +r   r`  c                        e Zd Zd Zd Zd ZdS )LexerSharedInputStatec                     t          |t                    sJ || _        d| _        d| _        d| _        d| _        d| _        d | _        d S ri  )	r(   r%  rc  r?   r>   tokenStartColumntokenStartLineguessingfilename)r4   ibufs     r   r2   zLexerSharedInputState.__init___  sO    ${+++++
	 !r   c                     d| _         d| _        d| _        d| _        d| _        d | _        | j                                         d S ri  )r?   r>   rr  rs  rt  ru  rc  r  r   s    r   r  zLexerSharedInputState.reseti  sH    	 !
r   c                 6    | j                             |          S r"   )rc  rL  rG  s     r   rL  zLexerSharedInputState.LAr  s    z}}Qr   N)r6   r7   r8   r2   r  rL  r   r   r   rp  rp  ^  sA                     r   rp  c                       e Zd Zd Zd ZdS )TokenStreamc                     d S r"   r   r   s    r   	nextTokenzTokenStream.nextTokenz      r   c                      t          |           S r"   )TokenStreamIteratorr   s    r   __iter__zTokenStream.__iter__}      "4(((r   N)r6   r7   r8   r|  r  r   r   r   rz  rz  y  s2          ) ) ) ) )r   rz  c                       e Zd Zd Zd ZdS )r  c                 \    t          |t                    r	|| _        d S t          d          )Nz/TokenStreamIterator requires TokenStream object)r(   rz  instrR   r4   r  s     r   r2   zTokenStreamIterator.__init__  /    d;'' 	DIFIJJJr   c                     | j         sJ | j                                         }|r|                                rt                      |S r"   r  r|  r   StopIterationr  s     r   nextzTokenStreamIterator.next  I    yy""$$ 	"tzz|| 	"//!r   Nr6   r7   r8   r2   r  r   r   r   r  r    s5        K K K    r   r  c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TokenStreamSelectorc                 0    d | _         i | _        g | _        d S r"   )_input_stmap_stackr   s    r   r2   zTokenStreamSelector.__init__  s    r   c                     || j         |<   d S r"   )r  )r4   streamkeys      r   addInputStreamz"TokenStreamSelector.addInputStream  s    !Cr   c                     | j         S r"   )r  r   s    r   getCurrentStreamz$TokenStreamSelector.getCurrentStream  
    {r   c                 X    	 | j         |         }n#  t          d|z   dz             xY w|S )NzTokenStream z
 not found)r  
ValueError)r4   snamer  s      r   	getStreamzTokenStreamSelector.getStream  s=    	E['FF	E^e3lBCCCs    'c                 Z    	 	 | j                                         S # t          $ r Y nw xY w+r"   )r  r|  r   r   s    r   r|  zTokenStreamSelector.nextToken  sE    	{,,...,   	s    
))c                 b    | j                                         }|                     |           |S r"   )r  r  selectr4   r  s     r   r  zTokenStreamSelector.pop  s*    ""Fr   c                 n    | j                             | j                   |                     |           d S r"   )r  rD   r  r  r4   args     r   pushzTokenStreamSelector.push  s2    4;'''Cr   c                     t                      r"   )r   r   s    r   retryzTokenStreamSelector.retry  s    ')))r   c                     t          |t                    r	|| _        d S t          |          r|                     |          | _        d S t          d          )NzBTokenStreamSelector.select requires TokenStream or string argument)r(   rz  r  r+   r  rR   r  s     r   r  zTokenStreamSelector.select  s_    c+&& 	DKF# 	..--DKF 9 : : 	:r   N)r6   r7   r8   r2   r  r  r  r|  r  r  r  r  r   r   r   r  r    s          
" " "        
  * * *: : : : :r   r  c                        e Zd Zd Zd Zd ZdS )TokenStreamBasicFilterc                 :    || _         t                      | _        d S r"   )rc  rz   discardMaskr4   rc  s     r   r2   zTokenStreamBasicFilter.__init__  s    
!88r   c                     t          |t                    r| j                            |           d S t          |t                    r	|| _        d S t          d          )NzATokenStreamBasicFilter.discard requiresinteger or BitSet argument)r(   r   r  addrz   discardMarkrR   r  s     r   discardzTokenStreamBasicFilter.discard  sf    c# 	  %%%Fc&!! 	"DF 5 6 6 	6r   c                 "   | j                                         }|rs| j                            |                                          rG| j                                         }|r,| j                            |                                          G|S r"   )rc  r|  r  memberr   )r4   toks     r   r|  z TokenStreamBasicFilter.nextToken  s    j""$$ 	)d&--ckkmm<< 	)*&&((C  	)d&--ckkmm<< 	)
r   N)r6   r7   r8   r2   r  r|  r   r   r   r  r    sA        $ $ $
6 6 6    r   r  c                   P    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )TokenStreamHiddenTokenFilterc                     t                               | |           t                      | _        d | _        d | _        d | _        d S r"   )r  r2   rz   hideMasknextMonitoredTokenlastHiddenTokenfirstHiddenr  s     r   r2   z%TokenStreamHiddenTokenFilter.__init__  sA    ''U333"&#r   c                 B    | j                                         | _        d S r"   )rc  r|  r  r   s    r   r9  z$TokenStreamHiddenTokenFilter.consume  s    "&*"6"6"8"8r   c                    |                                   d }| j                            |                     d                                                    s@| j                            |                     d                                                    rg| j                            |                     d                                                    r|s|                     d          }ne|                    |                     d                     |                     d                              |           |                     d          }|| _        | j	        s|| _	        |                                   | j                            |                     d                                                    %| j                            |                     d                                                    ed S d S r4  )
r9  r  r  rL  r   r  r  r  r  r  )r4   ps     r   consumeFirstz)TokenStreamHiddenTokenFilter.consumeFirst  s   m""4771::#5#5#7#788 	%%dggajj&8&8&:&:;;	}##DGGAJJ$6$6$8$899 	) #

AA$$TWWQZZ000GGAJJ..q111

A'($' )'(D$LLNNN m""4771::#5#5#7#788 	%%dggajj&8&8&:&:;;	 	 	 	 	r   c                     | j         S r"   )r  r   s    r   getDiscardMaskz+TokenStreamHiddenTokenFilter.getDiscardMask  r  r   c                 *    |                                 S r"   )r  r
  s     r   r  z+TokenStreamHiddenTokenFilter.getHiddenAfter  s    !!!r   c                 *    |                                 S r"   )r  r
  s     r   r  z,TokenStreamHiddenTokenFilter.getHiddenBefore  s      """r   c                     | j         S r"   )r  r   s    r   getHideMaskz(TokenStreamHiddenTokenFilter.getHideMask  s
    }r   c                     | j         S r"   )r  r   s    r   getInitialHiddenTokenz2TokenStreamHiddenTokenFilter.getInitialHiddenToken  r  r   c                     t          |t                    r| j                            |           d S t          |j                  r	|| _        d S d S r"   )r(   r   r  r  BitMask)r4   ms     r   hidez!TokenStreamHiddenTokenFilter.hide  sW    a 	Ma   Fai   	DMF	 	r   c                     | j         S r"   )r  r4   r   s     r   rL  zTokenStreamHiddenTokenFilter.LA  s    &&r   c                 x   |                      d          s|                                  |                      d          }|                    | j                   d | _        |                                  |}| j                            |                      d                                                    s@| j                            |                      d                                                    rE| j                            |                      d                                                    rr|	                    |                      d                     ||k    r(|                      d                              |           |                      d          x}| _        |                                  | j                            |                      d                                                    | j                            |                      d                                                    E|S r4  )
rL  r  r  r  r9  r  r  r   r  r  )r4   	monitoredr  s      r   r|  z&TokenStreamHiddenTokenFilter.nextToken  s   wwqzz 	 GGAJJ	!!$"6777#m""4771::#5#5#7#788 	%%dggajj&8&8&:&:;;	}##DGGAJJ$6$6$8$899 6  ,,,	>>GGAJJ..q111+/771::5D(LLNNN m""4771::#5#5#7#788 	%%dggajj&8&8&:&:;;	 r   N)r6   r7   r8   r2   r9  r  r  r  r  r  r  r  rL  r|  r   r   r   r  r    s             9 9 9  $     " " "# # #         ' ' '    r   r  c                   :    e Zd ZddZd Zd Zd Zd	dZeZd Z	dS )
StringBufferNc                 D    |rt          |          | _        d S g | _        d S r"   )listrZ   )r4   strings     r   r2   zStringBuffer.__init__:  s&     	VDIIIDIIIr   c                     |s	g | _         d S |dk    sJ ||                                 k    rd S | j         d|         | _         d S r   )rZ   r!  )r4   szs     r   	setLengthzStringBuffer.setLength@  sP     	DIF!ttttFIadO			r   c                 *    t          | j                  S r"   r@   rZ   r   s    r   r!  zStringBuffer.lengthJ      49~~r   c                 :    | j                             |           d S r"   )rZ   rD   r4   r   s     r   rD   zStringBuffer.appendM  s    	r   c                     |sd}|dk    sJ |t          | j                  k    rdS |s| j        |d          }n1||z   t          | j                  k    sJ ||z   }| j        ||         }d}|D ]}||z  }|S )Nr   r   r  )r4   ar!  Lbr>  r*   s          r   	getStringzStringBuffer.getStringT  s     	A!tttts49~~2 		!""AAfHTY////F
A	!A#AAQ!VQQr   c                 *    t          | j                  S r"   rE   rZ   r   s    r   rH   zStringBuffer.__str__h  r  r   r"   )NN)
r6   r7   r8   r2   r  r!  rD   r  r   rH   r   r   r   r  r  9  s           $ $ $       $ H    r   r  c                       e Zd Zd Zd ZdS )Readerc                 "    || _         g | _        d S r"   )cinrG   r  s     r   r2   zReader.__init__x  s    r   c                 |   |dk    sJ t          | j                  r| j                                        S | j                            d          }|rt          |          dk    r|S t          |          }|                                 |D ]}| j                            |           |                     d          S r4  )r@   rG   r  r  rj  r  reverserD   )r4   numr   r  r*   s        r   rj  zReader.read|  s    Avvvvtx== 	"8<<>>! HMM! 	CFFAIIHGG			 	 	AHOOA yy||r   N)r6   r7   r8   r2   rj  r   r   r   r  r  w  s2              r   r  c                   h    e Zd ZdZdZ fdZd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d:d#Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6d5 Z7d6 Z8d;d8Z9d9 Z: xZ;S )<CharScannerr   r   c                 j   t          t          |                                            d| _        d | _        d| _        d| _        d | _        d| _        d | _	        d| _
        d| _        t                      | _        t          |           | _        |                     t"                      | j        |  d S )NT   Fr   )rb  r  r2   saveConsumedInput
tokenClasscaseSensitivecaseSensitiveLiteralsliteralstabsize_returnTokencommitToPath
traceDepthr  rZ   hash
hashStringsetTokenObjectClassr   setInput)r4   r   kwargsre  s      r   r2   zCharScanner.__init__  s    k4  ))+++!%!%)" ! NN	t**  ---tr   c                      t          |           S r"   )CharScannerIteratorr   s    r   r  zCharScanner.__iter__  r  r   c                    |s dd l }|                     |j                   d S |d         }t          |          r<t	          |d          }|                     |           |                     |           d S t          |t                    r$|                     t          |                     d S t          |t                    r	|| _
        d S t          |t                    r$|                     t          |                     d S 	 |j        r4t          |          }t          |          }t          |          }|| _
        d S #  Y nxY wt          |          )Nr   rb)sysr  stdinr+   openr   r(   filer`  rp  
inputStater%  rj  r  rR   )r4   r   r  arg1frdcbsss           r   r  zCharScanner.setInput  se     	JJJMM#)$$$F Aw $ 	T$AMM!T"""F d4   	MM*T**+++F
 d011 	"DOF d;'' 	MM/55666F
	y %D\\^^*2.."$F	D oos   ;E Ec                     || _         d S r"   r  )r4   sizes     r   
setTabSizezCharScanner.setTabSize  s    r   c                     | j         S r"   r  r   s    r   
getTabSizezCharScanner.getTabSize  s
    |r   c                     || _         d S r"   r  r
  s     r   setCaseSensitivezCharScanner.setCaseSensitive  s    r   c                     || _         d S r"   r  )r4   r6  s     r   setCommitToPathzCharScanner.setCommitToPath  s    "r   c                     || j         _        d S r"   r  ru  r4   r  s     r   r   zCharScanner.setFilename      #$   r   c                     || j         _        d S r"   r  r>   r   s     r   r   zCharScanner.setLine  s    #r   c                 b    |                                   | j                            |           d S r"   )	resetTextrZ   rD   r4   r>  s     r   r   zCharScanner.setText  s.    	r   c                     | j         S r"   r  r   s    r   getCaseSensitivezCharScanner.getCaseSensitive  s    !!r   c                     | j         S r"   )r  r   s    r   getCaseSensitiveLiteralsz$CharScanner.getCaseSensitiveLiterals  s    ))r   c                     | j         j        S r"   r  r?   r   s    r   rV   zCharScanner.getColumn  s    %%r   c                     || j         _        d S r"   r%  r  s     r   r   zCharScanner.setColumn  s    !"r   c                     | j         S r"   r  r   s    r   getCommitToPathzCharScanner.getCommitToPath  r  r   c                     | j         j        S r"   r  r   s    r   r`   zCharScanner.getFilename      ''r   c                     | j         j        S r"   r  rc  r   s    r   getInputBufferzCharScanner.getInputBuffer  s    $$r   c                     | j         S r"   r  r   s    r   getInputStatezCharScanner.getInputState  
    r   c                 B    t          |t                    sJ || _        d S r"   )r(   rp  r  r4   states     r   setInputStatezCharScanner.setInputState  s$    % 566666r   c                     | j         j        S r"   r  r   s    r   rU   zCharScanner.getLine  s    ##r   c                 *    t          | j                  S r"   r  r   s    r   rW   zCharScanner.getText!  r  r   c                     | j         S r"   )r  r   s    r   getTokenObjectzCharScanner.getTokenObject$  r  r   c                     | j         j                            |          }| j        s|j                            |          }|S r"   )r  rc  rL  r  re  lower)r4   r   r   s      r   rL  zCharScanner.LA'  s?    O!$$Q''! 	%!!!$$Ar   c                 8   	 | j         sJ |                                  }|                    |           |                    | j        j                   |                    | j        j                   |S #  |                     d           Y nxY wt          j	        S )Nzunable to create new token)
r  r   r   r  rr  r   rs  panicrQ   badToken)r4   r   r  s      r   	makeTokenzCharScanner.makeToken.  s    		5?"""//##CKKMM$/:;;;KK6777J	5JJ344444~s   A1A4 4Bc                 >    | j         j                                        S r"   r  rc  rQ  r   s    r   rQ  zCharScanner.mark;      $))+++r   c                     |                     |                     d                    r|                                  d S t          |                     d          |d|           Nr   F)r  rL  r9  rp   r4   r  s     r   _match_bitsetzCharScanner._match_bitset>  sP    88DGGAJJ 	FLLNNNNN)$''!**aEEEr   c                     |D ]T}|                      d          |k    r|                                  0t          |                      d          |d|           d S rD  rL  r9  rp   )r4   r>  r   s      r   _match_stringzCharScanner._match_stringD  s_     	J 	JAwwqzzQ-dggajj!UDIII		J 	Jr   c                 t    t          |          r|                     |          S |                     |          S r"   )r+   rI  rF  r  s     r   matchzCharScanner.matchK  s:    $ 	,%%d+++%%d+++r   c                     |                      d          |k    r|                                  d S t          |                      d          |d|           Nr   TrH  r  s     r   matchNotzCharScanner.matchNotQ  sD    771::??LLNNNNN)$''!**atDDDr   c                     |                      d          |k     s|                      d          |k    r&t          |                      d          ||d|           |                                  d S rD  )rL  rp   r9  )r4   c1c2s      r   
matchRangezCharScanner.matchRangeW  sX    771::??dggajj2oo)$''!**b"eTJJJLLNNNNNr   c                 H    | j         xj        dz  c_        d| j         _        d S r4  )r  r>   r?   r   s    r   newlinezCharScanner.newline]  s(    !!"r   c                     |                                  }|dz
  | j        z  dz   | j        z  dz   }|                     |           d S r4  )rV   r  r   )r4   r   ncs      r   tabzCharScanner.taba  sJ    NN1dl"a'4<7!;rr   c                 R    t          d|z              t          j        d           d S )NzCharScanner: panic: r   )r   r  exitr  s     r   r=  zCharScanner.panicf  s'    $q()))r   c                     |                                  s!t          dt          |          z              d S t          |                                  dz   t          |          z              d S )Nr   z	: error: r`   r   rE   r  s     r   reportErrorzCharScanner.reportErrorj  se    !! 	=)c!ff$%%%%%$""$${2SVV;<<<<<r   c                     |                                  s!t          dt          |          z              d S t          |                                  dz   t          |          z              d S )Nz	warning: z: warning: r[  r  s     r   reportWarningzCharScanner.reportWarningp  se    !! 	?+A&'''''$""$$}4s1vv=>>>>>r   c                     | j                             d           | j        j        | j        _        | j        j        | j        _        d S r   )rZ   r  r  r?   rr  r>   rs  r   s    r   r  zCharScanner.resetTextv  s<    	A+/?+A()-)=&&&r   c                 D    | j         j                            |           d S r"   r  rc  rV  r4   poss     r   rV  zCharScanner.rewind{  !    $$S)))))r   c                     || _         d S r"   )r  r4   cls     r   r  zCharScanner.setTokenObjectClass~  s    r   c                 H   |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(   rQ   r   r   r   r   r   rW   r+   testLiteralsTabler   )r4   rN   _type_texts       r   testForLiteralzCharScanner.testForLiteral  s     	F%&&&&& T,x0CDDDF 	Fe$$$$$&&uU33er   c                    t          |d                   r|d         }|d         }n!| j                                        }|d         }t          |t                    st          |t                    sJ t          | j        t                    sJ 	 | j        s|j        	                    |          }| j        |         }n#  Y nxY w|S r\  )
r+   rZ   r  r(   r   r  dictr  re  r;  )r4   r   r>  r   s       r   ri  zCharScanner.testLiteralsTable  s    $q'"" 	QAQAA	##%%AQA !C   	%a$$$$$ $------	- )K%%a((a AA	Ds   .C   Cc                 4    |j                                         S r"   )re  r;  r  s     r   toLowerzCharScanner.toLower  s    {  """r   c                 4    t          d| j        z             d S NrC   r   r  r   s    r   traceIndentzCharScanner.traceIndent      cDO#$$$$$r   c                     | xj         dz  c_         |                                  t          d|d|                     d                     d S )Nr   z> lexer  c== )r  rt  r   rL  r4   rnames     r   traceInzCharScanner.traceIn  sO    1UUU4771:::677777r   c                     |                                   t          d|d|                     d                     | xj        dz  c_        d S )Nz< lexer rw  r   )rt  r   rL  r  rx  s     r   traceOutzCharScanner.traceOut  sM    UUU4771:::67771r   c                     d S r"   r   r   s    r   uponEOFzCharScanner.uponEOF  r}  r   c                 L    | j         r| j                            |           d S d S r"   )r  rZ   rD   r  s     r   rD   zCharScanner.append  s3    ! 	 IQ	  	 r   c                 B    | j         j                                         d S r"   )r  rc  r6  r   s    r   r6  zCharScanner.commit  s    $$&&&&&r   c                    | j         j        s|                     d          }| j        r|                     |           n4| j         j                            d          }|                     |           |r|dv r|                                  n| j         xj        dz  c_        | j         j                                         d S )Nr   r   )	r  rt  rL  r  rD   rc  rW  r?   r9  r  s     r   r9  zCharScanner.consume  s    ' 	,

A! A _*--a00A ,Q$YY



&&!+&&%%'''''r   c                    |                      d          t          k    rf|                      d          |k    rQ|                                  |                      d          t          k    r|                      d          |k    Kd S d S d S d S r4  )rL  EOF_CHARr9  r  s     r   consumeUntil_charzCharScanner.consumeUntil_char  ss    ggajjH$$qLLNNN ggajjH$$q$$$$r   c                 f   |                      d          t          k    r| j                            |                      d                    se|                                  |                      d          t          k    r1| j                            |                      d                    _d S d S d S d S r4  )rL  r  r}   r  r9  )r4   bitsets     r   consumeUntil_bitsetzCharScanner.consumeUntil_bitset  s    ggajjH$$TX__TWWQZZ-H-H$LLNNN ggajjH$$TX__TWWQZZ-H-H$$$$$$$$$r   c                     |s5|                                   |                     t                    | _        d S |                     |           d S r"   )r~  r?  r   r  raise_NoViableAlt)r4   la1s     r   defaultzCharScanner.default  sK     	(LLNNN $x 8 8D""3'''''r   c                    |s5|                                   |                     t                    | _        d S |s"|                                  t                      |                                  	 |d         } ||dd            n@# t          $ r3}|                     |           |                                  Y d }~nd }~ww xY wt                      r\  )	r~  r?  r   r  r9  r   r6  r:   r\  )r4   r  r   funcrl  s        r   filterdefaultzCharScanner.filterdefault  s     	LLNNN $x 8 8DF 	LLNNN** KKMMM !Wd122h'        ###  **s   1B 
C)B??CNc                     |s|                      d          }|                                 }|                                 }|                                 }t	          ||||          r4  )rL  r`   rU   rV   r\   )r4   r  fnamer>   rY   s        r   r  zCharScanner.raise_NoViableAlt  sW    $$''!**C  ""  )#eD===r   c                     |rQ|sO|t           k    sD| j                            |          }|                     |          }|                    |           || _        |S r"   )r   rZ   r  r?  r   r  )r4   _create_token_ttype_offsetr  s         r   set_return_tokenzCharScanner.set_return_token  s^     	#6 	#6T>>Y((11F^^F++FNN6""""r   )r   r"   )<r6   r7   r8   NO_CHARr  r2   r  r  r  r  r  r  r   r   r   r!  r#  rV   r   r(  r`   r-  r0  r5  rU   rW   r9  rL  r?  rQ  rF  rI  rK  rN  rR  rT  rW  r=  r\  r^  r  rV  r  rl  ri  rp  rt  rz  r|  r~  rD   r6  r9  r  r  r  r  r  r  rm  rn  s   @r   r  r    sq       GH     ) ) )= = =~      # # #% % %$ $ $  " " "* * *& & &# # #! ! !( ( (% % %       $ $ $  ! ! !    , , ,F F FJ J J, , ,E E E  # # #  
   = = =? ? ?> > >
* * *    (  .# # #% % %8 8 8
  
       ' ' '( ( ($  
  ( ( (  *> > > >      r   r  c                       e Zd Zd Zd ZdS )r  c                 \    t          |t                    r	|| _        d S t          d          )Nz/CharScannerIterator requires CharScanner object)r(   r  r  rR   r  s     r   r2   zCharScannerIterator.__init__  r  r   c                     | j         sJ | j                                         }|r|                                rt                      |S r"   r  r  s     r   r  zCharScannerIterator.next  r  r   Nr  r   r   r   r  r    s5        K K K    r   r  c                   d    e Zd ZdZdZdZedz
  ZddZd Zd Z	d	 Z
d
 Zd ZddZeZddZd ZdS )rz   @   r   rr   r   Nc                    |s+t                               | t          d          g           d S t          |t                    r+t                               | t          |          g           d S t          |t                    rt                               | |g           d S t          |t
                    st          d          |D ]-}t          |t                    st          | dd|z  z             .|| _        d S )Nr   z/BitSet requires integer, long, or list argumentzList argument item is znot a long: %s)	rz   r2   r   r(   r   r  rR   r   data)r4   r  r*   s      r   r2   zBitSet.__init__/  s    	OOD$q''+++Fd3 	OOD$t**...Fd4   	OOD$(((F$t$$ 	- , - - - 	8 	8Aa++ 8%= 0A 6&7 8 8 88 			r   c                     t          | j                  t          j        z  }d}t	          d|          D ]5}|                     |          r|dz  }n|dz  }|dz   dz  s|d|dz   z  z  }6|S )Nr   r   1or   
   z|%s|)r@   r  rz   BITSr   at)r4   bitsr>  r   s       r   rH   zBitSet.__str__B  s    49~~+$ 	$ 	$Awwqzz SSqSBJ $Vqs^#r   c                      t          |           S r"   r1  r   s    r   rJ   zBitSet.__repr__N  r2  r   c                 6   |sdS t          |t                    r|                     |          S t          |          st	          | d|z            t          |          dk    rt	          | d|z            t          |          }|                     |          S )NFzchar or unichar expected: %sr   zchar expected: %s)r(   r   r  r+   rR   r@   rg   )r4   r  r  s      r   r  zBitSet.memberQ  s     	5d3 	!774== d## 	JD!?4!HIII
 t99>>D!4!=>>> $ii wws||r   c                      |t           j        z	  S r"   )rz   LOG_BITS)r4   bits     r   
wordNumberzBitSet.wordNumberg  s    fo%%r   c                 *    |t           j        z  }d|z  S r4  )rz   MOD_MASK)r4   r  rc  s      r   bitMaskzBitSet.bitMaskj  s    FO#Sr   Tc                    |                      |          }|                     |          }|t          | j                  k    rd|t          | j                  z
  dz   }t	          d|          D ]}| j                            d           t          | j                  |dz   k    sJ |r| j        |xx         |z  cc<   d S | j        |xx         | z  cc<   d S ri  )r  r  r@   r  r   rD   )r4   r  onr   maskr   r*   s          r   r}   z
BitSet.setn  s    OOC  ||C  c$)nnC	NN"Q&AAa[[ $ $	  ####ty>>QqS(((( 	$IaLLLT!LLLLLIaLLLdU#LLLLLr   c                 4    |                      ||            d S r"   )r}   )r4   r  offs      r   r  z
BitSet.off  s    Wr   c                 z    |                      |          }| j        |         }|                     |          }||z  S r"   )r  r  r  )r4   r  r   vr  s        r   r  z	BitSet.at  s8    OOC  IaLLL1ur   r"   )T)r6   r7   r8   r  NIBBLEr  r  r2   rH   rJ   r  r  r  r}   r  r  r  r   r   r   rz   rz   )  s        DFHQwH   &
 
 
    ,& & &  $ $ $ $ C       r   rz   c                 0    t          d| j        z            Nz1%s is only valid if parser is built for debugging)r  	func_namer  s    r   illegalarg_exr    s!    
:  r   c                 0    t          d| j        z            r  )RuntimeErrorr  r  s    r   
runtime_exr    s!    
:  r   c                   V    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd ZdS )TokenBufferc                 d    || _         d| _        d| _        d| _        t	                      | _        d S r   )rc  r'  r(  r)  r  r*  r  s     r   r2   zTokenBuffer.__init__  s/    
WW


r   c                 b    d| _         d| _        d| _        | j                                         d S r   rY  r   s    r   r  zTokenBuffer.reset  rZ  r   c                 &    | xj         dz  c_         d S r4  r8  r   s    r   r9  zTokenBuffer.consume  r:  r   c                 (   |                                   | j                                        || j        z   k     rX| j                            | j                                                   | j                                        || j        z   k     Vd S d S r"   )rP  r*  r!  r(  rD   rc  r|  )r4   rk  s     r   rI  zTokenBuffer.fill  s    j!!Vd.?%?@@Jdj2244555 j!!Vd.?%?@@@@@@r   c                     | j         S r"   )rc  r   s    r   getInputzTokenBuffer.getInput  
    zr   c                     |                      |           | j                            | j        |z   dz
            j        S r4  )rI  r*  r  r(  r   rG  s     r   rL  zTokenBuffer.LA  s7    		!z##D$5$9A$=>>CCr   c                 v    |                      |           | j                            | j        |z   dz
            S r4  rK  rG  s     r   LTzTokenBuffer.LT  rM  r   c                 X    |                                   | xj        dz  c_        | j        S r4  rO  r   s    r   rQ  zTokenBuffer.mark  rR  r   c                 \    |                                   || _        | xj        dz  c_        d S r4  rT  rU  s     r   rV  zTokenBuffer.rewind  rW  r   c                     | j         dk    rR| j        dk    r| xj        dz  c_        n| j                                         | xj         dz  c_         | j         dk    Pd S d S r\  r]  r   s    r   rP  zTokenBuffer.syncConsume  r^  r   c                 X    d| j         d| j        d| j        d| j        d| j        dS r,  )rc  r'  r(  r)  r*  r   s    r   rH   zTokenBuffer.__str__  sA     :::===::: 	r   c                      t          |           S r"   r1  r   s    r   rJ   zTokenBuffer.__repr__  r2  r   N)r6   r7   r8   r2   r  r9  rI  r  rL  r  rQ  rV  rP  rH   rJ   r   r   r   r  r    s              6 6 6
  D D D? ? ?! ! !
  
# # #      r   r  c                       e Zd Zd Zd ZdS )ParserSharedInputStatec                 <    d | _         |                                  d S r"   )rc  r  r   s    r   r2   zParserSharedInputState.__init__  s    


r   c                 f    d| _         d | _        | j        r| j                                         d S d S r   )rt  ru  rc  r  r   s    r   r  zParserSharedInputState.reset  s>    : 	J	 	r   N)r6   r7   r8   r2   r  r   r   r   r  r    s2              r   r  c                   @   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4S )5Parserc                     d | _         d | _        d | _        i | _        d| _        d| _        |st                      | _        d S |d         }t          |t                    sJ || _        d S )NFr   )	r   	returnAST
astFactorytokenTypeToASTClassMapignoreInvalidDebugCallsr  r  r  r(   )r4   r   r  arg0s       r   r2   zParser.__init__  st    &(#',$ 	466DOFAw$566666r   c                     | j         S r"   )r  r   s    r   getTokenTypeToASTClassMapz Parser.getTokenTypeToASTClassMap   s    **r   c                 @    | j         st          | j                   d S d S r"   )r  r  addMessageListenerr4   ls     r   r  zParser.addMessageListener  s.    + 	3$122222	3 	3r   c                 @    | j         st          | j                   d S d S r"   )r  r  addParserListenerr  s     r   r  zParser.addParserListener  s.    , 	2$011111	2 	2r   c                 @    | j         st          | j                   d S d S r"   )r  r  addParserMatchListenerr  s     r   r  zParser.addParserMatchListener  .    , 	7$566666	7 	7r   c                 @    | j         st          | j                   d S d S r"   )r  r  addParserTokenListenerr  s     r   r  zParser.addParserTokenListener  r  r   c                 @    | j         st          | j                   d S d S r"   )r  r  addSemanticPredicateListenerr  s     r   r  z#Parser.addSemanticPredicateListener  s.    , 	=$;<<<<<	= 	=r   c                 @    | j         st          | j                   d S d S r"   )r  r  addSyntacticPredicateListenerr  s     r   r  z$Parser.addSyntacticPredicateListener  s.    , 	>$<=====	> 	>r   c                 @    | j         st          | j                   d S d S r"   )r  r  addTraceListenerr  s     r   r  zParser.addTraceListener  s.    , 	1$/00000	1 	1r   c                     t                      r"   rE  r   s    r   r9  zParser.consume       !###r   c                    |                      d          t          k    rf|                      d          |k    rQ|                                  |                      d          t          k    r|                      d          |k    Kd S d S d S d S r4  )rL  r   r9  )r4   r   s     r   _consumeUntil_typezParser._consumeUntil_type#  s{    ggajjH$$y)@)@LLNNN ggajjH$$y)@)@)@)@$$$$)@)@r   c                 R   |                      d          t          k    r|                    |                      d                    s`|                                  |                      d          t          k    r,|                    |                      d                    Zd S d S d S d S r4  )rL  r   r  r9  r4   r}   s     r   _consumeUntil_bitsetzParser._consumeUntil_bitset'  s    ggajjH$$SZZ

-C-C$LLNNN ggajjH$$SZZ

-C-C$$$$$$$$$r   c                     t          |t                    r|                     |           d S |                     |           d S r"   )r(   r   r  r  r  s     r   consumeUntilzParser.consumeUntil+  sH    c# 	+##C(((((%%c*****r   c                     d S r"   r   r   s    r   defaultDebuggingSetupzParser.defaultDebuggingSetup1  r}  r   c                     | j         S r"   r  r   s    r   getASTzParser.getAST4  
    ~r   c                     | j         S r"   r  r   s    r   getASTFactoryzParser.getASTFactory7  r1  r   c                     | j         j        S r"   r  r   s    r   r`   zParser.getFilename:  r*  r   c                     | j         S r"   r/  r   s    r   r0  zParser.getInputState=  r1  r   c                     || _         d S r"   r/  r3  s     r   r5  zParser.setInputState@  s    r   c                     | j         |         S r"   r   r4   r  s     r   getTokenNamezParser.getTokenNameC      s##r   c                     | j         S r"   r  r   s    r   getTokenNameszParser.getTokenNamesF  r1  r   c                     | j         S r"   )falser   s    r   isDebugModezParser.isDebugModeI  r  r   c                     t                      r"   rE  r  s     r   rL  z	Parser.LAL  r  r   c                     t                      r"   rE  r  s     r   r  z	Parser.LTO  r  r   c                 >    | j         j                                        S r"   rA  r   s    r   rQ  zParser.markR  rB  r   c                     |                      d          |k    r=t          | j        |                     d          |d|                                           |                                  d S rD  rL  r   r   r  r`   r9  r
  s     r   
_match_intzParser._match_intU  s`    GGAJJ!OO*

Aud6F6F6H6HJ J J LLNNNNNr   c                     |                     |                     d                    s=t          | j        |                     d          |d|                                           |                                  d S rD  )r  rL  r   r   r  r`   r9  rE  s     r   
_match_setzParser._match_set\  sk    $$ 	*twwqzz1eT5E5E5G5GI I I LLNNNNNr   c                     t          |t                    r|                     |           d S t          |t                    r|                     |           d S t          d          )Nz0Parser.match requires integer ot BitSet argument)r(   r   r  rz   r  rR   r  s     r   rK  zParser.matchc  sc    c# 	OOC   Fc&!! 	OOC   FJKKKr   c                     |                      d          |k    r=t          | j        |                     d          |d|                                           |                                  d S rM  r  r
  s     r   rN  zParser.matchNotl  s`    771::??*

AtT5E5E5G5GI I I LLNNNNNr   c                 @    | j         st          | j                   d S d S r"   )r  r  removeMessageListenerr  s     r   r  zParser.removeMessageListeners  s.    , 	3t122222	3 	3r   c                 @    | j         st          | j                   d S d S r"   )r  r  removeParserListenerr  s     r   r  zParser.removeParserListenerw  s.    , 	2t011111	2 	2r   c                 @    | j         st          | j                   d S d S r"   )r  r  removeParserMatchListenerr  s     r   r  z Parser.removeParserMatchListener{  .    , 	7t566666	7 	7r   c                 @    | j         st          | j                   d S d S r"   )r  r  removeParserTokenListenerr  s     r   r   z Parser.removeParserTokenListener  r  r   c                 @    | j         st          | j                   d S d S r"   )r  r  removeSemanticPredicateListenerr  s     r   r"  z&Parser.removeSemanticPredicateListener  s.    , 	=t;<<<<<	= 	=r   c                 @    | j         st          | j                   d S d S r"   )r  r   removeSyntacticPredicateListenerr  s     r   r$  z'Parser.removeSyntacticPredicateListener  s.    , 	>t<=====	> 	>r   c                 @    | j         st          | j                   d S d S r"   )r  r  removeTraceListenerr  s     r   r&  zParser.removeTraceListener  s.    , 	1t/00000	1 	1r   c                    d}|                                  }|rd|z  |z   }t          |t                    rd|                                }|                                }|                                }|dz   }t          ||||fz  t          j                   d S t          |t          |          t          j                   d S )Nzsyntax error:z%s:z/unexpected symbol at line %s (column %s) : "%s"r  )
r`   r(   rQ   rV   rU   rW   r   r  stderrrE   )r4   r*   r   r  r>   rY   rZ   s          r   r\  zParser.reportError  s     	$19#Ca 	/;;==D99;;C99;;DJJC#c$'cj999999#c!ff3:......r   c                     |                                  }|r#t          |dt          |                     d S t          dt          |          z             d S )Nz
:warning: zwarning: %sr[  )r4   r>  r  s      r   r^  zParser.reportWarning  s_     	,aaaA/00000-3q66*+++++r   c                 D    | j         j                            |           d S r"   ra  rb  s     r   rV  zParser.rewind  rd  r   c                     || _         d S r"   r  r  s     r   setASTFactoryzParser.setASTFactory      r   c                 :    | j                             |           d S r"   r  setASTNodeTyperf  s     r   setASTNodeClasszParser.setASTNodeClass  s    &&r*****r   c                 0    |                      |           d S r"   r2  r4   nodeTypes     r   r1  zParser.setASTNodeType      X&&&&&r   c                 @    | j         st          | j                   d S d S r"   )r  r  setDebugMode)r4   	debugModes     r   r9  zParser.setDebugMode  s.    , 	*t()))))	* 	*r   c                     || j         _        d S r"   r  r  s     r   r   zParser.setFilename  r  r   c                     || _         d S r"   )r  )r4   values     r   setIgnoreInvalidDebugCallsz!Parser.setIgnoreInvalidDebugCalls  s    ',$$$r   c                     || j         _        d S r"   r,  r
  s     r   setTokenBufferzParser.setTokenBuffer  s     !r   c                 4    t          d| j        z             d S rr  rs  r   s    r   rt  zParser.traceIndent  ru  r   c                 R    | xj         dz  c_         |                     d|           d S Nr   > r  tracerx  s     r   rz  zParser.traceIn  ,    1

4r   c                 R    |                      d|           | xj        dz  c_        d S N< r   rF  r  rx  s     r   r|  zParser.traceOut  *    

41r   c                     |sd S |j         s||_         n<|j        s|j                             |           n|j                            |           ||_        |                                 d S r"   rootchildsetFirstChildsetNextSiblingadvanceChildToEndr4   
currentASTrP  s      r   addASTChildzParser.addASTChild  }     	F 	3#JOO! 	3O))%0000++E222 
$$&&&&&r   c                     |rC|                     |j                   |j        |_        |                                 ||_        d S d S r"   addChildrO  rP  rS  r4   rU  rO  s      r   makeASTRootzParser.makeASTRoot  O     	#MM*/***)J((***"JOOO	# 	#r   N)6r6   r7   r8   r2   r  r  r  r  r  r  r  r  r9  r  r  r  r  r  r   r`   r0  r5  r  r
  r  rL  r  rQ  r  r  rK  rN  r  r  r  r   r"  r$  r&  r\  r^  rV  r-  r2  r1  r9  r   r>  r@  rt  rz  r|  rV  r\  r   r   r   r  r    s         + + +3 3 32 2 27 7 77 7 7= = => > >1 1 1$ $ $    + + +      ( ( (       $ $ $    $ $ $$ $ $, , ,    L L L  3 3 32 2 27 7 77 7 7= = => > >1 1 1/ / /, , ,* * *  + + +' ' '* * *% % %- - -" " "% % %       

' 
' 
'# # # # #r   r  c                   H     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
 xZS )		LLkParserc                    	 |d         }n	#  d}Y nxY wt          |t                    r0t          t          |                                            || _        d S t          |t                    r8t          t          |                               |            | j        dg|R   d S t          |t                    rLt          t          |                                            | 	                    |            | j        dg|R   d S t          |t                    r[t          t          |                                            t          |          }| 	                    |            | j        dg|R   d S t          d          )Nr   r   zKLLkParser requires integer, ParserSharedInputStream or TokenStream argument)r(   r   rb  r_  r2   rH  r  set_kr  r@  rz  rR   )r4   r   r  r  tokenBufre  s        r   r2   zLLkParser.__init__  s   	7DD	DDDd3 	)D!!**,,,DFFd122 	)D!!**4000DJq$Fd;'' 	)D!!**,,,%%%DJq$Fd;'' 	)D!!**,,,"4((H)))DJq$F  J K K 	Ks    c                 B    | j         j                                         d S r"   )r  rc  r9  r   s    r   r9  zLLkParser.consume  s    %%'''''r   c                 @    | j         j                            |          S r"   )r  rc  rL  r  s     r   rL  zLLkParser.LA
      $''***r   c                 @    | j         j                            |          S r"   )r  rc  r  r  s     r   r  zLLkParser.LT  re  r   c                 @    	 ||         | _         d S #  d| _         Y d S xY wr4  )rH  )r4   r  r   s      r   ra  zLLkParser.set_k  s,    	%[DFFF	DFFFFs    	c                    t          t          |                      |                                  d}| j        j        dk    rd}t          ||z   |z              t          d| j        dz             D ]k}|dk    rt          d           |                     |          r(|                     |                                          }nd}t          d|d|           lt          d	           d S )
Nr   r   z [guessing]r   z, nullzLA(z) == r   )	r   r   rt  r  rt  r   rH  r  rW   )r4   eery  guessr   r  s         r   rF  zLLkParser.trace  s    d4jj?#a''!ErEzE!###$&(## 	* 	*AAvvdwwqzz GGAJJ&&((EAAAaa())))dr   c                 R    | xj         dz  c_         |                     d|           d S rC  rE  rx  s     r   rz  zLLkParser.traceIn'  rG  r   c                 R    |                      d|           | xj        dz  c_        d S rI  rK  rx  s     r   r|  zLLkParser.traceOut+  rL  r   )r6   r7   r8   r2   r9  rL  r  ra  rF  rz  r|  rm  rn  s   @r   r_  r_    s        K K K K KB( ( (+ + ++ + +    "! ! !      r   r_  c                       e Zd Zd ZdS )TreeParserSharedInputStatec                     d| _         d S r   )rt  r   s    r   r2   z#TreeParserSharedInputState.__init__4  s    r   Nr5   r   r   r   ro  ro  3  s#            r   ro  c                   t    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd ZdS )
TreeParserc                     t                      | _        d | _        g | _        d | _        t                      | _        d| _        d S r   )ro  r  _retTreer   r  
ASTFactoryr  r  )r4   r   r  s      r   r2   zTreeParser.__init__=  s:    466$,,r   c                     | j         S r"   r  r   s    r   r  zTreeParser.getASTE  r  r   c                     | j         S r"   r  r   s    r   r   zTreeParser.getASTFactoryH  r1  r   c                     | j         |         S r"   r  r  s     r   r  zTreeParser.getTokenNameK  r  r   c                     | j         S r"   r  r   s    r   r
  zTreeParser.getTokenNamesN  r1  r   c                    t          |t                    st          |t                    sJ |r|t          k    r$t	          |                                 ||d          t          |t                    r<|                                |k    r$t	          |                                 ||d          t          |t                    r>|                    |j                  s&t	          |                                 ||d          d S d S NF)r(   r   rz   rX   r   r
  r   r  )r4   r  r}   s      r   rK  zTreeParser.matchQ  s    #c""<jV&<&<<<< 	OALL*4+=+=+?+?3NNNc# 	O199;;##5#5*4+=+=+?+?3NNNc&!! 	O#**QY*?*? 	O*4+=+=+?+?3NNN	O 	O 	O 	Or   c                     |r#|t           k    s|                                |k    r$t          |                                 ||d          d S NT)rX   r   r   r
  )r4   r  ttypes      r   rN  zTreeParser.matchNot\  sM     	QQ'\\qyy{{e';';*4+=+=+?+?E4PPP (<';r   c                 >    t          d|t          j                   d S )Nzerror:r(  )r   r  r)  )r4   exs     r   r\  zTreeParser.reportError`  s    hr
++++++r   c                 &    t          d|           d S )Nzwarning:)r   r  s     r   r^  zTreeParser.reportWarningc  s    jr   c                     || _         d S r"   r  r  s     r   r-  zTreeParser.setASTFactoryf  r.  r   c                 0    |                      |           d S r"   r4  r5  s     r   r1  zTreeParser.setASTNodeTypei  r7  r   c                 :    | j                             |           d S r"   r0  r5  s     r   r2  zTreeParser.setASTNodeClassl  s    &&x00000r   c                 4    t          d| j        z             d S rr  rs  r   s    r   rt  zTreeParser.traceIndento  ru  r   c           	          | xj         dz  c_         |                                  t          d|z   dz   t          |t	          |          d          z   dz   t          | j        j        dk    dd          z              d S )	Nr   rD  r-  ri  r/  r   
[guessing]r   )r  rt  r   r&   rE   r  rt  r4   ry  r  s      r   rz  zTreeParser.traceInr  s    1te|c!Qs1vvf%%&(+,T_-a/R@@A 	C 	C 	C 	C 	Cr   c           	          |                                   t          d|z   dz   t          |t          |          d          z   dz   t          | j        j        dk    dd          z              | xj        dz  c_        d S )	NrJ  r-  ri  r/  r   r  r   r   )rt  r   r&   rE   r  rt  r  r  s      r   r|  zTreeParser.traceOuty  s    te|c!Qs1vvf%%&(+,T_-a/R@@A 	C 	C 	C 	1r   c                     |sd S |j         s||_         n<|j        s|j                             |           n|j                            |           ||_        |                                 d S r"   rN  rT  s      r   rV  zTreeParser.addASTChild  rW  r   c                     |rC|                     |j                   |j        |_        |                                 ||_        d S d S r"   rY  r[  s      r   r\  zTreeParser.makeASTRoot  r]  r   N)r6   r7   r8   r2   r  r   r  r
  rK  rN  r\  r^  r-  r1  r2  rt  rz  r|  rV  r\  r   r   r   rr  rr  ;  s             $ $ $  	O 	O 	OQ Q Q, , ,    ' ' '1 1 1% % %C C C  
' 
' 
'# # # # #r   rr  c                 4    | r| j         r| j         } | j         | S r"   right)asts    r   	rightmostr    s,    
 i 	)C i 	Jr   c                 .   | r||rz|                      |          sdS t          |                                 |                                |          sdS |                                 } |                                }| r|zt	          || |  o|           }|S r{  )equalscmptreegetFirstChildgetNextSiblingr&   )r>  r  partialr   s       r   r  r    s    
 
 
xx{{ 	5 q(():):7CC 	5  
 
 	w1uU_1u--AHr   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZeZd Zd ZdS )rP   c                     d S r"   r   r   s    r   r2   zAST.__init__  r}  r   c                     d S r"   r   r  s     r   rZ  zAST.addChild  r}  r   c                     dS r{  r   r
  s     r   r  z
AST.equals      ur   c                     dS r{  r   r
  s     r   
equalsListzAST.equalsList  r  r   c                     dS r{  r   r
  s     r   equalsListPartialzAST.equalsListPartial  r  r   c                     dS r{  r   r
  s     r   
equalsTreezAST.equalsTree  r  r   c                     dS r{  r   r
  s     r   equalsTreePartialzAST.equalsTreePartial  r  r   c                     d S r"   r   )r4   trees     r   findAllzAST.findAll  r   r   c                     d S r"   r   )r4   subtrees     r   findAllPartialzAST.findAllPartial  r   r   c                     | S r"   r   r   s    r   r  zAST.getFirstChild  r   r   c                     | S r"   r   r   s    r   r  zAST.getNextSibling  r   r   c                     dS r<  r   r   s    r   rW   zAST.getText      rr   c                     t           S r"   )r   r   s    r   r   zAST.getType  s    r   c                     dS r   r   r   s    r   rU   zAST.getLine  r   r   c                     dS r   r   r   s    r   rV   zAST.getColumn  r   r   c                     dS r   r   r   s    r   getNumberOfChildrenzAST.getNumberOfChildren  r   r   c                     d S r"   r   r
  s     r   
initializezAST.initialize  r}  r   c                     d S r"   r   r  s     r   rQ  zAST.setFirstChild  r}  r   c                     d S r"   r   r4   r=  s     r   rR  zAST.setNextSibling  r}  r   c                     d S r"   r   r   s     r   r   zAST.setText  r}  r   c                     d S r"   r   r4   r~  s     r   r   zAST.setType  r}  r   c                 .    |                                   d S r"   rW   r   s    r   r   zAST.toString  s    r   c                 *    |                                  S r"   r  r   s    r   toStringListzAST.toStringList      ||~~r   c                 *    |                                  S r"   r  r   s    r   toStringTreezAST.toStringTree  r  r   N)r6   r7   r8   r2   rZ  r  r  r  r  r  r  r  r  r  rW   r   rU   rV   r  r  rQ  rR  r   r   r   rH   r  r  r   r   r   rP   rP     s                                                    G      r   rP   c                        e Zd Zd Zd Zd ZdS )ASTNULLTypec                 :    t                               |            d S r"   )rP   r2   r   s    r   r2   zASTNULLType.__init__	  s    Tr   c                     dS )Nz	<ASTNULL>r   r   s    r   rW   zASTNULLType.getText	  r   r   c                     t           S r"   )r   r   s    r   r   zASTNULLType.getType	  s    ""r   N)r6   r7   r8   r2   rW   r   r   r   r   r  r  	  sA            # # # # #r   r  c                       e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z ee          Zd Zd Zd ZeZ d Z!dS )BaseASTFNc                 "    d | _         d | _        d S r"   downr  r   s    r   r2   zBaseAST.__init__	  s    	


r   c                 l    |r1t          | j                  }|r	||_        d S | j        rJ || _        d S d S r"   )r  r  r  )r4   rO   r  s      r   rZ  zBaseAST.addChild	  sO     	!$)$$A !9$$$ 				! 	!r   c                 8    | j         }d}|r|dz  }|j        }||S r\  r  )r4   r  r=  s      r   r  zBaseAST.getNumberOfChildren(	  s7    I 	FAA  	 r   c                 t   | }|r|o|                     |          }|r|                    |           n/| o|                    |          }|r|                    |           |                                r)|                                                    |||           |                                }|d S d S r"   )r  rD   r  r  doWorkForFindAllr  )r4   r  targetpartialMatchsiblingrP  rQ  s          r   r  zBaseAST.doWorkForFindAll0	  s     	/C'";";F"C"CB &!!!!%%D'*<*<V*D*D &HHW%%% $$&& P%%''886,OOO,,..G  	/ 	/ 	/ 	/ 	/r   c                     |sdS |                                  |                                 k    o)|                                 |                                k    S r{  )rW   r   r
  s     r   r  zBaseAST.equalsC	  sD     	5||~~,N199;;1NNr   c                 &    t          | |d          S NFr  r  r
  s     r   r  zBaseAST.equalsListK	  s    tQ....r   c                 &    t          | |d          S NTr  r  r
  s     r   r  zBaseAST.equalsListPartialQ	  s    tAd++++r   c                     |                      |          o5t          |                                 |                                d          S r  r  r  r  r
  s     r   r  zBaseAST.equalsTreeW	  sC    {{1~~ Ot))++Q__->->NNN	Or   c                     |sdS |                      |          o5t          |                                 |                                d          S r  r  r
  s     r   r  zBaseAST.equalsTreePartial^	  sY     	4{{1~~ B'!2!2D#B #B #B 	Br   c                 @    g }|sd S |                      ||d           |S r{  r  )r4   r  rootss      r   r  zBaseAST.findAllg	  s3      	4eVU333r   c                 @    g }|sd S |                      ||d           |S r}  r  )r4   subr  s      r   r  zBaseAST.findAllPartialt	  s3      	4eS$///r   c                     | j         S r"   r  r   s    r   r  zBaseAST.getFirstChild	  r   r   c                     | j         S r"   r  r   s    r   r  zBaseAST.getNextSibling	  r  r   c                     dS r<  r   r   s    r   rW   zBaseAST.getText	  r  r   c                     dS r   r   r   s    r   r   zBaseAST.getType	  r   r   c                     dS r   r   r   s    r   rU   zBaseAST.getLine	  r   r   c                     dS r   r   r   s    r   rV   zBaseAST.getColumn	  r   r   c                     d | _         d S r"   r  r   s    r   removeChildrenzBaseAST.removeChildren	  s    			r   c                     || _         d S r"   r  r  s     r   rQ  zBaseAST.setFirstChild	  s    			r   c                     || _         d S r"   r  r  s     r   rR  zBaseAST.setNextSibling	  s    


r   c                     d S r"   r   r   s     r   r   zBaseAST.setText	  r}  r   c                     d S r"   r   r  s     r   r   zBaseAST.setType	  r}  r   c                     | }|}d S r"   r   )verbosenamesverboseStringConversionr   s       r   setVerboseStringConversionz"BaseAST.setVerboseStringConversion	  s    ")


r   c                      t           S r"   r  r   r   r   r
  zBaseAST.getTokenNames	  s    r   c                 *    |                                  S r"   r  r   s    r   r   zBaseAST.toString	  r  r   c                     |                                  }|                                 }|r||                                z  }|S r"   )r  r  r  )r4   tssibs      r   r  zBaseAST.toStringList	  sG      !!## 	%#""$$$B	r   c                     d}|                                  }|r|dz  }|d|                                 z   z  }|r||                                z  }|dz  }|S )Nr   z (rC   z ))r  r   r  )r4   r  kids      r   r  zBaseAST.toStringTree	  sl      "" 	$JB
cDMMOO## 	#""$$$B$JB	r   )"r6   r7   r8   r  r   r2   rZ  r  r  r  r  r  r  r  r  r  r  r  rW   r   rU   rV   r  rQ  rR  r   r   r  staticmethodr
  r   r  rH   r  r   r   r   r  r  	  s       #J  ! ! !  / / /&O O O/ / /, , ,O O OB B B                             "..H!I!I       G	 	 	 	 	r   r  c                   J     e Zd Zd
 fd	Zd Zd Zd Zd Zd Zd Z	d	 Z
 xZS )	CommonASTNc                     t          t          |                                            t          | _        d| _        d| _        d| _        |                     |           d S )Nr   r   )	rb  r  r2   r   r~  rZ   r>   r?   r  )r4   rN   re  s     r   r2   zCommonAST.__init__	  sS    i&&(((!
 		r   c                     | j         S r"   r   r   s    r   rW   zCommonAST.getText	  r   r   c                     | j         S r"   )r~  r   s    r   r   zCommonAST.getType	  r  r   c                     | j         S r"   r   r   s    r   rU   zCommonAST.getLine	  r   r   c                     | j         S r"   )r?   r   s    r   rV   zCommonAST.getColumn	  r  r   c                    |sd S |d         }t          |t                    r4|d         }|                     |           |                     |           d S t          |t                    st          |t
                    r|                     |                                           |                     |                                           |                                | _	        |
                                | _        d S d S r\  )r(   r   r   r   rP   rQ   rW   r   rU   r>   rV   r?   )r4   r   r  r  s       r   r  zCommonAST.initialize	  s     	FAwd3 	7DLLLLFd3 	:d5#9#9 	LL(((LL(((DI..**DKF	 	r   c                 6    t          |          sJ || _        d S r"   )r+   rZ   )r4   text_s     r   r   zCommonAST.setText	  s!    e$$$$$			r   c                 B    t          |t                    sJ || _        d S r"   )r(   r   r~  )r4   ttype_s     r   r   zCommonAST.setType
  s#    &%%%%%


r   r"   )r6   r7   r8   r2   rW   r   rU   rV   r  r   r   rm  rn  s   @r   r  r  	  s                       (  
      r   r  c                   &    e Zd Zd Zd Zd Zd ZdS )CommonASTWithHiddenTokensc                 F    t          j        | g|R   d | _        d | _        d S r"   )r  r2   r   r   r3   s     r   r2   z"CommonASTWithHiddenTokens.__init__
  s1    4&&&&&  r   c                     | j         S r"   r  r   s    r   r  z(CommonASTWithHiddenTokens.getHiddenAfter
  r  r   c                     | j         S r"   r  r   s    r   r  z)CommonASTWithHiddenTokens.getHiddenBefore
  r  r   c                 "   t          j        | g|R   |rxt          |d         t                    r_t          |d         t                    sJ |d                                         | _        |d                                         | _        d S d S d S r   )	r  r  r(   rQ   r   r  r   r  r   r3   s     r   r  z$CommonASTWithHiddenTokens.initialize
  s    T(4(((( 	9JtAwu-- 	9d1g&=>>>>> $Q 7 7 9 9D $Q 6 6 8 8D	9 	9 	9 	9r   N)r6   r7   r8   r2   r  r  r  r   r   r   r	  r	  

  sP        ! ! !
     ! ! !9 9 9 9 9r   r	  c                   .    e Zd Zd Zd Zd Zd ZeZeZdS )ASTPairc                 "    d | _         d | _        d S r"   )rO  rP  r   s    r   r2   zASTPair.__init__#
  s    	


r   c                     | j         rR| j                                         r;| j                                         | _         | j                                         7d S d S d S r"   )rP  r  r   s    r   rS  zASTPair.advanceChildToEnd(
  sm    : 	9*++-- 9!Z6688
 *++-- 9 9 9	9 	99 9r   c                 R    t                      }| j        |_        | j        |_        |S r"   )r  rO  rP  )r4   tmps     r   copyzASTPair.copy.
  s"    ii9J	
r   c                     t          t           d| j                                                  }t          t           d| j                                                  }d|d|dS )Nri  [r.  ])r&   rO  rW   rP  )r4   r   r   s      r   r   zASTPair.toString4
  sY    t8F49#4#4#6#677u9VDJ$6$6$8$899AAaaa  r   N)	r6   r7   r8   r2   rS  r  r   rH   rJ   r   r   r   r  r  "
  sV          
9 9 9  ! ! !
 GHHHr   r  c                   b    e Zd ZddZd ZddZeZd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd ZeZdS )ru  Nc                 @    d | _         t          ||d           | _        d S r"   )_classr&   	_classmap)r4   tables     r   r2   zASTFactory.__init__B
  s     eD11r   c                    |s|                      t                    S |d         }d }d }	 |d         }|d         }n#  Y nxY wt          |t                    rU|sS|                     |          }|                      |          }|r%|                    |t          ||d                     |S t          |t                    r1|r/|                      |          }|r|                    ||           |S t          |t                    r@|                      |                                          }|r|                    |           |S t          |t                    r[|sY|                                }t          |t                    sJ |                      |          }|r|                    |           |S t          |t                    rV|rTt          |t                    sJ t          |t                    sJ  ||          }|rt          |t                    sJ |S t          |t                    r# |            }t          |t                    sJ |S d S )Nr   r   r<   r   )creater   r(   r   getASTNodeTyper  r&   rP   r   rQ   r   
issubclass)r4   r   r  r  arg2r   r  r~  s           r   r  zASTFactory.createF
  s    	-;;|,,,Aw	7D7DD	D d3 	 	##D))AAA 9T6$tB#7#7888H d3 	D 	D!!A (T$'''H d3 	DLLNN++A #T"""H d5!! 	$ 	LLNNEeC(((((E""A #T"""H d5!! 	d 	d4(((((d3''''' T

A*Ac*****H d4   	Aa$$$$$H		 	s   ; ?c                 x    |sd S t          |t                    sJ t          |t                    sJ || _        d S r"   )r(   r   r   rP   r  )r4   	classNames     r   r2  zASTFactory.setASTNodeClass
  sF     	F)D))))))C(((((r   c                     | j         S r"   )r  r   s    r   getASTNodeClasszASTFactory.getASTNodeClass
  r  r   c                     | j         S r"   r  r   s    r   r  z$ASTFactory.getTokenTypeToASTClassMap
  r  r   c                     || _         d S r"   r'  )r4   amaps     r   setTokenTypeToASTClassMapz$ASTFactory.setTokenTypeToASTClassMap
  s    r   c                 :    dd l }t          ||j                   d S )Nr   r(  )r  r   r)  )r4   rl  r  s      r   r    zASTFactory.error
  s&    


acj!!!!!!r   c                     | j         si | _         |s	 | j         |= dS #  Y dS xY w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   rP   )r4   r   r#  s      r   setTokenTypeASTNodeTypez"ASTFactory.setTokenTypeASTNodeType
  s     ~ 	 DN 	2N9--- i-----i,,,,,(1DN9%%%s    !c                 n    | j         r	 | j         |         }|r|S n#  Y nxY w| 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  )r4   r   r   s      r   r  zASTFactory.getASTNodeType
  sY     > 	N9- H; 	; s    c                 "    t          ||           S r"   )dupr
  s     r   r0  zASTFactory.dup
  s    1T{{r   c                 "    t          ||           S r"   )dupListr
  s     r   r2  zASTFactory.dupList
      qr   c                 "    t          ||           S r"   )dupTreer
  s     r   r5  zASTFactory.dupTree
  r3  r   r"   )r6   r7   r8   r2   r  r2  r1  r%  r  r*  r    r-  r  r0  r2  r5  maptyper   r   r   ru  ru  A
  s        2 2 2 2= = =@        %N  
    " " "2 2 2,  0       &GGGr   ru  c                       e Zd Zd Zd ZdS )
ASTVisitorc                     d S r"   r   r3   s     r   r2   zASTVisitor.__init__
  r}  r   c                     d S r"   r   )r4   r  s     r   visitzASTVisitor.visit
  r}  r   N)r6   r7   r8   r2   r;  r   r   r   r8  r8  
  s2              r   r8  c                  x   | sd S t          dt          |                     D ]#}| |         }|rt          |t                    sJ $| d         }d }|r|                    d            t          dt          |                     D ]}| |         s|s| |         x}}na|s0|                    | |                    |                                }n/|                    | |                    |                                }|                                r(|                                }|                                (|S r\  )r   r@   r(   rP   rQ  r  rR  r  )nodesr   rO   rO  tails        r   maker?  
  se    tAc%jj!! ( (Qx 	(d3'''''8DD !4   Ac%jj!! ) )Qx 	 	)("D44 	)uQx(((%%''DDa)))&&((D !!## 	)&&((D !!## 	)Kr   c                     | sd S |r|                     | j                  }nt          d          |                    |            |S )Nz)dup function requires ASTFactory argument)r  re  rR   r  )r  factorydup_ts      r   r0  r0    sU     t Eq{++CDDD	QLr   c                     t          | |          }|}| rM|                                 } |                    t          | |                     |                                }| M|S r"   )r5  r  rR  )r  rA  resultnts       r   r2  r2    so    QwF	B
 !
'!G,,---  	  !
 Mr   c                     t          | |          }| r5|                    t          |                                 |                     |S r"   )r0  rQ  r2  r  )r  rA  rD  s      r   r5  r5  $  sE    7^^F AWQ__%6%6w??@@@Mr   )X
__future__r   r  compatr   r   r   r   r   r   r   r   r   r   r  r   r    r&   r+   r-   r1   r/   r:   rL   r\   rk   rp   r   r   r   r   r   r   r   r   objectrQ   r>  r6   r   Tr   r   r   r   r   rU   rV   rW   r   r   r  r%  r`  rp  rz  r  r  r  r  r  r  r  r  rz   r  r  r  r  r  r_  ro  rr  r  r  rP   r  r  r  r	  r  ru  r8  rX   r?  r0  r2  r5  r   r   r   <module>rK     sp
   % % % % % %X 


 7 7 7 7 7 7 7 7 7 7 7 7     , , ,  " " "
	 	 	( ( ( ( (Y ( ( (    >   >    /   8         "6      F3 3 3 3 3, 3 3 3n n n n n2 n n nbp p p p p3 p p pf- - - - -> - - -	 	 	 	 	1 	 	 	    &:    3 3 3 3 3 4 3 3 3- - - - -. - - -	 	 	 	 	/ 	 	 		 	 	 	 	y 	 	 	K K K K KF K K K\ \<<<z	E,A	E!HHH< < < < <% < < <~ zA	E!HHH{;;;A	E!HHHAIIaLL2&&{33;;A>>>	E!HHH	E!))++	E!++--	E!))++	E!))++    k   .         F      6O# O# O# O# O#& O# O# O#j(+ (+ (+ (+ (+ (+ (+ (+b         F      6) ) ) ) )& ) ) )    &   $0: 0: 0: 0: 0:+ 0: 0: 0:l    [   6L L L L L#9 L L Ld0 0 0 0 0 0 0 0|    V   <w w w w w+ w w wz       .] ] ] ] ]V ] ] ]H  
  > > > > >& > > >H
 
 
 
 
V 
 
 
 o# o# o# o# o#V o# o# o#jI I I I I I I I^       [# [# [# [# [# [# [# [#B    (I I I I I& I I I`	# 	# 	# 	# 	## 	# 	# 	# r r r r rc r r rr5 5 5 5 5 5 5 5v9 9 9 9 9	 9 9 90    f   >Z& Z& Z& Z& Z& Z& Z& Z&@        +--  >	 	 	      r   