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

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

    parser = yacc.yacc()
c                   C      t t t S r   )warningswarn_warnmsg_errokr
   r
   r
   r   errok      
r<   c                   C   r7   r   )r8   r9   r:   _restartr
   r
   r
   r   restart   r=   r?   c                   C   r7   r   )r8   r9   r:   _tokenr
   r
   r
   r   token   r=   rA   c                 C   s<   |j a|ja|ja| |}zbbbW |S  ty   Y |S w r   )r<   r;   rA   r@   r?   r>   	NameError)	errorfuncrA   parserr1   r
   r
   r   call_errorfunc   s   rE   c                   @   r    )
YaccSymbolc                 C      | j S r   r/   r	   r
   r
   r   __str__      zYaccSymbol.__str__c                 C   s   t | S r   strrI   r
   r
   r   __repr__   s   zYaccSymbol.__repr__N)r   r   r   rJ   rN   r
   r
   r
   r   rF      r'   rF   c                   @   sn   e Zd ZdddZdd Zdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd ZdS )YaccProductionNc                 C   s   || _ || _d | _d | _d S r   )slicestacklexerrD   )r	   srQ   r
   r
   r   r         
zYaccProduction.__init__c                 C   s>   t |trdd | j| D S |dkr| j| jS | j| jS )Nc                 S      g | ]}|j qS r
   value.0rS   r
   r
   r   
<listcomp>       z.YaccProduction.__getitem__.<locals>.<listcomp>r   )
isinstancerP   rW   rQ   r	   nr
   r
   r   __getitem__   s
   
zYaccProduction.__getitem__c                 C      || j | _d S r   )rP   rW   )r	   r^   vr
   r
   r   __setitem__      zYaccProduction.__setitem__c                 C   s   dd | j || D S )Nc                 S   rU   r
   rV   rX   r
   r
   r   rZ      r[   z/YaccProduction.__getslice__.<locals>.<listcomp>)rP   )r	   ijr
   r
   r   __getslice__   r   zYaccProduction.__getslice__c                 C   
   t | jS r   )r-   rP   rI   r
   r
   r   __len__   r   zYaccProduction.__len__c                 C      t | j| ddS )Nlinenor   getattrrP   r]   r
   r
   r   rj         zYaccProduction.linenoc                 C   r`   r   )rP   rj   )r	   r^   rj   r
   r
   r   
set_lineno  rc   zYaccProduction.set_linenoc                 C   ,   t | j| dd}t | j| d|}||fS )Nrj   r   	endlinenork   )r	   r^   	startlineendliner
   r
   r   linespan     zYaccProduction.linespanc                 C   ri   )Nlexposr   rk   r]   r
   r
   r   ru     rm   zYaccProduction.lexposc                 C   r`   r   )rP   ru   )r	   r^   ru   r
   r
   r   
set_lexpos  rc   zYaccProduction.set_lexposc                 C   ro   )Nru   r   	endlexposrk   )r	   r^   startposendposr
   r
   r   lexspan  rt   zYaccProduction.lexspanc                 C   s   t r   )SyntaxErrorrI   r
   r
   r   r     r%   zYaccProduction.errorr   )r   r   r   r   r_   rb   rf   rh   rj   rn   rs   ru   rv   rz   r   r
   r
   r
   r   rO      s    
rO   c                   @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdddZdddZ	dddZ
dddZdS )LRParserc                 C   s0   |j | _|j| _|j| _|| _|   d| _d S NT)	lr_productionsproductions	lr_actionactionlr_gotogotorC   set_defaulted_stateserrorok)r	   ZlrtabZerrorfr
   r
   r   r      s   
zLRParser.__init__c                 C   s
   d| _ d S r}   )r   rI   r
   r
   r   r<   (  r   zLRParser.errokc                 C   s@   | j d d = | jd d = t }d|_| j| | j d d S )N$endr   )
