B
    2*\                 @   sp   d dl Z d dlZddlmZ G dd deZdd ZdZi Zx.e	 D ]"Z
e
rFe
 \ZZeeeee< qFW dS )	    N   )tokenc               @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )Grammarc             C   s<   i | _ i | _g | _i | _dg| _i | _i | _i | _d| _d S )N)r   ZEMPTY   )	symbol2numbernumber2symbolstatesdfaslabelskeywordstokenssymbol2labelstart)self r   @C:\ALexclude\prg\programme\Python37\Lib\lib2to3\pgen2\grammar.py__init__M   s    zGrammar.__init__c          	   C   s2   t |d}t| j}t||d W d Q R X d S )Nwb   )open_make_deterministic__dict__pickledump)r   filenamefdr   r   r   r   X   s    
zGrammar.dumpc          	   C   s0   t |d}t|}W d Q R X | j| d S )Nrb)r   r   loadr   update)r   r   r   r   r   r   r   r   i   s    zGrammar.loadc             C   s   | j t| d S )N)r   r   r   loads)r   Zpklr   r   r   r    o   s    zGrammar.loadsc             C   sX   |   }x"dD ]}t||t| |  qW | jd d  |_| jd d  |_| j|_|S )N)r   r   r	   r   r   r   )	__class__setattrgetattrcopyr
   r   r   )r   newZ	dict_attrr   r   r   r$   s   s    
zGrammar.copyc             C   sv   ddl m } td || j td || j td || j td || j td || j td| j d S )	Nr   )pprintZs2nZn2sr   r	   r
   r   )r&   printr   r   r   r	   r
   r   )r   r&   r   r   r   report   s    




zGrammar.reportN)	__name__
__module____qualname__r   r   r   r    r$   r(   r   r   r   r   r      s   6r   c             C   s^   t | tr&ttdd |  D S t | tr>dd | D S t | trZtdd | D S | S )Nc             s   s   | ]\}}|t |fV  qd S )N)r   ).0kvr   r   r   	<genexpr>   s    z&_make_deterministic.<locals>.<genexpr>c             S   s   g | ]}t |qS r   )r   )r,   er   r   r   
<listcomp>   s    z'_make_deterministic.<locals>.<listcomp>c             s   s   | ]}t |V  qd S )N)r   )r,   r0   r   r   r   r/      s    )
isinstancedictcollectionsOrderedDictsorteditemslisttuple)topr   r   r   r      s    


r   a  
( LPAR
) RPAR
[ LSQB
] RSQB
: COLON
, COMMA
; SEMI
+ PLUS
- MINUS
* STAR
/ SLASH
| VBAR
& AMPER
< LESS
> GREATER
= EQUAL
. DOT
% PERCENT
` BACKQUOTE
{ LBRACE
} RBRACE
@ AT
@= ATEQUAL
== EQEQUAL
!= NOTEQUAL
<> NOTEQUAL
<= LESSEQUAL
>= GREATEREQUAL
~ TILDE
^ CIRCUMFLEX
<< LEFTSHIFT
>> RIGHTSHIFT
** DOUBLESTAR
+= PLUSEQUAL
-= MINEQUAL
*= STAREQUAL
/= SLASHEQUAL
%= PERCENTEQUAL
&= AMPEREQUAL
|= VBAREQUAL
^= CIRCUMFLEXEQUAL
<<= LEFTSHIFTEQUAL
>>= RIGHTSHIFTEQUAL
**= DOUBLESTAREQUAL
// DOUBLESLASH
//= DOUBLESLASHEQUAL
-> RARROW
)r4   r    r   objectr   r   Z	opmap_rawZopmap
splitlineslinesplitopnamer#   r   r   r   r   <module>   s   y=