o
    UÌhk ã                   @   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 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 r:e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ƒZ0G d.d/„ d/eƒZ1G d0d1„ d1eƒZ2G d2d3„ d3eƒZ3d4d5„ Z4d6d7„ Z5G d8d9„ d9eƒZ6G d:d;„ d;e3ƒZ7d<d=„ Z8d>d?„ Z9G d@dA„ dAeƒZ:de
deddddeddddfdBdC„Z;dS )Dé    Nz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
   úf/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/pycparser/ply/yacc.pyÚ__init__n   ó   
zPlyLogger.__init__c                 O   s   | j  || d ¡ d S )NÚ
©r   Úwrite©r	   ÚmsgÚargsÚkwargsr
   r
   r   Údebugq   ó   zPlyLogger.debugc                 O   ó   | j  d||  d ¡ d S )Nz	WARNING: r   r   r   r
   r
   r   Úwarningv   ó   zPlyLogger.warningc                 O   r   )NzERROR: r   r   r   r
   r
   r   Úerrory   r   zPlyLogger.errorN)	Ú__name__Ú
__module__Ú__qualname__r   r   Úinfor   r   Úcriticalr
   r
   r
   r   r   m   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                   @   sf   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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   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   ry   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ƒ   9  s   €ýzLRParser.set_defaulted_statesc                 C   s
   i | _ d S r   )rŽ   rI   r
   r
   r   Údisable_defaulted_states@  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   ÚparseC  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   rv   zResult : %sr   FrW   zDone   : Returning %szPLY: PARSE DEBUG ENDzError  : %sc                 S   rU   r
   rH   r¥   r
   r
   r   rZ   B  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   rv   rP   r’   Úcallabler4   rz   Ú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   rv   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   rv   rP   r’   rµ   rz   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µ   rz   r¶   r·   r„   rl   rC   r¸   rE   rj   r˜   r™   r   rp   ru   rv   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   @  rc   zProduction.__repr__c                 C   rg   r   )r-   r½   rI   r
   r
   r   rh   C  r   zProduction.__len__c                 C   s   dS ©Nr   r
   rI   r
   r
   r   Ú__nonzero__F  r%   zProduction.__nonzero__c                 C   ó
   | j | S r   )r½   ©r	   Úindexr
   r
   r   r_   I  r   zProduction.__getitem__c              	   C   s„   |t | jƒkr	d S t| |ƒ}zt|j|d   |_W n ttfy(   g |_Y nw z|j|d  |_W |S  tyA   d |_Y |S w rÛ   )r-   r½   ÚLRItemÚ	ProdnamesÚlr_afterÚ
IndexErrorÚKeyErrorÚ	lr_before)r	   r^   rÄ   r
   r
   r   Úlr_itemM  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   f  s   
zMiniProduction.__init__c                 C   rG   r   rL   rI   r
   r
   r   rJ   o  rK   zMiniProduction.__str__c                 C   s
   d| j  S )NzMiniProduction(%s)rL   rI   r
   r
   r   rN   r  r   zMiniProduction.__repr__c                 C   rç   r   rè   ré   r
   r
   r   rë   v  rì   zMiniProduction.bindN)r   r   r   r   rJ   rN   rë   r
   r
   r
   r   rï   e  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-   rz   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_starta  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  t  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_unreachableq  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á   r3  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‡   TFr/  )rÿ   rþ   r4  rý   rú   r#   r  r½   r3  rŠ   r-   )