statestacksymstackrF   r/   append)r	   symr
   r
   r   r?   +  s   zLRParser.restartc                 C   sP   i | _ | j D ]\}}t| }t|dkr%|d dk r%|d | j |< qd S N   r   )defaulted_statesr   itemslistvaluesr-   )r	   stateactionsrulesr
   r
   r   r   ;  s   zLRParser.set_defaulted_statesc                 C   s
   i | _ d S r   )r   rI   r
   r
   r   disable_defaulted_statesB  r   z!LRParser.disable_defaulted_statesNFc                 C   sV   |st rt|trttj}| |||||S |r"| |||||S | |||||S r   )		yaccdevelr\   intr   sysstderr
parsedebugparseoptparseopt_notrack)r	   inputrR   r   tracking	tokenfuncr
   r
   r   parseE  s   

zLRParser.parsec                  C   s  d }g }| j }| j}	| j}
| j}td }d}|d |s&ddlm} |j}||_| |_	|d ur5|
| |d u r=|j}n|}|| _g }|| _g }|| _||_d }|d t }d|_|| d}	 |d |d| ||vr|s|s{| }n| }|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   rw   zResult : %sr   FrW   zDone   : Returning %szPLY: PARSE DEBUG ENDzError  : %sc                 S   rU   r
   rH   r   r
   r
   r   rZ   D  r[   rR   rj   (yacc: Syntax error at line %d, token=%s
yacc: Syntax error, token=%s yacc: Parse error in input. EOF
ru   yacc: internal parser error!!!
)0r   r   r   r   rO   r   r   r   rR   rD   r   rA   r   r   rQ   r   rF   r/   r   popgetjoinrM   lstripr#   r-   rW   rj   ru   rl   rp   rw   rP   r   callabler4   r{   extenderror_countr   r   rC   hasattrrE   r   r   r   RuntimeError r	   r   rR   r   r   r   	lookaheadlookaheadstackr   r   prodr   pslice
errorcountr   	get_tokenr   r   errtokenr   r   ltypetppnameplentargt1r^   r3   tokrj   r
   r
   r   r   ^  s  




*





$










*

zLRParser.parsedebugc                  C   s\  d }g }| j }| j}	| j}
| j}td }d}|s!ddlm} |j}||_| |_|d ur0|	| |d u r8|j
}n|}|| _
g }|| _g }|| _||_d }|d t }d|_|| d}	 ||vr|sw|sk| }n| }|swt }d|_|j}|| |}n|| }|d ur|dkr|| |}|| d }|r|d8 }q^|dk r|
|  }|j}|j}t }||_d |_|rI|| d d  }||d< |r|d }|j|_|j|_|d }t|d|j|_t|d|j|_||_z(|| d = || _|| || d = || |	|d  | }|| W n- tyG   || ||dd  |  |d }d	|_d	|_|}t }d
| _!Y nw q^|rT|j|_|j|_|g}||_z|| _|| || |	|d  | }|| W n$ ty   || |  |d }d	|_d	|_|}t }d
| _!Y nw q^|dkr|d }t|dd }|S |d u r|dks| j!rt }d
| _!|}|jdk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   rw   r   FrW   rR   rj   r   r   r   ru   r   ))r   r   r   r   rO   r   r   rR   rD   r   rA   r   r   rQ   r   rF   r/   r   r   r#   r-   rW   rj   ru   rl   rp   rw   rP   r   r   r{   r   r   r   rC   r   rE   r   r   r   r   r   r
   r
   r   r     s^  



















zLRParser.parseoptc                 C   s  d }g }| j }| j}	| j}
| j}td }d}|s!ddlm} |j}||_| |_|d ur0|	| |d u r8|j
}n|}|| _
g }|| _g }|| _||_d }|d t }d|_|| d}	 ||vr|sw|sk| }n| }|swt }d|_|j}|| |}n|| }|d ur|dkr|| |}|| d }|r|d8 }q^|dk ro|
|  }|j}|j}t }||_d |_|r'|| d d  }||d< ||_z(|| d = || _|| || d = || |	|d  | }|| W n- ty%   || ||dd  |  |d }d|_d|_|}t}d| _Y nw q^|g}||_z|| _|| || |	|d  | }|| W n$ tym   || |  |d }d|_d|_|}t}d| _Y nw q^|dkr|d }t|d	d }|S |d u r_|dks| j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   r{   r   r   r   rl   rC   r   rE   rj   r   r   r   rp   ru   rw   r   )r	   r   rR   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r^   r3   r   rj   r
   r
   r   r     s>  



















