o
    Á¿iP ã                   @   s
  d dl Z d dlZd dlZd dlZd dlZd dlZdZdZdZ	dZ
dZdZdZd	Zd
Zd Zejd  dk r6eZneZejZG dd„ deƒZG dd„ deƒZG dd„ deƒZdd„ Zdd„ Zdadada dZ!dd„ Z"dd„ Z#dd„ Z$dd„ Z%G dd„ dƒZ&G d d!„ d!ƒZ'G d"d#„ d#ƒZ(e  )d$¡Z*G d%d&„ d&eƒZ+G d'd(„ d(eƒZ,G d)d*„ d*eƒZ-d+d,„ Z.G d-d.„ d.eƒZ/G d/d0„ d0eƒZ0G d1d2„ d2eƒZ1G d3d4„ d4eƒZ2d5d6„ Z3d7d8„ Z4G d9d:„ d:eƒZ5G d;d<„ d<e2ƒZ6d=d>„ Z7d?d@„ Z8G dAdB„ dBeƒZ9de	deddd	de
ddddfdCdD„Z:dS )Eé    Nz3.11z3.10Tz
parser.outÚparsetabÚLALRé   Fé(   c                   @   s4   e Zd Zdd„ Zdd„ ZeZdd„ Zdd„ ZeZd	S )
Ú	PlyLoggerc                 C   s
   || _ d S ©N)Úf)Úselfr   © r
   úK/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/vendor/ply/yacc.pyÚ__init__m   ó   
zPlyLogger.__init__c                 O   s   | j  || d ¡ d S )NÚ
©r   Úwrite©r	   ÚmsgÚargsÚkwargsr
   r
   r   Údebugp   ó   zPlyLogger.debugc                 O   ó   | j  d||  d ¡ d S )Nz	WARNING: r   r   r   r
   r
   r   Úwarningu   ó   zPlyLogger.warningc                 O   r   )NzERROR: r   r   r   r
   r
   r   Úerrorx   r   zPlyLogger.errorN)	Ú__name__Ú
__module__Ú__qualname__r   r   Úinfor   r   Úcriticalr
   r
   r
   r   r   l   s    r   c                   @   ó   e Zd Zdd„ Zdd„ ZdS )Ú
NullLoggerc                 C   ó   | S r   r
   )r	   Únamer
   r
   r   Ú__getattribute__   ó   zNullLogger.__getattribute__c                 O   r"   r   r
   )r	   r   r   r
   r
   r   Ú__call__‚   r%   zNullLogger.__call__N)r   r   r   r$   r&   r
   r
   r
   r   r!   ~   ó    r!   c                   @   ó   e Zd ZdS )Ú	YaccErrorN©r   r   r   r
   r
   r
   r   r)   †   ó    r)   c                 C   sP   t | ƒ}d|v rt |ƒ}t|ƒtkr|d t… d }dt| ƒjt| ƒ|f }|S )Nr   z ...z<%s @ 0x%x> (%s))ÚreprÚlenÚresultlimitÚtyper   Úid)ÚrÚrepr_strÚresultr
   r
   r   Úformat_resultŠ   s   r4   c                 C   s>   t | ƒ}d|v rt |ƒ}t|ƒdk r|S dt| ƒjt| ƒf S )Nr   é   z<%s @ 0x%x>)r,   r-   r/   r   r0   )r1   r2   r
   r
   r   Úformat_stack_entry”   s   r6   a  PLY: Don't use global functions errok(), token(), and restart() in p_error().
Instead, invoke the methods on the associated parser instance:

    def p_error(p):
        ...
        # Use parser.errok(), parser.token(), parser.restart()
        ...

    parser = yacc.yacc()
c                   C   ó   t  t¡ tƒ S r   )ÚwarningsÚwarnÚ_warnmsgÚ_errokr
   r
   r
   r   Úerrok®   ó   
r<   c                   C   r7   r   )r8   r9   r:   Ú_restartr
   r
   r
   r   Úrestart²   r=   r?   c                   C   r7   r   )r8   r9   r:   Ú_tokenr
   r
   r
   r   Útoken¶   r=   rA   c                 C   s<   |j a|ja|ja| |ƒ}zbbbW |S  ty   Y |S w r   )r<   r;   rA   r@   r?   r>   Ú	NameError)Ú	errorfuncrA   Úparserr1   r
   r
   r   Úcall_errorfunc»   s   þþrE   c                   @   r    )Ú
YaccSymbolc                 C   ó   | j S r   ©r/   ©r	   r
   r
   r   Ú__str__Ù   ó   zYaccSymbol.__str__c                 C   s   t | ƒS r   ©ÚstrrI   r
   r
   r   Ú__repr__Ü   s   zYaccSymbol.__repr__N)r   r   r   rJ   rN   r
   r
   r
   r   rF   Ø   r'   rF   c                   @   sn   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )ÚYaccProductionNc                 C   s   || _ || _d | _d | _d S r   )ÚsliceÚstackÚlexerrD   )r	   ÚsrQ   r
   r
   r   r   é   ó   
zYaccProduction.__init__c                 C   s>   t |tƒrdd„ | j| D ƒS |dkr| j| jS | j| jS )Nc                 S   ó   g | ]}|j ‘qS r
   ©Úvalue©Ú.0rS   r
   r
   r   Ú
<listcomp>ñ   ó    z.YaccProduction.__getitem__.<locals>.<listcomp>r   )Ú
isinstancerP   rW   rQ   ©r	   Únr
   r
   r   Ú__getitem__ï   s
   
zYaccProduction.__getitem__c                 C   ó   || j | _d S r   )rP   rW   )r	   r^   Úvr
   r
   r   Ú__setitem__÷   ó   zYaccProduction.__setitem__c                 C   s   dd„ | j ||… D ƒS )Nc                 S   rU   r
   rV   rX   r
   r
   r   rZ   û   r[   z/YaccProduction.__getslice__.<locals>.<listcomp>)rP   )r	   ÚiÚjr
   r
   r   Ú__getslice__ú   r   zYaccProduction.__getslice__c                 C   ó
   t | jƒS r   )r-   rP   rI   r
   r
   r   Ú__len__ý   r   zYaccProduction.__len__c                 C   ó   t | j| ddƒS )NÚlinenor   ©ÚgetattrrP   r]   r
   r
   r   rj      ó   zYaccProduction.linenoc                 C   r`   r   )rP   rj   )r	   r^   rj   r
   r
   r   Ú
set_lineno  rc   zYaccProduction.set_linenoc                 C   ó,   t | j| ddƒ}t | j| d|ƒ}||fS )Nrj   r   Ú	endlinenork   )r	   r^   Ú	startlineÚendliner
   r
   r   Úlinespan  ó   zYaccProduction.linespanc                 C   ri   )NÚlexposr   rk   r]   r
   r
   r   ru     rm   zYaccProduction.lexposc                 C   r`   r   )rP   ru   )r	   r^   ru   r
   r
   r   Ú
set_lexpos  rc   zYaccProduction.set_lexposc                 C   ro   )Nru   r   Ú	endlexposrk   )r	   r^   ÚstartposÚendposr
   r
   r   Úlexspan  rt   zYaccProduction.lexspanc                 C   s   t ‚r   )ÚSyntaxErrorrI   r
   r
   r   r     r%   zYaccProduction.errorr   )r   r   r   r   r_   rb   rf   rh   rj   rn   rs   ru   rv   rz   r   r
   r
   r
   r   rO   è   s    
rO   c                   @   s\   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zddd„Zddd„Z	ddd„Z
ddd„ZdS )ÚLRParserc                 C   s0   |j | _|j| _|j| _|| _|  ¡  d| _d S ©NT)	Úlr_productionsÚproductionsÚ	lr_actionÚactionÚlr_gotoÚgotorC   Úset_defaulted_statesÚerrorok)r	   ÚlrtabÚerrorfr
   r
   r   r      s   
zLRParser.__init__c                 C   s
   d| _ d S r}   )r…   rI   r
   r
   r   r<   (  r   zLRParser.errokc                 C   s@   | j d d …= | jd d …= tƒ }d|_| j |¡ | j  d¡ d S )Nú$endr   )Ú
