ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     3

  \5                 @   sd   d dl mZmZmZ G dd dejZG dd deZG dd deZG dd	 d	eZ	dddZ
dS )   )grammartokentokenizec               @   s   e Zd ZdS )PgenGrammarN)__name__
__module____qualname__ r	   r	   */usr/lib64/python3.6/lib2to3/pgen2/pgen.pyr      s   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'd d!Zd"d# Zd$d% ZdS )(ParserGeneratorNc             C   sl   d }|d krt |}|j}|| _|| _tj|j| _| j  | j	 \| _
| _|d k	rZ|  i | _| j  d S )N)openclosefilenamestreamr   generate_tokensreadline	generatorgettokenparsedfasstartsymbolfirstaddfirstsets)selfr   r   Zclose_streamr	   r	   r
   __init__   s    zParserGenerator.__init__c             C   s*  t  }t| jj }|j  |j| j |jd| j x.|D ]&}dt|j	 }||j	|< ||j
|< q<W x|D ]}| j| }g }xl|D ]d}g }x6t|jj D ]$\}	}
|j| j||	|j|
f qW |jr|jd|j|f |j| qW |jj| || j||f|j|j	| < qlW |j	| j |_|S )N       )r   listr   keyssortremover   insertlensymbol2numberZnumber2symbolsortedarcsitemsappend
make_labelindexisfinalstates
make_firststart)r   cnamesnameidfar+   stater%   labelnextr	   r	   r
   make_grammar   s.    




  zParserGenerator.make_grammarc             C   s8   | j | }i }x$t|D ]}| j||}d||< qW |S )Nr   )r   r$   r(   )r   r.   r0   Zrawfirstr   r4   ilabelr	   r	   r
   r,   4   s    
zParserGenerator.make_firstc             C   sb  t |j}|d j r||jkrZ||jkr4|j| S |jj|j| d f ||j|< |S nbtt|d }t|t	sxt
||tjkst
|||jkr|j| S |jj|d f ||j|< |S n|d dkst
|t|}|d j r ||jk r|j| S |jjtj|f ||j|< |S n>tj| }||jkr@|j| S |jj|d f ||j|< |S d S )Nr   "')r8   r9   )r"   Zlabelsisalphar#   Zsymbol2labelr'   getattrr   
isinstanceintAssertionErrortok_nametokensevalkeywordsNAMEr   Zopmap)r   r.   r4   r7   Zitokenvaluer	   r	   r
   r(   =   s<    












zParserGenerator.make_labelc             C   s<   t | jj }|j  x |D ]}|| jkr| j| qW d S )N)r   r   r   r   r   	calcfirst)r   r/   r0   r	   r	   r
   r   k   s
    

zParserGenerator.addfirstsetsc          	   C   s
  | j | }d | j|< |d }i }i }x|jj D ]x\}}|| j kr|| jkrl| j| }|d krtd| n| j| | j| }|j| |||< q0d||< |di||< q0W i }	xJ|j D ]>\}}
x4|
D ],}||	krtd||||	| f ||	|< qW qW || j|< d S )Nr   zrecursion for rule %rr   zArule %s is ambiguous; %s is in the first sets of %s as well as %s)r   r   r%   r&   
ValueErrorrE   update)r   r0   r2   r3   ZtotalsetZoverlapcheckr4   r5   fsetZinverseZitsfirstZsymbolr	   r	   r
   rE   s   s2    









zParserGenerator.calcfirstc       	      C   s   i }d }x| j tjkrx| j tjkr.| j  qW | jtj}| jtjd | j \}}| jtj | j	||}t
|}| j| t
|}|||< |d kr
|}q
W ||fS )N:)typer   	ENDMARKERNEWLINEr   expectrC   OP	parse_rhsmake_dfar"   simplify_dfa)	r   r   r   r0   azr2   ZoldlenZnewlenr	   r	   r
   r      s"    
zParserGenerator.parsec                s   t |tstt |tst fdd} fdd t|||g}x|D ]}i }x<|jD ]2}x,|jD ]"\}}	|d k	rf |	|j|i  qfW qZW xRt|j D ]B\}}
x,|D ]}|j|
krP qW t|
|}|j	| |j
|| qW qJW |S )Nc                s   i } | | |S )Nr	   )r3   base)
addclosurer	   r
   closure   s    
z)ParserGenerator.make_dfa.<locals>.closurec                sL   t | tst| |krd S d|| < x$| jD ]\}}|d kr* || q*W d S )Nr   )r<   NFAStater>   r%   )r3   rT   r4   r5   )rU   r	   r
   rU      s    z,ParserGenerator.make_dfa.<locals>.addclosure)r<   rW   r>   DFAStatenfasetr%   
setdefaultr$   r&   r'   addarc)r   r-   finishrV   r+   r3   r%   Znfastater4   r5   rY   str	   )rU   r
   rP      s&    




zParserGenerator.make_dfac       
      C   s   t d| |g}xt|D ]\}}t d|||kr4dp6d x^|jD ]T\}}||kr^|j|}	nt|}	|j| |d krt d|	  qBt d||	f  qBW qW d S )NzDump of NFA forz  Statez(final) z	    -> %dz    %s -> %d)print	enumerater%   r)   r"   r'   )