zLRParser.parseopt_notrack)NNFFN)r   r   r   r   r<   r?   r   r   r   r   r   r   r
   r
   r
   r   r|     s    

  
]  4r|   z^[a-zA-Z0-9_-]+$c                   @   sR   e Zd ZdZdddZdd Zd	d
 Zdd Zdd Zdd Z	dd Z
dd ZdS )
Productionr   rightr   Nr   c           	      C   s   || _ t|| _|| _|| _d | _|| _|| _|| _t	| j| _	g | _
| jD ]}|| j
vr3| j
| q&g | _d | _| jrKd| j d| jf | _d S d| j  | _d S N%s -> %sr   z%s -> <empty>)r#   tupler   numberfuncr   filelineprecr-   usymsr   lr_itemslr_nextr   rM   )	r	   r   r#   r   
precedencer   r   r   rS   r
   r
   r   r   !  s&   


zProduction.__init__c                 C   rG   r   rL   rI   r
   r
   r   rJ   ?  rK   zProduction.__str__c                 C      dt |  d S )NzProduction()rL   rI   r
   r
   r   rN   B  rc   zProduction.__repr__c                 C   rg   r   )r-   r   rI   r
   r
   r   rh   E  r   zProduction.__len__c                 C   s   dS Nr   r
   rI   r
   r
   r   __nonzero__H  r%   zProduction.__nonzero__c                 C   
   | j | S r   )r   r	   indexr
   r
   r   r_   K  r   zProduction.__getitem__c              	   C   s   |t | jkr	d S t| |}z| j|j|d   |_W n ttfy)   g |_Y nw z|j|d  |_W |S  tyB   d |_Y |S w r   )r-   r   LRItem	Prodnameslr_after
IndexErrorKeyError	lr_before)r	   r^   r   r
   r
   r   lr_itemO  s   

zProduction.lr_itemc                 C      | j r|| j  | _d S d S r   r   r   r	   pdictr
   r
   r   bind_     zProduction.bind)r   Nr   r   )r   r   r   reducedr   rJ   rN   rh   r   r_   r   r   r
   r
   r
   r   r     s    
r   c                   @   ,   e Zd Zdd Zdd Zdd Zdd Zd	S )
MiniProductionc                 C   s.   || _ || _|| _d | _|| _|| _|| _d S r   )r#   r-   r   r   r   r   rM   )r	   rM   r#   r-   r   r   r   r
   r
   r   r   h  s   
zMiniProduction.__init__c                 C   rG   r   rL   rI   r
   r
   r   rJ   q  rK   zMiniProduction.__str__c                 C   s
   d| j  S )NzMiniProduction(%s)rL   rI   r
   r
   r   rN   t  r   zMiniProduction.__repr__c                 C   r   r   r   r   r
   r
   r   r   x  r   zMiniProduction.bindN)r   r   r   r   rJ   rN   r   r
   r
   r
   r   r   g  s
    	r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )r   c                 C   sZ   |j | _ t|j| _|j| _|| _i | _| j|d t| j| _t| j| _|j	| _	d S )N.)
r#   r   r   r   lr_index
lookaheadsinsertr   r-   r   )r	   r   r^   r
   r
   r   r     s   zLRItem.__init__c                 C   s.   | j rd| jd| j f }|S d| j }|S r   )r   r#   r   )r	   rS   r
   r
   r   rJ     s
   
zLRItem.__str__c                 C   r   )NzLRItem(r   rL   rI   r
   r
   r   rN     rc   zLRItem.__repr__N)r   r   r   r   rJ   rN   r
   r
   r
   r   r     s    r   c                 C   s<   t | d }|dkr| | |v r| | S |d8 }|dks