statestackÚsymstackrF   r/   Úappend)r	   Úsymr
   r
   r   r?   +  s   zLRParser.restartc                 C   sP   i | _ | j ¡ D ]\}}t| ¡ ƒ}t|ƒdkr%|d dk r%|d | j |< qd S ©Né   r   )Údefaulted_statesr   ÚitemsÚlistÚvaluesr-   )r	   ÚstateÚactionsÚrulesr
   r
   r   r„   ;  s   €ýzLRParser.set_defaulted_statesc                 C   s
   i | _ d S r   )r   rI   r
   r
   r   Údisable_defaulted_statesB  r   z!LRParser.disable_defaulted_statesNFc                 C   sV   |st rt|tƒrttjƒ}|  |||||¡S |r"|  |||||¡S |  |||||¡S r   )	Ú	yaccdevelr\   Úintr   ÚsysÚstderrÚ
parsedebugÚparseoptÚparseopt_notrack)r	   ÚinputrR   r   ÚtrackingÚ	tokenfuncr
   r
   r   ÚparseE  s   

zLRParser.parsec                  C   s®  d }g }| j }| j}	| j}
| j}td ƒ}d}| d¡ |s&ddlm} |j}||_| |_	|d ur5| 
|¡ |d u r=|j}n|}|| _g }|| _g }|| _||_d }| d¡ tƒ }d|_| |¡ d}	 | d¡ | d|¡ ||vr’|s‡|s{|ƒ }n| ¡ }|s‡tƒ }d|_|j}||  |¡}n|| }| d	|| ¡ | d
dd dd„ |D ƒdd … ¡t|ƒf  ¡ ¡ |d ur<|dkrÜ| |¡ |}| d|¡ | |¡ d }|rÛ|d8 }qc|dk r|
|  }|j}|j}tƒ }||_d |_|r| d|jdd dd„ || d … D ƒ¡ d |	|d|   | ¡ n| d|jg |	|d  | ¡ |rÁ|| d d … }||d< |r]|d }|j|_|j|_|d }t|d|jƒ|_t|d|jƒ|_||_ z2|| d …= || _!| "|¡ || d …= | dt#|d ƒ¡ | |¡ |	|d  | }| |¡ W n- t$y¿   | |¡ | %|dd… ¡ | ¡  |d }d|_d|_|}t&}d| _'Y nw qc|rÌ|j|_|j|_|g}||_ z&|| _!| "|¡ | dt#|d ƒ¡ | |¡ |	|d  | }| |¡ W n$ t$y   | |¡ | ¡  |d }d|_d|_|}t&}d| _'Y nw qc|dkr<|d }t|dd ƒ}| dt#|ƒ¡ | d¡ |S |d u rS| (ddd dd„ |D ƒdd … ¡t|ƒf  ¡ ¡ |dksd| j'rÇt&}d| _'|}|jdkrsd }| j)r—|rƒt*|d ƒsƒ||_|| _!t+| j)|| ƒ}| j'r–|}d }qcn2|r¿t*|d!ƒr¤|j}nd}|rµt,j- .d"||jf ¡ nt,j- .d#|j ¡ n
t,j- .d$¡ d S t&}t|ƒdkrâ|jdkrâd }d }d}|d d …= qc|jdkrêd S |jdkr;|d }|jdkr|rt|d!|jƒ|_t|d%|jƒ|_d }qctƒ }d|_t*|d!ƒr#|j |_|_t*|d%ƒr0|j |_|_||_| |¡ |}n| ¡ }|rJ|j|_|j|_| ¡  |d }qct/d&ƒ‚)'Nr   zPLY: PARSE DEBUG STARTrŽ   ©Úlexrˆ   TÚ zState  : %sz#Defaulted state %s: Reduce using %dzStack  : %sz%s . %sú c                 S   rU   r
   rH   ©rY   Úxxr
   r
   r   rZ   ³  r[   z'LRParser.parsedebug.<locals>.<listcomp>z Action : Shift and goto state %sz3Action : Reduce rule [%s] with %s and goto state %dú[ú,c                 S   s   g | ]}t |jƒ‘qS r
   )r6   rW   )rY   Ú_vr
   r
   r   rZ   Ö  ó    ú]éÿÿÿÿrp   rw   zResult : %sr   FrW   zDone   : Returning %szPLY: PARSE DEBUG ENDzError  : %sc                 S   rU   r
   rH   r¦   r
   r
   r   rZ   D  r[   rR   rj   ú(yacc: Syntax error at line %d, token=%s
úyacc: Syntax error, token=%sú yacc: Parse error in input. EOF
ru   úyacc: internal parser error!!!
)0r   rƒ   r   r   rO   r   r¤   r£   rR   rD   rž   rA   r‰   rŠ   rQ   r‹   rF   r/   r   ÚpopÚgetÚjoinrM   Úlstripr#   r-   rW   rj   ru   rl   rp   rw   rP   r“   Úcallabler4   r{   ÚextendÚerror_countr…   r   rC   ÚhasattrrE   r™   rš   r   ÚRuntimeError© r	   rž   rR   r   rŸ   r    Ú	lookaheadÚlookaheadstackr”   rƒ   Úprodr   ÚpsliceÚ
errorcountr£   Ú	get_tokenr‰   rŠ   ÚerrtokenrŒ   r“   ÚltypeÚtÚpÚpnameÚplenÚtargÚt1r^   r3   Útokrj   r
   r
   r   r›   ^  sŒ  




*ÿ





$þÿ



ö



÷


*ÿú

zLRParser.parsedebugc                  C   s\  d }g }| j }| j}	| j}
| j}td ƒ}d}|s!ddlm} |j}||_| |_|d ur0| 	|¡ |d u r8|j
}n|}|| _
g }|| _g }|| _||_d }| d¡ tƒ }d|_| |¡ d}	 ||vr‚|sw|sk|ƒ }n| ¡ }|swtƒ }d|_|j}||  |¡}n|| }|d ur­|dkr¤| |¡ |}| |¡ d }|r£|d8 }q^|dk rœ|
|  }|j}|j}tƒ }||_d |_|rI|| d d … }||d< |rï|d }|j|_|j|_|d }t|d|jƒ|_t|d|jƒ|_||_z(|| d …= || _| |¡ || d …= | |¡ |	|d  | }| |¡ W n- tyG   | |¡ | |dd… ¡ | ¡  |d }d	|_d	|_|}t }d
| _!Y nw q^|rT|j|_|j|_|g}||_z|| _| |¡ | |¡ |	|d  | }| |¡ W n$ tyš   | |¡ | ¡  |d }d	|_d	|_|}t }d
| _!Y nw q^|dkr­|d }t|dd ƒ}|S |d u rª|dks»| j!rt }d
| _!|}|jdkrÊd }| j"rî|rÚt#|dƒsÚ||_|| _t$| j"|| ƒ}| j!rí|}d }q^n2|rt#|dƒrû|j}nd}|rt%j& 'd||jf ¡ nt%j& 'd|j ¡ n
t%j& 'd¡ d S t }t|ƒdkr9|jdkr9d }d }d}|d d …= q^|jdkrAd S |jd	kr’|d }|jd	krg|rdt|d|jƒ|_t|d|jƒ|_d }q^tƒ }d	|_t#|dƒrz|j |_|_t#|dƒr‡|j |_|_||_| |¡ |}n| ¡ }|r¡|j|_|j|_| ¡  |d }q^t(dƒ‚)Nr   rŽ   r¢   rˆ   Tr­   rp   rw   r   FrW   rR   rj   r®   r¯   r°   ru   r±   ))r   rƒ   r   r   rO   r¤   r£   rR   rD   rž   rA   r‰   rŠ   rQ   r‹   rF   r/   r²   r³   r#   r-   rW   rj   ru   rl   rp   rw   rP   r“   r¶   r{   r·   r¸   r…   rC   r¹   rE   r™   rš   r   rº   r»   r
   r
   r   rœ   ¹  s^  











ö



÷

ú

