3
\„ ã @ sœ d Z ddlZddlmZmZmZmZmZmZ ddl m
Z
ddl mZ G dd„ deƒZ
d d
„ ZG dd„ deƒZejejejdd
œZdd„ Zdd„ Zdd„ ZdS )z#Guido van Rossum é Né )ÚdriverÚliteralsÚtokenÚtokenizeÚparseÚgrammar)Úpytree)Úpygramc @ s e Zd ZdS )ÚPatternSyntaxErrorN)Ú__name__Ú
__module__Ú__qualname__© r r ú'/usr/lib64/python3.6/lib2to3/patcomp.pyr s r c c sP t jt jt jh}tjtj| ƒjƒ}x(|D ] }|\}}}}}||kr(|V q(W d S )N) r ÚNEWLINEÚINDENTÚDEDENTr Úgenerate_tokensÚioÚStringIOÚreadline) ÚinputÚskipÚtokensZ quintupleÚtypeÚvalueÚstartÚendZ line_textr r r Útokenize_wrapper s
r c @ s: e Zd Zd
dd„Zddd„Zdd„ Zdd d
„Zdd„ ZdS )ÚPatternCompilerNc C sZ |d krt j| _t j| _ntj|ƒ| _t j| jƒ| _t j| _ t j
| _tj| jt
d�| _d S )N)Zconvert)r
Zpattern_grammarr Zpattern_symbolsÚsymsr Zload_grammarZSymbolsZpython_grammarZ pygrammarZpython_symbolsÚpysymsZDriverÚpattern_convert)ÚselfZgrammar_filer r r Ú__init__( s
zPatternCompiler.__init__Fc C sn t |ƒ}y| jj||d�}W n0 tjk
rL } ztt|ƒƒ‚W Y d d }~X nX |r`| j|ƒ|fS | j|ƒS d S )N)Údebug)r r Zparse_tokensr Z
ParseErrorr ÚstrÚcompile_node)r$ r r&