d S r   )r-   )symbols	terminalsrd   r
   r
   r   rightmost_terminal  s   r   c                   @   r(   )GrammarErrorNr*   r
   r
   r
   r   r     r+   r   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd$ddZd%ddZdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zd%d d!Zd"d# Zd	S )&Grammarc                 C   sb   d g| _ i | _i | _i | _|D ]}g | j|< qg | jd< i | _i | _i | _i | _t | _	d | _
d S Nr   )Productionsr   Prodmap	TerminalsNonterminalsFirstFollow
PrecedencesetUsedPrecedenceStart)r	   r   termr
   r
   r   r     s   

zGrammar.__init__c                 C   rg   r   )r-   r   rI   r
   r
   r   rh     r   zGrammar.__len__c                 C   r   r   )r   r   r
   r
   r   r_     r   zGrammar.__getitem__c                 C   sL   | j d gks
J d|| jv rtd| |dvrtd||f| j|< d S )Nz2Must call set_precedence() before add_production()z,Precedence already specified for terminal %r)leftr   nonassocz:Associativity must be one of 'left','right', or 'nonassoc')r   r   r   )r	   r  assoclevelr
   r
   r   set_precedence  s   
zGrammar.set_precedenceNr   r   c              	   C   s  || j v rtd|||f |dkrtd|||f t|s)td|||f t|D ]K\}}|d dv rez$t|}t|dkrLtd||||f || j vrVg | j |< |||< W q- tyd   Y nw t|sx|d	krxtd
||||f q-d	|v r|d d	k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-   r{   r   r   r  addr   r   r   r   r   r   r   r   r   r   )r	   prodnamesymsr   r   r   r^   rS   cZprecnameZprodprecmapmZpnumberr   r   r
   r
   r   add_production  s|   











zGrammar.add_productionc                 C   sT   |s| j d j}|| jvrtd| tdd|g| j d< | j| d || _d S )Nr   zstart symbol %s undefinedr   S')r   r#   r   r   r   r   r  )r	   startr
   r
   r   	set_startc  s   

zGrammar.set_startc                    s>    fdd t   jd jd  fddjD S )Nc                    sB   | v rd S  |  j| g D ]}|jD ]} | qqd S r   )r  r   r   r   )rS   r   r1   mark_reachable_from	reachabler	   r
   r   r  v  s   


z5Grammar.find_unreachable.<locals>.mark_reachable_fromr   c                    s   g | ]}| vr|qS r
   r
   rX   )r  r
   r   rZ     s    z,Grammar.find_unreachable.<locals>.<listcomp>)r   r   r   r   rI   r
   r  r   find_unreachables  s   zGrammar.find_unreachablec                 C   s   i }| j D ]}d||< qd|d< | jD ]}d||< q	 d}| j D ]'\}}|D ] }|jD ]
}|| s7d} nq-d}|rH|| sFd||< d} nq(q"|sMnqg }	| D ]\}}
|
sn|| jvri|| j vri|dkriqT|	| qT|	S )NTr   Fr   )r   r   r   r   r   r   )r	   Z
terminatesr   r^   some_changeplr   rS   Z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	   Z
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	   Z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	   ZunusedZ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   xZ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   r(  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   r)  r   r   r#   r  r   r(  r   r-   )
r	   r  kdidaddr   rd   BZfstZhasemptyr   r
   r
   r   compute_followS  sD   

zGrammar.compute_followc              
   C   s   | j D ]_}|}d}g }	 |t|krd }n8t||}z| j|j|d   |_W n ttfy5   g |_Y nw z
|j|d  |_W n tyL   d |_Y nw ||_	|sSn|
| |}|d7 }q||_qd S Nr   Tr   )r   r-   r   r   r   r   r   r   r   r   r   r   )r	   r   Zlastlrird   r   Z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$  r(  r)  r-  r/  r
   r
   r
   r   r     s"    $

T@#
%;r   c                   @   r(   )VersionErrorNr*   r
   r
   r
   r   r0    r+   r0  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   modulesZ_tabversion__tabversion__r0  Z