zLRParser.parseoptc                 C   sÆ  d }g }| j }| j}	| j}
| j}td ƒ}d}|s!ddlm} |j}||_| |_|d ur0| 	|¡ |d u r8|j
}n|}|| _
g }|| _g }|| _||_d }| d¡ tƒ }d|_| |¡ d}	 ||vr‚|sw|sk|ƒ }n| ¡ }|swtƒ }d|_|j}||  |¡}n|| }|d ur€|dkr¤| |¡ |}| |¡ d }|r£|d8 }q^|dk ro|
|  }|j}|j}tƒ }||_d |_|r'|| d d … }||d< ||_z(|| d …= || _| |¡ || d …= | |¡ |	|d  | }| |¡ W n- ty%   | |¡ | |dd… ¡ | ¡  |d }d|_d|_|}t}d| _Y nw q^|g}||_z|| _| |¡ | |¡ |	|d  | }| |¡ W n$ tym   | |¡ | ¡  |d }d|_d|_|}t}d| _Y nw q^|dkr€|d }t|d	d ƒ}|S |d u r_|dksŽ| jrñt}d| _|}|jdkrd }| jrÁ|r­t|d
ƒs­||_|| _t | j|| ƒ}| jrÀ|}d }q^n2|rét|dƒrÎ|j!}nd}|rßt"j# $d||jf ¡ nt"j# $d|j ¡ n
t"j# $d¡ d S t}t|ƒdkr|jdkrd }d }d}|d d …= q^|jdkrd S |jdkrR|d }|jdkr'd }q^tƒ }d|_t|dƒr:|j! |_!|_%t|dƒrG|j& |_&|_'||_| |¡ |}n| ¡ }| ¡  |d }q^t(dƒ‚)Nr   rŽ   r¢   rˆ   Tr­   r   FrW   rR   rj   r®   r¯   r°   ru   r±   ))r   rƒ   r   r   rO   r¤   r£   rR   rD   rž   rA   r‰   rŠ   rQ   r‹   rF   r/   r²   r³   r#   r-   rW   rP   r“   r¶   r{   r·   r¸   r…   rl   rC   r¹   rE   rj   r™   rš   r   rp   ru   rw   rº   )r	   rž   rR   r   rŸ   r    r¼   r½   r”   rƒ   r¾   r   r¿   rÀ   r£   rÁ   r‰   rŠ   rÂ   rŒ   r“   rÃ   rÄ   rÅ   rÆ   rÇ   rÈ   r^   r3   rÊ   rj   r
   r
   r   r   ë  s>  











ö



÷

ú

zLRParser.parseopt_notrack)NNFFN)r   r   r   r   r<   r?   r„   r–   r¡   r›   rœ   r   r
   r
   r
   r   r|     s    

  
]  4r|   z^[a-zA-Z0-9_-]+$c                   @   sR   e Zd ZdZddd„Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Z	dd„ Z
dd„ ZdS )Ú
Productionr   ©Úrightr   Nr¤   c           	      C   s¦   || _ t|ƒ| _|| _|| _d | _|| _|| _|| _t	| jƒ| _	g | _
| jD ]}|| j
vr3| j
 |¡ q&g | _d | _| jrKd| j d | j¡f | _d S d| j  | _d S ©Nú%s -> %sr¥   z%s -> <empty>)r#   Útupler¾   ÚnumberÚfuncr¶   ÚfileÚlineÚprecr-   Úusymsr‹   Úlr_itemsÚlr_nextr´   rM   )	r	   rÑ   r#   r¾   Ú
precedencerÒ   rÓ   rÔ   rS   r
   r
   r   r   !  s&   


€zProduction.__init__c                 C   rG   r   rL   rI   r
   r
   r   rJ   ?  rK   zProduction.__str__c                 C   ó   dt | ƒ d S )NzProduction(ú)rL   rI   r
   r
   r   rN   B  rc   zProduction.__repr__c                 C   rg   r   )r-   r¾   rI   r
   r
   r   rh   E  r   zProduction.__len__c                 C   s   dS ©NrŽ   r
   rI   r
   r
   r   Ú__nonzero__H  r%   zProduction.__nonzero__c                 C   ó
   | j | S r   )r¾   ©r	   Úindexr
   r
   r   r_   K  r   zProduction.__getitem__c              	   C   s†   |t | jƒkr	d S t| |ƒ}z| j|j|d   |_W n ttfy)   g |_Y nw z|j|d  |_W |S  tyB   d |_Y |S w rÜ   )r-   r¾   ÚLRItemÚ	ProdnamesÚlr_afterÚ
IndexErrorÚKeyErrorÚ	lr_before)r	   r^   rÅ   r
   r
   r   Úlr_itemO  s   

ÿþþzProduction.lr_itemc                 C   ó   | j r|| j  | _d S d S r   ©rÒ   r¶   ©r	   Úpdictr
   r
   r   Úbind_  ó   ÿzProduction.bind)rÌ   Nr¤   r   )r   r   r   Úreducedr   rJ   rN   rh   rÝ   r_   rç   rì   r
   r
   r
   r   rË     s    
rË   c                   @   ó,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚMiniProductionc                 C   s.   || _ || _|| _d | _|| _|| _|| _d S r   )r#   r-   rÒ   r¶   rÓ   rÔ   rM   )r	   rM   r#   r-   rÒ   rÓ   rÔ   r
   r
   r   r   h  s   
zMiniProduction.__init__c                 C   rG   r   rL   rI   r
   r
   r   rJ   q  rK   zMiniProduction.__str__c                 C   s
   d| j  S )NzMiniProduction(%s)rL   rI   r
   r
   r   rN   t  r   zMiniProduction.__repr__c                 C   rè   r   ré   rê   r
   r
   r   rì   x  rí   zMiniProduction.bindN)r   r   r   r   rJ   rN   rì   r
   r
   r
   r   rð   g  s
    	rð   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )rá   c                 C   sZ   |j | _ t|jƒ| _|j| _|| _i | _| j |d¡ t| jƒ| _t| jƒ| _|j	| _	d S )NÚ.)
r#   r‘   r¾   rÑ   Úlr_indexÚ
lookaheadsÚinsertrÐ   r-   rÖ   )r	   rÅ   r^   r
   r
   r   r   –  s   zLRItem.__init__c                 C   s.   | j rd| jd | j ¡f }|S d| j }|S rÎ   )r¾   r#   r´   )r	   rS   r
   r
   r   rJ   ¡  s
   
ÿzLRItem.__str__c                 C   rÚ   )NzLRItem(rÛ   rL   rI   r
   r
   r   rN   ¨  rc   zLRItem.__repr__N)r   r   r   r   rJ   rN   r
   r
   r
   r   rá   •  s    rá   c                 C   s<   t | ƒd }|dkr| | |v r| | S |d8 }|dks
d S r   )r-   )ÚsymbolsÚ	terminalsrd   r
   r
   r   Úrightmost_terminal°  s   ýr÷   c                   @   r(   )ÚGrammarErrorNr*   r
   r
   r
   r   rø   À  r+   rø   c                   @   s’   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd$dd„Zd%dd„Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd%d d!„Zd"d#„ Zd	S )&ÚGrammarc                 C   sb   d g| _ i | _i | _i | _|D ]}g | j|< qg | jd< i | _i | _i | _i | _tƒ | _	d | _
d S ©Nr   )ÚProductionsrâ   ÚProdmapÚ	TerminalsÚNonterminalsÚFirstÚFollowÚ
PrecedenceÚsetÚUsedPrecedenceÚStart)r	   rö   Útermr
   r
   r   r   Ä  s   

zGrammar.__init__c                 C   rg   r   )r-   rû   rI   r
   r
   r   rh   è  r   zGrammar.__len__c                 C   rÞ   r   )rû   rß   r
   r
   r   r_   ë  r   zGrammar.__getitem__c                 C   sL   | j d gks
J dƒ‚|| jv rtd| ƒ‚|dvrtdƒ‚||f| j|< d S )Nz2Must call set_precedence() before add_production()z,Precedence already specified for terminal %r)ÚleftrÍ   Únonassocz:Associativity must be one of 'left','right', or 'nonassoc')rû   r  rø   )r	   r  ÚassocÚlevelr
   r
   r   Úset_precedenceö  s   
zGrammar.set_precedenceNr¤   r   c              	   C   s   || j v rtd|||f ƒ‚|dkrtd|||f ƒ‚t |¡s)td|||f ƒ‚t|ƒD ]K\}}|d dv rez$t|ƒ}t|ƒdkrLtd||||f ƒ‚|| j vrVg | j |< |||< W q- tyd   Y nw t |¡sx|d	krxtd
||||f ƒ‚q-d	|v rº|d d	kr‹td||f ƒ‚|d d	kr™td||f ƒ‚|d }	| j 	|	¡}
|
s®td|||	f ƒ‚| j
 |	¡ |dd …= nt|| j ƒ}	| j 	|	d¡}