r   r0   r-   r\   Ztodor1   r3   r4   r5   jr	   r	   r
   dump_nfa   s    

zParserGenerator.dump_nfac             C   sl   t d| x\t|D ]P\}}t d||jr,dp.d x0t|jj D ]\}}t d||j|f  qBW qW d S )NzDump of DFA forz  Statez(final)r^   z    %s -> %d)r_   r`   r*   r$   r%   r&   r)   )r   r0   r2   r1   r3   r4   r5   r	   r	   r
   dump_dfa   s
    
zParserGenerator.dump_dfac             C   s~   d}xt|rxd}xft |D ]Z\}}xPt|d t|D ]:}|| }||kr4||= x|D ]}|j|| qTW d}P q4W qW qW d S )NTFr   )r`   ranger"   
unifystate)r   r2   Zchangesr1   Zstate_ira   Zstate_jr3   r	   r	   r
   rQ      s    
zParserGenerator.simplify_dfac             C   s   | j  \}}| jdkr||fS t }t }|j| |j| x6| jdkrt| j  | j  \}}|j| |j| q@W ||fS d S )N|)	parse_altrD   rW   r[   r   )r   rR   rS   ZaaZzzr	   r	   r
   rO      s    



zParserGenerator.parse_rhsc             C   sP   | j  \}}x:| jdks*| jtjtjfkrF| j  \}}|j| |}qW ||fS )N([)rh   ri   )
parse_itemrD   rJ   r   rC   STRINGr[   )r   rR   br.   dr	   r	   r
   rg   
  s    
zParserGenerator.parse_altc             C   s   | j dkr>| j  | j \}}| jtjd |j| ||fS | j \}}| j }|dkr`||fS | j  |j| |dkr||fS ||fS d S )Nri   ]+*)ro   rp   )rD   r   rO   rM   r   rN   r[   
parse_atom)r   rR   rS   rD   r	   r	   r
   rj     s    


zParserGenerator.parse_itemc             C   s   | j dkr4| j  | j \}}| jtjd ||fS | jtjtjfkrpt	 }t	 }|j
|| j  | j  ||fS | jd| j| j  d S )Nrh   )z+expected (...) or NAME or STRING, got %s/%s)rD   r   rO   rM   r   rN   rJ   rC   rk   rW   r[   raise_error)r   rR   rS   r	   r	   r
   rq   (  s    
zParserGenerator.parse_atomc             C   sD   | j |ks|d k	r2| j|kr2| jd||| j | j | j}| j  |S )Nzexpected %s/%s, got %s/%s)rJ   rD   rs   r   )r   rJ   rD   r	   r	   r
   rM   9  s    zParserGenerator.expectc             C   sJ   t | j}x"|d tjtjfkr,t | j}qW |\| _| _| _| _| _	d S )Nr   )
r5   r   r   COMMENTNLrJ   rD   Zbeginendline)r   tupr	   r	   r
   r   A  s    
zParserGenerator.gettokenc             G   s^   |r8y|| }W n&   dj |gttt| }Y nX t|| j| jd | jd | jfd S )N r   r   )joinr   mapstrSyntaxErrorr   rv   rw   )r   msgargsr	   r	   r
   rs   H  s     zParserGenerator.raise_error)N)N)r   r   r   r   r6   r,   r(   r   rE   r   rP   rb   rc   rQ   rO   rg   rj   rq   rM   r   rs   r	   r	   r	   r
   r   
   s$   
	.$

r   c               @   s   e Zd Zdd ZdddZdS )rW   c             C   s
   g | _ d S )N)r%   )r   r	   r	   r
   r   S  s    zNFAState.__init__Nc             C   s8   |d kst |tstt |ts$t| jj||f d S )N)r<   r|   r>   rW   r%   r'   )r   r5   r4   r	   r	   r
   r[   V  s    zNFAState.addarc)N)r   r   r   r   r[   r	   r	   r	   r
   rW   Q  s   rW   c               @   s0   e Zd Zdd Zdd Zdd Zdd Zd	Zd	S )
rX   c             C   sL   t |tstt tt|ts$tt |ts2t|| _||k| _i | _d S )N)	r<   dictr>   r5   iterrW   rY   r*   r%   )r   rY   finalr	   r	   r
   r   ]  s    
zDFAState.__init__c             C   s8   t |tst|| jkstt |ts*t|| j|< d S )N)r<   r|   r>   r%   rX   )r   r5   r4   r	   r	   r
   r[   e  s    zDFAState.addarcc             C   s.   x(| j j D ]\}}||kr|| j |< qW d S )N)r%   r&   )r   oldnewr4   r5   r	   r	   r
   re   k  s    zDFAState.unifystatec             C   sf   t |tst| j|jkrdS t| jt|jkr6dS x*| jj D ]\}}||jj|k	rBdS qBW dS )NFT)r<   rX   r>   r*   r"   r%   r&   get)r   otherr4   r5   r	   r	   r
   __eq__p  s    zDFAState.__eq__N)r   r   r   r   r[   re   r   __hash__r	   r	   r	   r
   rX   [  s
   rX   Grammar.txtc             C   s   t | }|j S )N)r   r6   )r   pr	   r	   r
   generate_grammar  s    r   N)r   )r^   r   r   r   ZGrammarr   objectr   rW   rX   r   r	   r	   r	   r
   <module>   s     I
%