_lr_actionr   Z_lr_gotor   r~   Z_lr_productionsr   r   Z
_lr_methodr2  Z_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   rbr4  )cPickleImportErrorpickleospathexistsopenloadr9  r0  r2  r   r   r~   r   r   close)r	   filenamer?  Zin_fZ
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   r;  rH  rI  r
   r
   r
   r   r1    s
    r1  c              	   C   sL   i }| D ]}d||< qg }i }| D ]}|| dkr#t ||||| || q|S r"  )traverse)XRFPNr'  rQ   Fr
   r
   r   digraph	  s   
rP  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-   rJ  minr   MAXINTr   )r'  rN  rQ   rO  rK  rL  rM  drelyaelementr
   r
   r   rJ    s2   
rJ  c                   @   r(   )	LALRErrorNr*   r
   r
   r
   r   rX  +  r+   rX  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)ZSLRr   zUnsupported method %sr   )rX  grammarr2  r!   logr   r   r   r~   lr_goto_cachelr0_cidhash
_add_countZsr_conflictZrr_conflict	conflictssr_conflictsrr_conflictsr/  r)  r-  lr_parse_table)r	   rZ  methodr[  r
   r
   r   r   6  s,   


zLRGeneratedTable.__init__c                 C   sp   |  j d7  _ |d d  }d}|r6d}|D ]}|jD ]}t|dd| j kr&q||j | j |_d}qq|s|S )Nr   TF	lr0_addedr   )r^  r   rl   r   r   rd  )r	   IJr+  re   r'  r
   r
   r   lr0_closure[  s   
zLRGeneratedTable.lr0_closurec           	      C   s   | j t||f}|r|S | j |}|si }|| j |< g }|D ]$}|j}|rE|j|krE|t|}|s>i }||t|< || |}q!|d}|s]|rY| |}||d< n||d< || j t||f< |S )Nr   )r\  r   r0   r   r   r   rg  )	r	   re  r'  grS   gsr   r^   s1r
   r
   r   lr0_gotou  s4   




zLRGeneratedTable.lr0_gotoc           	      C   s   |  | jjd jgg}d}|D ]}|| jt|< |d7 }qd}|t|k rh|| }|d7 }i }|D ]}|jD ]}d ||< q7q2|D ] }| ||}|rRt|| jv rSqAt|| jt|< |	| qA|t|k s&|S )Nr   r   )
rg  rZ  r   r   r]  r0   r-   r   rk  r   )	r	   Crd   re  ZasymsiirS   r'  rh  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   rZ  r   r-   r  r#   r   )r	   nullableZ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   rZ  r   r   )r	   rl  transZstatenor   r   r   r
   r
   r   find_nonterminal_transitions  s   
z-LRGeneratedTable.find_nonterminal_transitionsc           
      C   s   |\}}g }|  || |}|D ]!}|j|jd k r1|j|jd  }	|	| jjv r1|	|vr1||	 q|dkrF|| jjd jd krF|d |S )Nr   r   r   )rk  r   r-   r   rZ  r   r   r   )
r	   rl  rq  ro  r   rN  termsrh  r   rV  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   )rk  r]  r   r0   r   r-   r   r   )r	   rl  rq  emptyrT  r   rN  rh  re   r   rV  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   rZ  r   r   rk  r]  r   r0   )r	   rl  rq  ro  ZlookdictZincludedictZdtransr   r   rN  ZlookbZincludesr   r   re   Zlirh  r1   rd   r
   r
   r   compute_lookback_includesD	  sb   






z*LRGeneratedTable.compute_lookback_includesc                    s0    fdd} fdd}t |||}|S )Nc                         | S r   )rt  r'  rl  ro  r	   r
   r   <lambda>	      z4LRGeneratedTable.compute_read_sets.<locals>.<lambda>c                    rx  r   )rv  ry  rz  r
   r   r{  	  r|  rP  )r	   rl  ntransro  rM  rL  rO  r
   rz  r   compute_read_sets	  s   z"LRGeneratedTable.compute_read_setsc                    s(   fdd} fdd}t |||}|S )Nc                    s    |  S r   r
   ry  )readsetsr
   r   r{  	  s    z6LRGeneratedTable.compute_follow_sets.<locals>.<lambda>c                    s     | g S r   )r   ry  )inclsetsr
   r   r{  	  s    r}  )r	   r~  r  r  rM  rL  rO  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	   Z	lookbacksZ	followsetrq  Zlbr   r   r   rV  r
   r
   r   add_lookaheads	  s   