d||f }|| jv rè| j| }td|||f d|j|jf  ƒ‚t| jƒ}|| jvr÷g | j|< |D ]$}|| j v r
| j |  |¡ qù|| jvrg | j|< | j|  |¡ qùt||||
|||ƒ}| j |¡ || j|< z| j|  |¡ W d S  tyO   |g| j|< Y d S w )Nz7%s:%d: Illegal rule name %r. Already defined as a tokenr   z5%s:%d: Illegal rule name %r. error is a reserved wordz%s:%d: Illegal rule name %rr   z'"rŽ   zA%s:%d: Literal token %s in rule %r may only be a single characterz%precz!%s:%d: Illegal name %r in rule %rr­   z+%s:%d: Syntax error. Nothing follows %%precéþÿÿÿzH%s:%d: Syntax error. %%prec can only appear at the end of a grammar rulez/%s:%d: Nothing known about the precedence of %rrÌ   rÏ   z%s:%d: Duplicate rule %s. zPrevious definition at %s:%d)rý   rø   Ú_is_identifierÚmatchÚ	enumerateÚevalr-   r{   r  r³   r  Úaddr÷   rü   rÓ   rÔ   rû   rþ   r‹   rË   râ   rå   )r	   ÚprodnameÚsymsrÒ   rÓ   rÔ   r^   rS   ÚcÚprecnameÚprodprecÚmapÚmÚpnumberrÄ   rÅ   r
   r
   r   Úadd_production  s|   


ÿ

ÿ€ÿ

ÿ




ÿzGrammar.add_productionc                 C   sT   |s| j d j}|| jvrtd| ƒ‚tdd|gƒ| j d< | j|  d¡ || _d S )NrŽ   zstart symbol %s undefinedr   úS')rû   r#   rþ   rø   rË   r‹   r  )r	   Ústartr
   r
   r   Ú	set_startc  s   

zGrammar.set_startc                    s>   ‡ ‡‡fdd„‰ t ƒ ‰ˆ ˆjd jd ƒ ‡fdd„ˆjD ƒS )Nc                    sB   | ˆv rd S ˆ  | ¡ ˆj | g ¡D ]}|jD ]}ˆ |ƒ qqd S r   )r  râ   r³   r¾   )rS   rÅ   r1   ©Úmark_reachable_fromÚ	reachabler	   r
   r   r  v  s   


ÿÿz5Grammar.find_unreachable.<locals>.mark_reachable_fromr   c                    s   g | ]}|ˆ vr|‘qS r
   r
   rX   )r  r
   r   rZ   €  s    z,Grammar.find_unreachable.<locals>.<listcomp>)r  rû   r¾   rþ   rI   r
   r  r   Úfind_unreachables  s   zGrammar.find_unreachablec                 C   sâ   i }| j D ]}d||< qd|d< | jD ]}d||< q	 d}| j ¡ D ]'\}}|D ] }|jD ]
}|| s7d} nq-d}|rH|| sFd||< d} nq(q"|sMnqg }	| ¡ D ]\}}
|
sn|| jvri|| j vri|dkriqT|	 |¡ qT|	S )NTrˆ   Fr   )rý   rþ   râ   r   r¾   r‹   )r	   Ú
terminatesrÄ   r^   Úsome_changeÚplrÅ   rS   Úp_terminatesÚinfiniter  r
   r
   r   Úinfinite_cyclesŠ  sD   




ü	ú€å
€zGrammar.infinite_cyclesc                 C   sP   g }| j D ] }|s
q|jD ]}|| jvr$|| jvr$|dkr$| ||f¡ qq|S rú   )rû   r¾   râ   rý   r‹   )r	   r3   rÅ   rS   r
   r
   r   Úundefined_symbolsÊ  s   

€þzGrammar.undefined_symbolsc                 C   s2   g }| j  ¡ D ]\}}|dkr|s| |¡ q|S rú   )rý   r   r‹   )r	   Ú
unused_tokrS   ra   r
   r
   r   Úunused_terminalsÛ  s   
€zGrammar.unused_terminalsc                 C   s8   g }| j  ¡ D ]\}}|s| j| d }| |¡ q|S ©Nr   )rþ   r   râ   r‹   )r	   Úunused_prodrS   ra   rÅ   r
   r
   r   Úunused_rulesê  s   
€zGrammar.unused_rulesc                 C   s@   g }| j D ]}|| jv s|| jv s| || j | d f¡ q|S r*  )r  rý   r  r‹   )r	   ÚunusedÚtermnamer
   r
   r   Úunused_precedenceû  s   
€zGrammar.unused_precedencec                 C   sZ   g }|D ]!}d}| j | D ]}|dkrd}q||vr| |¡ q|r#q |S | d¡ |S )NFú<empty>T)rÿ   r‹   )r	   Úbetar3   ÚxÚx_produces_emptyr   r
   r
   r   Ú_first  s   
€
þzGrammar._firstc                 C   sª   | j r| j S | jD ]}|g| j |< q	dg| j d< | jD ]}g | j |< q	 d}| jD ]$}| j| D ]}|  |j¡D ]}|| j | vrK| j |  |¡ d}q8q0q)|sT	 | j S q$)Nrˆ   TF)rÿ   rý   rþ   râ   r4  r¾   r‹   )r	   rÄ   r^   r"  rÅ   r   r
   r
   r   Úcompute_first.  s,   


€ýÿõzGrammar.compute_firstc           
      C   s8  | j r| j S | js|  ¡  | jD ]}g | j |< q|s | jd j}dg| j |< 	 d}| jdd … D ]d}t|jƒD ]\\}}|| jv r“|  |j|d d … ¡}d}|D ]}	|	dkrg|	| j | vrg| j |  	|	¡ d}|	dkrmd}qP|sy|t
|jƒd kr“| j |j D ]}	|	| j | vr’| j |  	|	¡ d}qq7q0|s›	 | j S q')NrŽ   rˆ   TFr0  )r   rÿ   r5  rþ   rû   r#   r  r¾   r4  r‹   r-   )
r	   r  ÚkÚdidaddrÅ   rd   ÚBÚfstÚhasemptyr   r
   r
   r   Úcompute_followS  sD   

€€ðézGrammar.compute_followc              
   C   sÊ   | j D ]_}|}d}g }	 |t|ƒkrd }n8t||ƒ}z| j|j|d   |_W n ttfy5   g |_Y nw z
|j|d  |_W n tyL   d |_Y nw ||_	|sSn| 
|¡ |}|d7 }q||_qd S ©Nr   TrŽ   )rû   r-   rá   râ   r¾   rã   rä   rå   ræ   rØ   r‹   r×   )r	   rÅ   Úlastlrird   r×   Úlrir
   r
   r   Úbuild_lritemsŽ  s6   


ÿ
ÿ
ìçzGrammar.build_lritems)Nr¤   r   r   )r   r   r   r   rh   r_   r
  r  r  r   r&  r'  r)  r,  r/  r4  r5  r;  r?  r
   r
   r
   r   rù   Ã  s"    $

T@#
%;rù   c                   @   r(   )ÚVersionErrorNr*   r
   r
   r
   r   r@  ²  r+   r@  c                   @   rï   )
ÚLRTablec                 C   s   d | _ d | _d | _d | _d S r   )r€   r‚   r~   Ú	lr_methodrI   r
   r
   r   r   ¶  rT   zLRTable.__init__c                 C   sz   t |tjƒr	|}ntd| ƒ tj| }|jtkrtdƒ‚|j	| _
|j| _g | _|jD ]
}| j t|Ž ¡ q+|j| _|jS )Nú	import %sú&yacc table file version is out of date)r\   ÚtypesÚ
ModuleTypeÚexecr™   ÚmodulesÚ_tabversionÚ__tabversion__r@  Ú
_lr_actionr€   Ú_lr_gotor‚   r~   Ú_lr_productionsr‹   rð   Ú
_lr_methodrB  Ú_lr_signature)r	   Úmoduler   rÅ   r
   r
   r   Ú
read_table¼  s   


zLRTable.read_tablec                 C   sÀ   zdd l }W n ty   dd l}Y nw tj |¡st‚t|dƒ}| |¡}|tkr.t	dƒ‚| |¡| _
| |¡}| |¡| _| |¡| _| |¡}g | _|D ]
}| j t|Ž ¡ qO| ¡  |S )Nr   ÚrbrD  )ÚcPickleÚImportErrorÚpickleÚosÚpathÚexistsÚopenÚloadrJ  r@  rB  r€   r‚   r~   r‹   rð   Úclose)r	   ÚfilenamerU  Úin_fÚ
tabversionÚ	signaturer   rÅ   r
   r
   r   Úread_pickleÐ  s*   ÿ



zLRTable.read_picklec                 C   s   | j D ]}| |¡ qd S r   )r~   rì   )r	   rë   rÅ   r
   r
   r   Úbind_callablesì  s   