r	   r  ÚkÚdidaddrÄ   rd   ÚBÚfstÚhasemptyr   r
   r
   r   Úcompute_followQ  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.  r3  r4  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_methodrA  Ú_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   ÚrbrC  )ÚcPickleÚImportErrorÚpickleÚosÚpathÚexistsÚopenÚloadrI  r?  rA  r   r   r}   rŠ   rï   Úclose)r	   ÚfilenamerT  Ú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   rP  r_  r`  r
   r
   r
   r   r@  ³  s
    r@  c              	   C   sL   i }| D ]}d||< qg }i }| D ]}|| dkr#t ||||| ||ƒ q|S r)  )Útraverse)ÚXÚRÚFPÚNr1  rQ   ÚFr
   r
   r   Údigraph  s   
€rg  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-   ra  Úminr²   ÚMAXINTr±   )r1  re  rQ   rf  rb  rc  rd  ÚdÚrelÚyÚaÚelementr
   r
   r   ra    s2   
€þýüra  c                   @   r(   )Ú	LALRErrorNr*   r
   r
   r
   r   ro  )  r+   ro  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   )ro  ÚgrammarrA  r!   Úlogr   r   rú   r}   Úlr_goto_cacheÚlr0_cidhashÚ
_add_countÚsr_conflictÚrr_conflictÚ	conflictsÚsr_conflictsÚrr_conflictsr>  r4  r:  Úlr_parse_table)r	   rr  Úmethodrs  r
   r
   r   r   4  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   )rv  râ   rl   rŠ   r×   r~  )r	   ÚIÚJr6  re   r1  r
   r
   r   Úlr0_closureY  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‡   )rt  r²   r0   r×   rå   rŠ   r  )	r	   r  r1  ÚgrS   ÚgsrÄ   r^   Ús1r
   r
   r   Úlr0_gotos  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  rr  rú   r×   ru  r0   r-   rÕ   r…  rŠ   )	r	   ÚCrd   r  ÚasymsÚiirS   r1  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  rr  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½   rr  rý   rŠ   )r	   r†  ÚtransÚstatenor’   rÄ   rÃ   r
   r
   r   Úfind_nonterminal_transitionsë  s   
€ûz-LRGeneratedTable.find_nonterminal_transitionsc                 C   s”   i }|\}}g }|   || |¡}|D ]!}	|	j|	jd k r3|	j|	jd  }
|
| jjv r3|
|vr3| |
¡ q|dkrH|| jjd jd krH| d¡ |S )Nr   r   r‡   )r…  rñ   r-   r½   rr  rü   rŠ   rú   )r	   r†  r  rŠ  Údr_setr’   re  Útermsr‚  rÄ   rm  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…  ru  r²   r0   rñ   r-   r½   rŠ   )r	   r†  r  Úemptyrk  r’   re  r‚  re   rÄ   rm  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½   rr  rü   rŠ   r…  ru  r²   r0   )r	   r†  r  rŠ  ÚlookdictÚincludedictÚdtransrÃ   r’   re  ÚlookbÚincludesrÄ   rñ   re   Úlir‚  r1   rd   r
   r
   r   Úcompute_lookback_includesC	  sb   




ûê

ý€ôz*LRGeneratedTable.compute_lookback_includesc                    s0   ‡ ‡‡fdd„}‡ ‡‡fdd„}t |||ƒ}|S )Nc                    ó   ˆ  ˆ | ˆ¡S r   )r’  ©r1  ©r†  rŠ  r	   r
   r   Ú<lambda>”	  ó    z4LRGeneratedTable.compute_read_sets.<locals>.<lambda>c                    rœ  r   )r”  r  rž  r
   r   rŸ  •	  r   ©rg  )r	   r†  ÚntransrŠ  rd  rc  rf  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¥  rd  rc  rf  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   rm  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) rr  rú   r   r   r   rs  r   rA  r‰  r®  rÐ   r-   rñ   r#   rò   rÿ   rŠ   r²   rÔ   rz  rí   rÓ   r{  ro  r½   rü   r…  ru  r0   r   rÕ   rý   )$r	   rú   r   r‚   r€   rs  Úactionpr†  Ústr  ÚactlistÚ	st_actionÚ
st_actionpÚst_gotorÄ   Úlaheadsrm  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Úwzu
# %s
# This file is automatically generated. Do not edit.
_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\   rD  rE  ÚIOErrorÚsplitrU  rV  r³   rX  r   ÚbasenamerI  rA  r   r   r²   rŠ   r   r}   rÑ   rM   r#   r-   rÒ   rÓ   rZ  )r	   Ú	tabmoduleÚ	outputdirr^  Úbasemodulenamer[  r   Úsmallerr   rS   Úndr#   ra   rd   r5  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)rR  rS  rT  rX  ÚdumprI  Úpickle_protocolrA  r   r   r}   rÑ   rŠ   rM   r#   r-   rU  rV  rÆ  rÒ   rÓ   )r	   r[  r^  rT  Ú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   rp  3  s$    
%#8+P 
Bzrp  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_dictC  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Å  rz   rŠ   Ú	ExceptionÚstrip)ÚdocrÒ   rÓ   rr  ÚpstringsÚlastpÚdlineÚpsrÄ   r  r  Úassignr
   r
   r   Úparse_grammarO  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  rG  rr  r   r   r˜   r™   rs  )r	   rê   rs  r
   r
   r   r   y  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ÚcompilerG  ÚinspectÚgetsourcelinesrÄ  r  r  Úgroupr²   Úgetsourcefilers  r   )r	   ÚfrerO  Ú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_typesrs  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\   rD  ÚFunctionTypeÚ
MethodTypers  r   Ú__code__Úco_firstlinenoÚco_filenamer   Ú	getmodulerG  r  Úco_argcount)r	   ÚismethodÚelineÚefilerO  Úargcountr
   r
   r   rô  Ü  s$   


îz!ParserReflect.validate_error_funcc                 C   sn   | j  d¡}|s| j d¡ d| _d S t|ttfƒs%| j d¡ d| _d S |s2| j d¡ d| _d S || _d S )Nrì  zNo token list is definedTztokens must be a list or tupleztokens is empty)rê   r²   rs  r   r\   r   rÏ   rì  )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ì  rs  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Ï   rs  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Ÿ  D  s
   
üz.ParserReflect.get_pfunctions.<locals>.<lambda>)Úkey)rê   r   Ú
startswithr\   rD  r  r  rl   r  r  r   r  rŠ   Ú__doc__Úsortrú  )r	   Úp_functionsr#   ÚitemrÓ   rO  r
   r
   r   rñ  7  s   
€
zParserReflect.get_pfunctionsc                 C   s6  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 t|ƒ¡ 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)r  Út_r  z%r not defined as a functionr¤   rß  z9%s:%d: Possible grammar rule %r defined without p_ prefix)r-   rú  rs  r   r   r  rê   r\   rD  r  r  r  r   r  r   ré  rŠ   rz   rM   rG  r  r   r  r  Ú__func__rÅ  r  r  rã   rr  )r	   rr  rÓ   rO  r#   rã  rÒ   rÑ   ÚreqargsÚparsed_gr‚  rÌ  r^   ra   r
   r
   r   r÷  L  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ê  x  s     

rê  c           <         s*	  |d u rt }|r
d}|d u rttjƒ}ˆ r3‡ fdd„tˆ ƒD ƒ}t|ƒ}d|vr2tj|d  j|d< ntdƒ}|	d u rqt	|t
jƒrE|j}n&d|vrN|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ƒ‚| ¡ }zDtƒ }|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 rE|rBztt&tj |	|¡dƒƒ}
W n" t'yA } z| #d||f ¡ t(ƒ }
W Y d }~nd }~ww t(ƒ }
|
 )dt*¡ d}| +¡ rVtdƒ‚|j s_| #d¡ t,|j-ƒ}|j.D ])\}}}z
| /|||¡ W qg t0y } z| #d|¡ W Y d }~qgd }~ww |j1D ]2\}}|\} }!}"}#z| 2|"|#|| |!¡ W q” t0yÆ } z| d|¡ d}W Y d }~q”d }~ww z|d u rÔ| 3|j4¡ n| 3|¡ W n t0yö } z| t|ƒ¡ d}W Y d }~nd }~ww |rþtdƒ‚| 5¡ }$|$D ]\}%}&| d|&j6|&j7|%¡ d}q| 8¡ }'|'r>|
 )d
¡ |
 )d¡ |
 )d
¡ |'D ]}| #d|¡ |
 )d|¡ q.|rb|
 )d
¡ |
 )d¡ |
 )d
¡ t9|j:ƒD ]\}(})|
 )d|(|)¡ qU| ;¡ }*|*D ]}&| #d|&j6|&j7|&j<¡ qht=|'ƒdkrƒ| #d¡ t=|'ƒdkr’| #d t=|'ƒ¡ t=|*ƒdkrž| #d!¡ t=|*ƒdkr­| #d"t=|*ƒ¡ |r|
 )d
¡ |
 )d#¡ |
 )d
¡ t>|j?ƒ}+|+ @¡  |+D ]}|
 )d$|d% d&d„ |j?| D ƒ¡¡ qÊ|
 )d
¡ |
 )d'¡ |
 )d
¡ t>|jAƒ},|, @¡  |,D ]}-|
 )d$|-d% d(d„ |jA|- D ƒ¡¡ qú|
 )d
¡ |r:| B¡ }.|.D ]	}/| #d)|/¡ q| C¡ }0|0D ]}1| d*|1¡ d}q.| D¡ }2|2D ]\}}| d+||¡ d}q@|rVtdƒ‚|r_| Ed,| ¡ tF|| |
ƒ}|ržt=|jGƒ}3|3dkrx| #d-¡ n|3dkrƒ| #d.|3¡ t=|jHƒ}4|4dkr“| #d/¡ n|4dkrž| #d0|4¡ |r3|jGs©|jHr3|
 #d
¡ |
 #d1¡ |
 #d
¡ |jGD ]\}5}6}7|
 #d2|6|5|7¡ q»tIƒ }8|jHD ]<\}5}9}:|5tJ|9ƒtJ|:ƒf|8v rãqÐ|
 #d3|5|9¡ |
 #d4|:|5¡ | #d3|5|9¡ | #d4|:|5¡ |8 K|5tJ|9ƒtJ|:ƒf¡ qÐg };|jHD ] \}5}9}:|:jLs1|:|;vr1|
 #d5|:¡ | #d5|:¡ |; M|:¡ q|r\z	| N||	|¡ W n t'y[ } z| #d6||f ¡ W Y d }~nd }~ww |r„z| O||¡ W n t'yƒ } z| #d6||f ¡ W Y d }~nd }~ww | |j¡ t||j ƒ}|j!a!|S )7Nr   c                    s   g | ]	}|t ˆ |ƒf‘qS r
   )rl   )rY   r5  ©rO  r
   r   rZ   ¡  s    zyacc.<locals>.<listcomp>Ú__file__r   rÞ  rð   r¬   rB  r£   Ú__package__r  )rs  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%sTz;%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   G  ó    z*Nonterminals, with rules where they appearc                 S   r'  r
   rL   rX   r
   r
   r   rZ   O  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)PÚ
tab_moduler   r˜   r™   ÚdirÚdictrG  r%  rÜ  r\   rD  rE  rÅ  r³   rF  rl   rU  rV  Údirnamer²   rM   rê  rò  r   r)   r^  r@  r_  rP  r`  rê   r{   rë  r    rá  r   r?  rS  rX  rÄ  r!   r   Ú__version__rù  rø   rì  r  r	  r÷   rr  r  r  r  r&  rÒ   rÓ   r(  r  rú   r+  r#   r-   r   rü   r  rý   r  r%  r.  r   rp  rz  r{  r  r0   r  rí   rŠ   rÍ  rÓ  )<r}  r   rO  rÇ  r  Úcheck_recursionÚoptimizeÚwrite_tablesÚ	debugfilerÈ  ÚdebuglogÚerrorlogÚ
picklefileÚ_itemsrê   Úsrcfilerý  ÚpkgnameÚpkgÚpinfor^  ÚlrÚread_signaturerD   rÌ  Úerrorsrr  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¬  
€



€ÿ€€ÿ
€þ


€ÿ€þ

€€þ











(



(










€€ÿ€ÿrL  )<rþ  rD  r˜   Úos.pathrU  r   Úbase64r8   r-  rI  Ú	yaccdebugÚ
debug_filer)  Ú
default_lrr·   r–   r.   rÐ  Úversion_infoÚ
basestringr
  rM   Úmaxsizeri  Ú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?  r@  rg  ra  ro  rp  rÜ  ré  rê  rL  r
   r
   r
   r   Ú<module>   s–   =
4       
mH.   rT
      )  
þ