zLRGeneratedTable.add_lookaheadsc                 C   sP   |   }| |}| |||}| |||\}}| |||}| || d S r   )rp  rr  r  rw  r  r  )r	   rl  ro  rq  r  ZlookdZincludedZ
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) rZ  r   r   r   r   r[  r   r2  rn  r  r   r-   r   r#   r   r   r   r   r   r`  r   r   ra  rX  r   r   rk  r]  r0   r   r   r   )$r	   r   r   r   r   r[  Zactionprl  stre  ZactlistZ	st_actionZ
st_actionpZst_gotor   ZlaheadsrV  r1   ZsprecZslevelZrprecZrlevelZoldpppZchosenpZrejectprd   rh  re   Z	_actprintr  Znot_usedZnkeysrm  rS   r^   r
   r
   r   rb  	  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wz
# %s
# This file is automatically generated. Do not edit.
# pylint: disable=W,C,R
_tabversion = %r

_lr_method = %r

_lr_signature = %r
    r   r   z
_lr_action_items = {z%r:([z%r,z],[z]),z}
z
_lr_action = {}
for _k, _v in _lr_action_items.items():
   for _x,_y in zip(_v[0],_v[1]):
      if not _x in _lr_action:  _lr_action[_x] = {}
      _lr_action[_x][_k] = _y
del _lr_action_items
z
_lr_action = { z(%r,%r):%r,z
_lr_goto_items = {z
_lr_goto = {}
for _k, _v in _lr_goto_items.items():
   for _x, _y in zip(_v[0], _v[1]):
       if not _x in _lr_goto: _lr_goto[_x] = {}
       _lr_goto[_x][_k] = _y
del _lr_goto_items
z
_lr_goto = { z_lr_productions = [
z  (%r,%r,%d,%r,%r,%d),
z  (%r,%r,%d,None,None,None),
z]
)r\   r5  r6  IOErrorsplitr@  rA  r   rC  r   basenamer9  r2  r   r   r   r   r   r~   r   rM   r#   r-   r   r   rE  )r	   	tabmodule	outputdirrG  ZbasemodulenamerF  r   Zsmallerr   rS   ndr#   ra   rd   r*  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)r=  r>  r?  rC  dumpr9  pickle_protocolr2  r   r   r~   r   r   rM   r#   r-   r@  rA  r  r   r   )r	   rF  rG  r?  outfZoutpr   r
   r
   r   pickle_table"  s$   
, "zLRGeneratedTable.pickle_table)r   N)r   r   r   )r   r   r   r   rg  rk  rn  rp  rr  rt  rv  rw  r  r  r  r  rb  r  r  r
   r
   r
   r   rY  5  s$    
%#8+P 
B{rY  c                 C   s0   t | }|j }|j|jkr||j |S r   )r   	_getframe	f_globalscopyf_localsupdate)Zlevelsr   Zldictr
   r
   r   get_caller_module_dictE  s
   

r  c              
   C   s   g }|   }d }|}|D ]j}|d7 }| }|sqzD|d dkr3|s*td||f |}	|dd  }
n |d }	|	}|dd  }
|d }|dkrS|dkrStd||f ||||	|
f W q tye     tyv   td	||| f w |S )
Nr   r   |z%s:%d: Misplaced '|'   :z::=z!%s:%d: Syntax error. Expected ':'z%s:%d: Syntax error in rule %r)
splitlinesr  r{   r   	Exceptionstrip)docr   r   rZ  ZpstringsZlastpZdlineZpsr   r  r  Zassignr
   r
   r   parse_grammarQ  s8   r  c                   @   s   e Zd Zd ddZdd Zdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )!ParserReflectNc                 C   sN   || _ d | _d | _d | _t | _g | _d| _|d u r"tt	j