ÿzLRTable.bind_callablesN)r   r   r   r   rQ  r`  ra  r
   r
   r
   r   rA  µ  s
    rA  c              	   C   sL   i }| D ]}d||< qg }i }| D ]}|| dkr#t ||||| ||ƒ q|S r*  )Útraverse)ÚXÚRÚFPÚNr2  rQ   ÚFr
   r
   r   Údigraph	  s   
€rh  c              	   C   s
  |  | ¡ t|ƒ}||| < || ƒ|| < || ƒ}|D ]3}	||	 dkr+t|	||||||ƒ t||  ||	 ƒ|| < | |	g ¡D ]}
|
||  vrK||    |
¡ q<q||  |krt||d < ||  ||d < | ¡ }|| krƒt||d < ||  ||d < | ¡ }|| ksid S d S d S )Nr   r­   )r‹   r-   rb  Úminr³   ÚMAXINTr²   )r2  rf  rQ   rg  rc  rd  re  ÚdÚrelÚyÚaÚelementr
   r
   r   rb    s2   
€þýürb  c                   @   r(   )Ú	LALRErrorNr*   r
   r
   r
   r   rp  +  r+   rp  c                   @   s’   e Zd Zd$dd„Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd%d d!„Zd&d"d#„ZdS )'ÚLRGeneratedTabler   Nc                 C   sž   |dvr
t d| ƒ‚|| _|| _|stƒ }|| _i | _i | _|j| _i | _	i | _
d| _d| _d| _g | _g | _g | _| j ¡  | j ¡  | j ¡  |  ¡  d S )N)ÚSLRr   zUnsupported method %sr   )rp  ÚgrammarrB  r!   Úlogr€   r‚   rû   r~   Úlr_goto_cacheÚlr0_cidhashÚ
_add_countÚsr_conflictÚrr_conflictÚ	conflictsÚsr_conflictsÚrr_conflictsr?  r5  r;  Úlr_parse_table)r	   rs  Úmethodrt  r
   r
   r   r   6  s,   


zLRGeneratedTable.__init__c                 C   sp   |  j d7  _ |d d … }d}|r6d}|D ]}|jD ]}t|ddƒ| j kr&q| |j¡ | j |_d}qq|s|S )NrŽ   TFÚ	lr0_addedr   )rw  rã   rl   r‹   rØ   r  )r	   ÚIÚJr7  re   r2  r
   r
   r   Úlr0_closure[  s   
úýzLRGeneratedTable.lr0_closurec           	      C   sÐ   | j  t|ƒ|f¡}|r|S | j  |¡}|si }|| j |< g }|D ]$}|j}|rE|j|krE| t|ƒ¡}|s>i }||t|ƒ< | |¡ |}q!| d¡}|s]|rY|  |¡}||d< n||d< || j t|ƒ|f< |S )Nrˆ   )ru  r³   r0   rØ   ræ   r‹   r‚  )	r	   r€  r2  ÚgrS   ÚgsrÅ   r^   Ús1r
   r
   r   Úlr0_gotou  s4   

€


zLRGeneratedTable.lr0_gotoc           	      C   sÔ   |   | jjd jg¡g}d}|D ]}|| jt|ƒ< |d7 }qd}|t|ƒk rh|| }|d7 }i }|D ]}|jD ]}d ||< q7q2|D ] }|  ||¡}|rRt|ƒ| jv rSqAt|ƒ| jt|ƒ< | 	|¡ qA|t|ƒk s&|S )Nr   rŽ   )
r‚  rs  rû   rØ   rv  r0   r-   rÖ   r†  r‹   )	r	   ÚCrd   r€  ÚasymsÚiirS   r2  rƒ  r
   r
   r   Ú	lr0_items˜  s,   


ÿñzLRGeneratedTable.lr0_itemsc                 C   sz   t ƒ }d}	 | jjdd … D ] }|jdkr| |j¡ q|jD ]}||vr' nq| |j¡ qt|ƒ|kr8	 |S t|ƒ}qr<  )r  rs  rû   r-   r  r#   r¾   )r	   ÚnullableÚnum_nullablerÅ   rÄ   r
   r
   r   Úcompute_nullable_nonterminalsÐ  s$   

ÿ€ÿôz.LRGeneratedTable.compute_nullable_nonterminalsc                 C   sj   g }t |ƒD ],\}}|D ]%}|j|jd k r1||j|jd  f}|d | jjv r1||vr1| |¡ qq|S rÜ   )r  rò   r-   r¾   rs  rþ   r‹   )r	   r‡  ÚtransÚstatenor“   rÅ   rÄ   r
   r
   r   Úfind_nonterminal_transitionsí  s   
€ûz-LRGeneratedTable.find_nonterminal_transitionsc           
      C   s   |\}}g }|   || |¡}|D ]!}|j|jd k r1|j|jd  }	|	| jjv r1|	|vr1| |	¡ q|dkrF|| jjd jd krF| d¡ |S )NrŽ   r   rˆ   )r†  rò   r-   r¾   rs  rý   r‹   rû   )
r	   r‡  rŽ  r‹  r“   rf  Útermsrƒ  rÅ   rn  r
   r
   r   Údr_relation	  s   
€
zLRGeneratedTable.dr_relationc                 C   sr   g }|\}}|   || |¡}| j t|ƒd¡}|D ]}	|	j|	jd k r6|	j|	jd  }
|
|v r6| ||
f¡ q|S )Nr­   rŽ   )r†  rv  r³   r0   rò   r-   r¾   r‹   )r	   r‡  rŽ  Úemptyrl  r“   rf  rƒ  re   rÅ   rn  r
   r
   r   Úreads_relation	  s   €zLRGeneratedTable.reads_relationc                 C   s¼  i }i }i }|D ]}d||< q|D ]È\}}	g }
g }|| D ]Ÿ}|j |	kr%q|j}|}||jd k rƒ|d }|j| }||f|v rk|d }||jk rd|j| | jjv rSn|j| |vr[n|d }||jk sI| ||f¡ |  || |¡}| j 	t
|ƒd¡}||jd k s1|| D ]4}|j |j krq‡|j|jkr—q‡d}||jk r´|j| |j|d  kr«n|d }||jk sž|
 ||f¡ q‡q|D ]}||vrÉg ||< ||  ||	f¡ q¿|
|||	f< q||fS )NrŽ   r­   r   )r#   rò   r-   r¾   rs  rý   r‹   r†  rv  r³   r0   )r	   r‡  rŽ  r‹  ÚlookdictÚincludedictÚdtransrÄ   r“   rf  ÚlookbÚincludesrÅ   rò   re   Úlirƒ  r1   rd   r
   r
   r   Úcompute_lookback_includesD	  sb   




ûê

ý€ôz*LRGeneratedTable.compute_lookback_includesc                    s0   ‡ ‡‡fdd„}‡ ‡‡fdd„}t |||ƒ}|S )Nc                    ó   ˆ  ˆ | ˆ¡S r   )r’  ©r2  ©r‡  r‹  r	   r
   r   Ú<lambda>•	  ó    z4LRGeneratedTable.compute_read_sets.<locals>.<lambda>c                    rœ  r   )r”  r  rž  r
   r   rŸ  –	  r   ©rh  )r	   r‡  Úntransr‹  re  rd  rg  r
   rž  r   Úcompute_read_sets”	  s   z"LRGeneratedTable.compute_read_setsc                    s(   ‡fdd„}‡ fdd„}t |||ƒ}|S )Nc                    s   ˆ |  S r   r
   r  )Úreadsetsr
   r   rŸ  «	  s    z6LRGeneratedTable.compute_follow_sets.<locals>.<lambda>c                    s   ˆ   | g ¡S r   )r³   r  )Úinclsetsr
   r   rŸ  ¬	  s    r¡  )r	   r¢  r¤  r¥  re  rd  rg  r
   )r¥  r¤  r   Úcompute_follow_setsª	  s   z$LRGeneratedTable.compute_follow_setsc           	      C   sl   |  ¡ D ]/\}}|D ](\}}||jvrg |j|< | |g ¡}|D ]}||j| vr1|j|  |¡ q q
qd S r   )r   ró   r³   r‹   )	r	   Ú	lookbacksÚ	followsetrŽ  Úlbr“   rÅ   r   rn  r
   r
   r   Úadd_lookaheads¼	  s   

€þüþzLRGeneratedTable.add_lookaheadsc                 C   sP   |   ¡ }|  |¡}|  |||¡}|  |||¡\}}|  |||¡}|  ||¡ d S r   )r  r  r£  r›  r¦  rª  )r	   r‡  r‹  rŽ  r¤  ÚlookdÚincludedÚ
followsetsr
   r
   r   Úadd_lalr_lookaheadsÎ	  s   
z$LRGeneratedTable.add_lalr_lookaheadsc           $   
   C   sð  | j j}| j j}| j}| j}| j}i }| d| j¡ |  ¡ }| jdkr(|  	|¡ d}|D ]È}	g }
i }i }i }| d¡ | d|¡ | d¡ |	D ]
}| d|j
|¡ qI| d¡ |	D ]ë}|j|jd kr}|jdkrud|d	< ||d	< q[| jdkr€|j| }n| j j|j }|D ]ò}|
 ||d
|j
|f f¡ | |¡}|d urg|dkr| |d¡\}}||j
 j\}}||k sÃ||krë|dkrë|j
 ||< |||< |sà|sà| d|¡ | j ||df¡ ||j
  jd7  _q‰||krø|dkrød ||< q‰|s
| d|¡ | j ||df¡ q‰|dk ra||  }||j
 }|j|jkrE|j
 ||< |||< ||}}||j
  jd7  _||j
  jd8  _n||}}| j |||f¡ | d||| j
|| ¡ q‰td| ƒ‚|j
 ||< |||< ||j
  jd7  _q‰q[|j}|j|d  }|| j jv rG|  |	|¡}| j t|ƒd¡}|dkrG|
 ||d| f¡ | |¡}|d ur?|dkrÇ||krÆtd| ƒ‚q[|dk r9| |d¡\}}||| j
 j\}}||ksí||kr|dkr||| j
  jd8  _|||< |||< |s| d|¡ | j ||df¡ q[||kr#|dkr#d ||< q[|s8|s8| d|¡ | j ||df¡ q[td| ƒ‚|||< |||< q[i }|
D ]\}}}||v rj||| u rj| d||¡ d|||f< qL| d¡ d}|
D ](\}}}||v rœ||| urœ||f|vrœ| d||¡ d}d|||f< qu|r¦| d¡ i } |	D ]}!|!jD ]}"|"| j jv r¼d | |"< q¯qª| D ]"}#|  |	|#¡}| j t|ƒd¡}|dkrã|||#< | d|#|¡ qÂ|||< |||< |||< |d7 }q,d S )NzParsing method: %sr   r   r¤   zstate %dz    (%d) %srŽ   r  rˆ   zreduce using rule %d (%s)rÌ   r  z3  ! shift/reduce conflict for %s resolved as reduceÚreducer  z2  ! shift/reduce conflict for %s resolved as shiftÚshiftz=  ! reduce/reduce conflict for %s resolved using rule %d (%s)zUnknown conflict in state %dr­   zshift and go to state %dz Shift/shift conflict in state %drÍ   z    %-15s %sz  ! %-15s [ %s ]z"    %-30s shift and go to state %d) rs  rû   r  r‚   r€   rt  r   rB  rŠ  r®  rÑ   r-   rò   r#   ró   r   r‹   r³   rÕ   r{  rî   rÔ   r|  rp  r¾   rý   r†  rv  r0   r   rÖ   rþ   )$r	   rû   r  rƒ   r   rt  Úactionpr‡  Ústr€  ÚactlistÚ	st_actionÚ
st_actionpÚst_gotorÅ   Úlaheadsrn  r1   ÚsprecÚslevelÚrprecÚrlevelÚoldpÚppÚchosenpÚrejectprd   rƒ  re   Ú	_actprintr  Únot_usedÚnkeysr‰  rS   r^   r
   r
   r   r}  æ	  s  













€




ÿÌ6




ÿ
€
€€
€

€

€þ
€
 ÛzLRGeneratedTable.lr_parse_tabler¤   c                 C   s‚  t |tjƒr
tdƒ‚| d¡d }tj ||¡d }z—t|dƒ}| 	dtj 
|¡t| j|f ¡ d}|r­i }| j ¡ D ]*\}	}
|
 ¡ D ]!\}}| |¡}|sWg g f}|||< |d  |	¡ |d  |¡ qDq<| 	d	¡ | ¡ D ]1\}}| 	d
| ¡ |d D ]	}| 	d| ¡ q| 	d¡ |d D ]	}| 	d| ¡ q’| 	d¡ qp| 	d¡ | 	d¡ n"| 	d¡ | j ¡ D ]\}}| 	d|d |d |f ¡ q·| 	d¡ |rMi }| j ¡ D ]*\}	}
|
 ¡ D ]!\}}| |¡}|sôg g f}|||< |d  |	¡ |d  |¡ qáqÙ| 	d¡ | ¡ D ]4\}}| 	d
| ¡ |d D ]
}| 	d| ¡ q| 	d¡ |d D ]
}| 	d| ¡ q0| 	d¡ q| 	d¡ | 	d¡ n#| 	d¡ | j ¡ D ]\}}| 	d|d |d |f ¡ qW| 	d¡ | 	d¡ | jD ].}|jr—| 	d|j|j|j|jtj 
|j¡|jf ¡ qx| 	dt|ƒ|j|jf ¡ qx| 	d¡ | ¡  W d S  tyÀ } z‚ d }~ww )Nz"Won't overwrite existing tabmodulerñ   r­   z.pyÚwz
# %s
# This file is automatically generated. Do not edit.
# pylint: disable=W,C,R
_tabversion = %r

_lr_method = %r

_lr_signature = %r
    rŽ   r   z
_lr_action_items = {z%r:([z%r,z],[z]),z}
zÂ
_lr_action = {}
for _k, _v in _lr_action_items.items():
   for _x,_y in zip(_v[0],_v[1]):
      if not _x in _lr_action:  _lr_action[_x] = {}
      _lr_action[_x][_k] = _y
del _lr_action_items
z
_lr_action = { z(%r,%r):%r,z
_lr_goto_items = {z¹
_lr_goto = {}
for _k, _v in _lr_goto_items.items():
   for _x, _y in zip(_v[0], _v[1]):
       if not _x in _lr_goto: _lr_goto[_x] = {}
       _lr_goto[_x][_k] = _y
del _lr_goto_items
z
_lr_goto = { z_lr_productions = [
z  (%r,%r,%d,%r,%r,%d),
z  (%r,%r,%d,None,None,None),
z]
)r\   rE  rF  ÚIOErrorÚsplitrV  rW  r´   rY  r   ÚbasenamerJ  rB  r€   r   r³   r‹   r‚   r~   rÒ   rM   r#   r-   rÓ   rÔ   r[  )r	   Ú	tabmoduleÚ	outputdirr_  Úbasemodulenamer\  r   Úsmallerr   rS   Úndr#   ra   rd   r6  rÅ   Úer
   r
   r   Úwrite_table§
  s–   
	÷
ú






ú



	 


ÿ 
€ÿzLRGeneratedTable.write_tablec                 C   s  zdd l }W n ty   dd l}Y nw t|dƒf}| t|t¡ | | j|t¡ | ||t¡ | | j|t¡ | | j	|t¡ g }| j
D ]*}|jr`| |j|j|j|jtj |j¡|jf¡ qE| t|ƒ|j|jd d d f¡ qE| ||t¡ W d   ƒ d S 1 s‚w   Y  d S )Nr   Úwb)rS  rT  rU  rY  ÚdumprJ  Úpickle_protocolrB  r€   r‚   r~   rÒ   r‹   rM   r#   r-   rV  rW  rÆ  rÓ   rÔ   )r	   r\  r_  rU  ÚoutfÚoutprÅ   r
   r
   r   Úpickle_table"  s$   ÿ
