o
    ,׾gk                    @   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
   \/var/www/html/backend_erp/backend_erp_env/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| }|st }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'rt&}d| _'|}|jdkrsd }| j)r|rt*|d s||_|| _!t+| j)|| }| j'r|}d }qcn2|rt*|d!r|j}nd}|rt,j-.d"||jf  nt,j-.d#|j  n
t,j-.d$ d S t&}t|dkr|jdkrd }d }d}|d d = qc|jdkrd 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rd }| j"r|rt#|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rt}d| _|}|jdkrd }| jr|rt|d
s||_|| _t | j|| }| jr|}d }q^n2|rt|dr|j!}nd}|rt"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rtd||f |d d	krtd||f |d }	| j	|	}
|
st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rg | j|< |D ]$}|| j v r
| j | | q|| jvrg | j|< | j| | qt||||
|||}| 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 %%preczH%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rt||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rqd}||jk r|j| |j|d  krn|d }||jk s|
||f qq|D ]}||vrg ||< || ||	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rd ||< 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
||  qtd| |j
 ||< |||< ||j
  jd7  _qq[|j}|j|d  }|| j jv rG| |	|}| jt|d}|dkrG|
||d| f ||}|d ur?|dkr||krt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 rd | |"< 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 }zt|d}|	dtj
|t| j|f  d}|ri }| 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 ]!\}}||}|sg g f}|||< |d |	 |d | qq|	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 sw   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 rt| 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	rt|tjtj	frq|d
rq|d	r|dkr| jd| t|tjr|j
jdkst|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 qw 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}|rt	|trd|vr|d | }|d ur||d< t||d}|  |jrtd| }zDt }|r||}n||}|s||krz||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 }~qd }~ww z|d u r|3|j4 n|3| W n t0y } z|t| d}W Y d }~nd }~ww |rt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|| |
}|rt=|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 qtI }8|jHD ]<\}5}9}:|5tJ|9tJ|:f|8v rq|
#d3|5|9 |
#d4|:|5 |#d3|5|9 |#d4|:|5 |8K|5tJ|9tJ|:f qg };|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 |rz|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
      )  