| _d S || _d S )NF)r   r  
error_functokensr   r8  rZ  r   r   r   r   r[  )r	   r   r[  r
   r
   r   r   {  s   
zParserReflect.__init__c                 C   s,   |    |   |   |   |   d S r   )	get_startget_error_func
get_tokensget_precedenceget_pfunctionsrI   r
   r
   r   get_all  s
   zParserReflect.get_allc                 C   s6   |    |   |   |   |   |   | jS r   )validate_startvalidate_error_funcvalidate_tokensvalidate_precedencevalidate_pfunctionsvalidate_modulesr   rI   r
   r
   r   validate_all  s   zParserReflect.validate_allc              	   C   s   g }z9| j r|| j  | jr|ddd | jD  | jr)|d| j | jD ]}|d r9||d  q,W n ttfyF   Y nw d|S )Nr   c                 S   s   g | ]}d  |qS r  )r   )rY   r   r
   r
   r   rZ     r   z+ParserReflect.signature.<locals>.<listcomp>r   r   )r  r   r   r   r  pfuncs	TypeError
ValueError)r	   partsr   r
   r
   r   rG    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compiler8  inspectgetsourcelinesr  r  r  groupr   getsourcefiler[  r   )r	   Zfrer:  linesZlinenZ	counthashr   r  r#   prevrF  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_typesr[  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\   r5  FunctionType
MethodTyper[  r   __code__co_firstlinenoco_filenamer  	getmoduler8  r  co_argcount)r	   ismethodZelineZefiler:  Zargcountr
   r
   r   r    s$   


z!ParserReflect.validate_error_funcc                 C   sr   | j d}|s| jd d| _d S t|ttfs%| jd d| _d S |s2| jd d| _d S t|| _d S )Nr  zNo token list is definedTztokens must be a list or tupleztokens is empty)	r   r   r[  r   r\   r   r   sortedr  )r	   r  r
   r
   r   r    s   zParserReflect.get_tokensc                 C   sV   d| j v r| jd d| _d S t }| j D ]}||v r#| jd| || qd S )Nr   z.Illegal token name 'error'. Is a reserved wordTzToken %r multiply defined)r  r[  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   r[  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   )Z
p_functionr
   r
   r   r{  F  s
   
z.ParserReflect.get_pfunctions.<locals>.<lambda>)key)r   r   
startswithr\   r5  r  r  rl   r  r  r  r  r   __doc__sortr  )r	   Zp_functionsr#   itemr   r:  r
   r
   r   r  9  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  Zt_r  z%r not defined as a functionr   r  z9%s:%d: Possible grammar rule %r defined without p_ prefix)r-   r  r[  r   r  r  r   r\   r5  r  r  r  r   r  r   r  r   r{   rM   r8  r  r   r  r  __func__r  r  r  r   rZ  )r	   rZ  r   r:  r#   r  r   r   ZreqargsZparsed_grh  r  r^   ra   r
   r
   r   r  N  sp   




z!ParserReflect.validate_pfunctionsr   )r   r   r   r   r  r  rG  r  r  r  r  r  r  r  r  r  r  r  r
   r
   r
   r   r  z  s     