, "ózLRGeneratedTable.pickle_table)r   N)r¤   r¤   ©r¤   )r   r   r   r   r‚  r†  rŠ  r  r  r’  r”  r›  r£  r¦  rª  r®  r}  rÍ  rÓ  r
   r
   r
   r   rq  5  s$    
%#8+P 
B{rq  c                 C   s0   t  | ¡}|j ¡ }|j|jkr| |j¡ |S r   )r™   Ú	_getframeÚ	f_globalsÚcopyÚf_localsÚupdate)Úlevelsr   Úldictr
   r
   r   Úget_caller_module_dictE  s
   

rÜ  c              
   C   sò   g }|   ¡ }d }|}|D ]j}|d7 }| ¡ }|sqzD|d dkr3|s*td||f ƒ‚|}	|dd … }
n |d }	|	}|dd … }
|d }|dkrS|dkrStd||f ƒ‚| |||	|
f¡ W q tye   ‚  tyv   td	||| ¡ f ƒ‚w |S )
NrŽ   r   ú|z%s:%d: Misplaced '|'é   ú:z::=z!%s:%d: Syntax error. Expected ':'z%s:%d: Syntax error in rule %r)Ú
splitlinesrÅ  r{   r‹   Ú	ExceptionÚstrip)ÚdocrÓ   rÔ   rs  ÚpstringsÚlastpÚdlineÚpsrÅ   r  r  Úassignr
   r
   r   Úparse_grammarQ  s8   ÿré  c                   @   s†   e Zd Zd dd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )!ÚParserReflectNc                 C   sN   || _ d | _d | _d | _tƒ | _g | _d| _|d u r"tt	j
ƒ| _d S || _d S )NF)rë   r  Ú
error_funcÚtokensr  rH  rs  r   r   r™   rš   rt  )r	   rë   rt  r
   r
   r   r   {  s   
zParserReflect.__init__c                 C   s,   |   ¡  |  ¡  |  ¡  |  ¡  |  ¡  d S r   )Ú	get_startÚget_error_funcÚ
get_tokensÚget_precedenceÚget_pfunctionsrI   r
   r
   r   Úget_allŠ  s
   zParserReflect.get_allc                 C   s6   |   ¡  |  ¡  |  ¡  |  ¡  |  ¡  |  ¡  | jS r   )Úvalidate_startÚvalidate_error_funcÚvalidate_tokensÚvalidate_precedenceÚvalidate_pfunctionsÚvalidate_modulesr   rI   r
   r
   r   Úvalidate_all’  s   zParserReflect.validate_allc              	   C   s˜   g }z9| j r| | j ¡ | jr| d dd„ | jD ƒ¡¡ | jr)| d | j¡¡ | jD ]}|d r9| |d ¡ q,W n ttfyF   Y nw d |¡S )Nr¤   c                 S   s   g | ]}d   |¡‘qS rÔ  )r´   )rY   rÅ   r
   r
   r   rZ   ¢  r«   z+ParserReflect.signature.<locals>.<listcomp>r¥   r   )r  r‹   rÕ   r´   rì  ÚpfuncsÚ	TypeErrorÚ
ValueError)r	   Úpartsr   r
   r
   r   r_  œ  s"   
€þÿ
zParserReflect.signaturec              	   C   s¬   t  d¡}| jD ]K}z	t |¡\}}W n	 ty   Y qw i }t|ƒD ]/\}}|d7 }| |¡}|rR| d¡}| 	|¡}	|	sC|||< q#t 
|¡}
| j d|
|||	¡ q#qd S )Nz\s*def\s+(p_[a-zA-Z_0-9]*)\(rŽ   z;%s:%d: Function %s redefined. Previously defined on line %d)ÚreÚcompilerH  ÚinspectÚgetsourcelinesrÄ  r  r  Úgroupr³   Úgetsourcefilert  r   )r	   ÚfrerP  ÚlinesÚlinenÚ	counthashrÔ   r  r#   Úprevr\  r
   r
   r   rø  ·  s.   

ÿ




ÿ€öùzParserReflect.validate_modulesc                 C   ó   | j  d¡| _d S )Nr  )rë   r³   r  rI   r
   r
   r   rí  Ð  rm   zParserReflect.get_startc                 C   s.   | j d urt| j tƒs| j d¡ d S d S d S )Nz'start' must be a string)r  r\   Ústring_typesrt  r   rI   r
   r
   r   ró  Ô  s
   
þzParserReflect.validate_startc                 C   r	  )NÚp_error)rë   r³   rë  rI   r
   r
   r   rî  Ú  rm   zParserReflect.get_error_funcc                 C   s¨   | j rPt| j tjƒrd}nt| j tjƒrd}n| j d¡ d| _d S | j jj}| j jj	}t
 | j ¡}| j |¡ | j jj| }|dkrR| j d||¡ d| _d S d S d S )Nr   rŽ   z2'p_error' defined, but is not a function or methodTz$%s:%d: p_error() requires 1 argument)rë  r\   rE  ÚFunctionTypeÚ
MethodTypert  r   Ú__code__Úco_firstlinenoÚco_filenamer   Ú	getmodulerH  r  Úco_argcount)r	   ÚismethodÚelineÚefilerP  Úargcountr
   r
   r   rô  Þ  s$   


îz!ParserReflect.validate_error_funcc                 C   sr   | j  d¡}|s| j d¡ d| _d S t|ttfƒs%| j d¡ d| _d S |s2| j d¡ d| _d S t|ƒ| _d S )Nrì  zNo token list is definedTztokens must be a list or tupleztokens is empty)	rë   r³   rt  r   r\   r‘   rÐ   Úsortedrì  )r	   rì  r
   r
   r   rï  ô  s   zParserReflect.get_tokensc                 C   sV   d| j v r| j d¡ d| _d S tƒ }| j D ]}||v r#| j d|¡ | |¡ qd S )Nr   z.Illegal token name 'error'. Is a reserved wordTzToken %r multiply defined)rì  rt  r   r  r   r  )r	   rö   r^   r
   r
   r   rõ    s   

ýzParserReflect.validate_tokensc                 C   r	  )NrÙ   )rë   r³   rÕ   rI   r
   r
   r   rð    rm   zParserReflect.get_precedencec                 C   s  g }| j r‚t| j ttfƒs| j d¡ d| _d S t| j ƒD ]d\}}t|ttfƒs4| j d¡ d| _ d S t|ƒdk rG| j d|¡ d| _ d S |d }t|tƒs\| j d¡ d| _ d S |dd … D ]}t|tƒsv| j d	¡ d| _  d S | 	|||d f¡ qbq|| _
d S )
Nz"precedence must be a list or tupleTzBad precedence tablerÞ  z?Malformed precedence entry %s. Must be (assoc, term, ..., term)r   z)precedence associativity must be a stringrŽ   z precedence items must be strings)rÕ   r\   r‘   rÐ   rt  r   r  r-   r
  r‹   Úpreclist)r	   r  r	  rÅ   r  r  r
   r
   r   rö    s8   

û
z!ParserReflect.validate_precedencec                 C   s†   g }| j  ¡ D ].\}}| d¡r|dkrqt|tjtjfƒr5t|d|jj	ƒ}t
 |¡}| ||||jf¡ q|jdd„ d || _d S )NÚp_r  r  c                 S   s    | d t | d ƒ| d | d fS )Nr   rŽ   rÞ  r   rL   )Ú
p_functionr
   r
   r   rŸ  F  s
   
üz.ParserReflect.get_pfunctions.<locals>.<lambda>)Úkey)rë   r   Ú
startswithr\   rE  r  r  rl   r  r  r   r  r‹   Ú__doc__Úsortrú  )r	   Úp_functionsr#   ÚitemrÔ   rP  r
   r
   r   rñ  9  s   
€
zParserReflect.get_pfunctionsc                 C   s>  g }t | jƒdkr| j d¡ d| _d S | jD ]\}}}}t |¡}| j| }t|tj	ƒr0d}nd}|j
j|krF| j d|||j¡ d| _q|j
j|k rZ| j d|||j¡ d| _q|jsh| j d|||j¡ qzt|||ƒ}	|	D ]	}
| ||
f¡ qqW n! ty } z| jjt|ƒd	d
id d| _W Y d }~nd }~ww | j |¡ q| j ¡ D ]o\}}| d¡r½t|tjtj	fƒr½qª| d¡rÃqª| d¡rÓ|dkrÓ| j d|¡ t|tjƒrß|j
jdksît|tj	ƒr|jj
jdkr|jrz|j d¡}|d dkr| j d|j
j|j
j|¡ W qª ty   Y qªw qª|| _d S )Nr   z+no rules of the form p_rulename are definedTrÞ  rŽ   z%%s:%d: Rule %r has too many argumentsz#%s:%d: Rule %r requires an argumentzA%s:%d: No documentation string specified in function %r (ignored)Úsend_to_telemetryF©Úextrar  Út_r  z%r not defined as a functionr¥   rß  z9%s:%d: Possible grammar rule %r defined without p_ prefix)r-   rú  rt  r   r   r  rë   r\   rE  r  r  r  r   r  r   ré  r‹   r{   rM   rH  r  r   r  r  Ú__func__rÅ  r  r  rä   rs  )r	   rs  rÔ   rP  r#   rã  rÓ   rÒ   ÚreqargsÚparsed_grƒ  rÌ  r^   ra   r
   r
   r   r÷  N  sp   