r  c           <         sz	  |d u rt }|r
d}|d u rttj} rO fddt D }t|}d|vr2tj|d  j|d< d|vrNd|v rNttj|d  drNtj|d  j	|d< nt
d}|	d u rt|tjra|j}n&d|vrj|d }n|d}d|d d	 }td
|  ttj| dd}tj|}	|d}|rt|trd|vr|d | }|d ur||d< t||d}|  |jrtd| }zFt }|r||}n||}|s||krz||j  t!||j"}|j#a#|W W S  t$y } z|%d| W Y d }~nd }~ww W n# t&y  } z|%t| W Y d }~nd }~w t'y)   Y nw |
d u rc|r`ztt(tj|	|d}
W n" t)y_ } z|%d||f  t* }
W Y d }~nd }~ww t* }
|
+dt, d}|- rttd|j"s}|%d t.|j/}|j0D ])\}}}z
|1||| W q t2y } z|%d| W Y d }~qd }~ww |j3D ]2\}}|\} }!}"}#z|4|"|#|| |! W q t2y } z|d| d}W Y d }~qd }~ww z|d u r|5|j6 n|5| W n t2y } z|t| d}W Y d }~nd }~ww |rtd|7 }$|$D ]\}%}&|d|&j8|&j9|% d}q"|: }'|'r\|
+d |
+d |
+d |'D ]}|%d| |
+d| qL|r|
+d |
+d |
+d t;|j<D ]\}(})|
+d|(|) qs|= }*|*D ]}&|%d|&j8|&j9|&j> qt?|'dkr|%d t?|'dkr|%d t?|' t?|*dkr|%d! t?|*dkr|%d"t?|* |r3|
+d |
+d# |
+d t@|jA}+|+B  |+D ]}|
+d$|d%d&d |jA| D  q|
+d |
+d' |
+d t@|jC},|,B  |,D ]}-|
+d$|-d%d(d |jC|- D  q|
+d |rX|D }.|.D ]	}/|%d)|/ q<|E }0|0D ]}1|d*|1 d}qL|F }2|2D ]\}}|d+|| d}q^|rttd|r}|Gd,|  tH|| |
}|rt?|jI}3|3dkr|%d- n|3dkr|%d.|3 t?|jJ}4|4dkr|%d/ n|4dkr|%d0|4 |rQ|jIs|jJrQ|
%d |
%d1 |
%d |jID ]\}5}6}7|
%d2|6|5|7 qtK }8|jJD ]<\}5}9}:|5tL|9tL|:f|8v rq|
%d3|5|9 |
%d4|:|5 |%d3|5|9 |%d4|:|5 |8M|5tL|9tL|:f qg };|jJD ] \}5}9}:|:jNsO|:|;vrO|
%d5|: |%d5|: |;O|: q0|rz|P||	| |tjv rftj|= W n t)y } z|%d6||f  W Y d }~nd }~ww |rz|Q|| 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   r*  r:  r
   r   rZ     s    zyacc.<locals>.<listcomp>__file__r   __package__r  r   r   r3  r   r  )r[  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   M      z*Nonterminals, with rules where they appearc                 S   r  r
   rL   rX   r
   r
   r   rZ   U  r  zSymbol %r is unreachablez)Infinite recursion detected for symbol %rz0Precedence rule %r defined for unknown symbol %rzGenerating %s tablesz1 shift/reduce conflictz%d shift/reduce conflictsz1 reduce/reduce conflictz%d reduce/reduce conflictsz
Conflicts:z7shift/reduce conflict for %s in state %d resolved as %sz;reduce/reduce conflict in state %d resolved using rule (%s)zrejected rule (%s) in state %dzRule (%s) is never reducedzCouldn't create %r. %s)R
tab_moduler   r   r   dirdictr8  r  r   r  r  r\   r5  r6  r  r   r7  rl   r@  rA  dirnamer   rM   r  r  r   r)   rG  r1  rH  r;  rI  r   r|   r  r   r  r   r0  r>  rC  r  r!   r   __version__r  r   r  r  r  r   rZ  r  r  r  r   r   r   r!  r  r   r#  r#   r-   r   r   r  r   r  r  r$  r   rY  r`  ra  r   r0   r  r   r   r  r  )<rc  r   r:  r  r  Zcheck_recursionoptimizeZwrite_tablesZ	debugfiler  ZdebuglogZerrorlogZ
picklefileZ_itemsr   srcfiler  ZpkgnamepkgZpinforG  lrZread_signaturerD   r  errorsrZ  r  r  r  funcnameZgramr   r   r  r  r   r   r   r!  r^   r   r#  rs  ZnontermsZnontermZunreachableur  infZunused_precZnum_srZnum_rrr   r   
resolutionalready_reportedruleZrejectedZwarned_neverr
   r  r   yacc  s  






















(



(










r  );r  r5  r   Zos.pathr@  r  r8   r  r9  Z	yaccdebugZ
debug_filer  Z
default_lrr   r   r.   r  version_info
basestringr  rM   maxsizerR  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   r0  r1  rP  rJ  rX  rY  r  r  r  r  r
   r
   r
   r   <module>   s   =
7       
mH.   rT
      )  