ÿÿ€þ

ÿÿ€ÿ€
z!ParserReflect.validate_pfunctionsr   )r   r   r   r   rò  rù  r_  rø  rí  ró  rî  rô  rï  rõ  rð  rö  rñ  r÷  r
   r
   r
   r   rê  z  s     

rê  c           <         s‚	  |d u rt }|r
d}|d u rttjƒ}ˆ rO‡ fdd„tˆ ƒD ƒ}t|ƒ}d|vr2tj|d  j|d< d|vrNd|v rNttj|d  dƒrNtj|d  j	|d< nt
dƒ}|	d u rt|tjƒra|j}n&d|vrj|d }n| d¡}d |d d	… ¡}td
| ƒ ttj| ddƒ}tj |¡}	| d¡}|r£t|tƒr£d|vr£|d | }|d ur«||d< t||d}| ¡  |jr¼tdƒ‚| ¡ }zFtƒ }|rÌ| |¡}n| |¡}|sØ||krz| |j ¡ t!||j"ƒ}|j#a#|W W S  t$y } z| %d|¡ W Y d }~nd }~ww W n# t&y  } z| %t|ƒ¡ W Y d }~nd }~w t'y)   Y nw |
d u rc|r`ztt(tj |	|¡dƒƒ}
W n" t)y_ } z| %d||f ¡ t*ƒ }
W Y d }~nd }~ww t*ƒ }
|
 +dt,¡ d}| -¡ rttdƒ‚|j"s}| %d¡ t.|j/ƒ}|j0D ])\}}}z
| 1|||¡ W q… t2y® } z| %d|¡ W Y d }~q…d }~ww |j3D ]2\}}|\} }!}"}#z| 4|"|#|| |!¡ W q² t2yä } z| d|¡ d}W Y d }~q²d }~ww z|d u rò| 5|j6¡ n| 5|¡ W n  t2y } z|jt|ƒddid d}W Y d }~nd }~ww |r tdƒ‚| 7¡ }$|$D ]\}%}&| d|&j8|&j9|%¡ d}q&| :¡ }'|'r`|
 +d¡ |
 +d¡ |
 +d¡ |'D ]}| %d|¡ |
 +d|¡ qP|r„|
 +d¡ |
 +d¡ |
 +d¡ t;|j<ƒD ]\}(})|
 +d|(|)¡ qw| =¡ }*|*D ]}&| %d|&j8|&j9|&j>¡ qŠt?|'ƒd kr¥| %d!¡ t?|'ƒd kr´| %d"t?|'ƒ¡ t?|*ƒd krÀ| %d#¡ t?|*ƒd krÏ| %d$t?|*ƒ¡ |r7|
 +d¡ |
 +d%¡ |
 +d¡ t@|jAƒ}+|+ B¡  |+D ]}|
 +d&|d' d(d„ |jA| D ƒ¡¡ qì|
 +d¡ |
 +d)¡ |
 +d¡ t@|jCƒ},|, B¡  |,D ]}-|
 +d&|-d' d*d„ |jC|- D ƒ¡¡ q|
 +d¡ |r\| D¡ }.|.D ]	}/| %d+|/¡ q@| E¡ }0|0D ]}1| d,|1¡ d}qP| F¡ }2|2D ]\}}| d-||¡ d}qb|rxtdƒ‚|r| Gd.| ¡ tH|| |
ƒ}|rÀt?|jIƒ}3|3d krš| %d/¡ n|3d kr¥| %d0|3¡ t?|jJƒ}4|4d krµ| %d1¡ n|4d krÀ| %d2|4¡ |rU|jIsË|jJrU|
 %d¡ |
 %d3¡ |
 %d¡ |jID ]\}5}6}7|
 %d4|6|5|7¡ qÝtKƒ }8|jJD ]<\}5}9}:|5tL|9ƒtL|:ƒf|8v rqò|
 %d5|5|9¡ |
 %d6|:|5¡ | %d5|5|9¡ | %d6|:|5¡ |8 M|5tL|9ƒtL|:ƒf¡ qòg };|jJD ] \}5}9}:|:jNsS|:|;vrS|
 %d7|:¡ | %d7|:¡ |; O|:¡ q4|rˆz| P||	|¡ |tjv rjtj|= W n t)y‡ } z| %d8||f ¡ W Y d }~nd }~ww |r°z| Q||¡ W n t)y¯ } z| %d8||f ¡ W Y d }~nd }~ww | |j ¡ t!||j"ƒ}|j#a#|S )9Nr   c                    s   g | ]	}|t ˆ |ƒf‘qS r
   )rl   )rY   r6  ©rP  r
   r   rZ   £  s    zyacc.<locals>.<listcomp>Ú__file__r   Ú__package__rÞ  rñ   r­   rC  r¤   r  )rt  zUnable to build parserz.There was a problem loading the table file: %rrÃ  zCouldn't open %r. %sz5Created by PLY version %s (http://www.dabeaz.com/ply)Fz no p_error() function is definedz%sTr!  r"  z;%s:%d: Symbol %r used, but not defined as a token or a rulezUnused terminals:zToken %r defined, but not usedz    %srù   zRule %-5d %sz$%s:%d: Rule %r defined, but not usedrŽ   zThere is 1 unused tokenzThere are %d unused tokenszThere is 1 unused rulezThere are %d unused rulesz'Terminals, with rules where they appearz
%-20s : %sr¥   c                 S   ó   g | ]}t |ƒ‘qS r
   rL   rX   r
   r
   r   rZ   M  ó    z*Nonterminals, with rules where they appearc                 S   r+  r
   rL   rX   r
   r
   r   rZ   U  r,  zSymbol %r is unreachablez)Infinite recursion detected for symbol %rz0Precedence rule %r defined for unknown symbol %rzGenerating %s tablesz1 shift/reduce conflictz%d shift/reduce conflictsz1 reduce/reduce conflictz%d reduce/reduce conflictsz
Conflicts:z7shift/reduce conflict for %s in state %d resolved as %sz;reduce/reduce conflict in state %d resolved using rule (%s)zrejected rule (%s) in state %dzRule (%s) is never reducedzCouldn't create %r. %s)RÚ
tab_moduler   r™   rš   ÚdirÚdictrH  r)  r¹   r*  rÜ  r\   rE  rF  rÅ  r´   rG  rl   rV  rW  Údirnamer³   rM   rê  rò  r   r)   r_  rA  r`  rQ  ra  rë   r|   rë  r¡   rá  r   r@  rT  rY  rÄ  r!   r   Ú__version__rù  rù   rì  r  r
  rø   rs  r  r  r  r'  rÓ   rÔ   r)  r  rû   r,  r#   r-   r‘   rý   r  rþ   r   r&  r/  r   rq  r{  r|  r  r0   r  rî   r‹   rÍ  rÓ  )<r~  r   rP  rÇ  r  Úcheck_recursionÚoptimizeÚwrite_tablesÚ	debugfilerÈ  ÚdebuglogÚerrorlogÚ
picklefileÚ_itemsrë   Úsrcfilerý  ÚpkgnameÚpkgÚpinfor_  ÚlrÚread_signaturerD   rÌ  Úerrorsrs  r  r  r	  ÚfuncnameÚgramrÓ   rÔ   r  r  r'  rŒ   r¾   r)  r^   rÅ   r,  r‘  ÚnontermsÚnontermÚunreachableÚur%  ÚinfÚunused_precÚnum_srÚnum_rrr“   rÊ   Ú
resolutionÚalready_reportedÚruleÚrejectedÚwarned_neverr
   r(  r   Úyacc  s¸  
€



€ÿ€€ÿ
€þ


€ÿ€þ

€€þ











(



(










€€€ÿ€ÿrP  );rþ  rE  r™   Úos.pathrV  r   r8   r1  rJ  Ú	yaccdebugÚ
debug_filer-  Ú
default_lrr¸   r—   r.   rÐ  Úversion_infoÚ
basestringr
  rM   Úmaxsizerj  Úobjectr   r!   rá  r)   r4   r6   r;   r@   r>   r:   r<   r?   rA   rE   rF   rO   r|   rÿ  r  rË   rð   rá   r÷   rø   rù   r@  rA  rh  rb  rp  rq  rÜ  ré  rê  rP  r
   r
   r
   r   Ú<module>   s”   =
7       
mH.   rT
      )  
þ