grthtrhthjhtyjytjytkergtrhtrjytjerhrfh3 \„ã@sœdZddlZddlmZmZmZmZmZmZddl m Z ddl m Z Gdd„de ƒZ d d „ZGd d „d eƒZejejejdd œZdd„Zdd„Zdd„ZdS)z#Guido van Rossum éNé)ÚdriverÚliteralsÚtokenÚtokenizeÚparseÚgrammar)Úpytree)Úpygramc@s eZdZdS)ÚPatternSyntaxErrorN)Ú__name__Ú __module__Ú __qualname__©rrú'/usr/lib64/python3.6/lib2to3/patcomp.pyr sr c csPtjtjtjh}tjtj|ƒjƒ}x(|D] }|\}}}}}||kr(|Vq(WdS)N) rÚNEWLINEÚINDENTÚDEDENTrÚgenerate_tokensÚioÚStringIOÚreadline) ÚinputÚskipÚtokensZ quintupleÚtypeÚvalueÚstartÚendZ line_textrrrÚtokenize_wrappers  rc@s:eZdZd dd„Zddd„Zdd„Zdd d „Zd d „ZdS)ÚPatternCompilerNcCsZ|dkrtj|_tj|_ntj|ƒ|_tj|jƒ|_tj|_ tj |_ tj |jt d�|_dS)N)Zconvert)r Zpattern_grammarrZpattern_symbolsÚsymsrZ load_grammarZSymbolsZpython_grammarZ pygrammarZpython_symbolsÚpysymsZDriverÚpattern_convert)ÚselfZ grammar_filerrrÚ__init__(s  zPatternCompiler.__init__FcCsnt|ƒ}y|jj||d�}Wn0tjk rL}ztt|ƒƒ‚WYdd}~XnX|r`|j|ƒ|fS|j|ƒSdS)N)Údebug)rrZ parse_tokensrZ ParseErrorr ÚstrÚ compile_node)r$rr&Z with_treerÚrootÚerrrÚcompile_pattern7szPatternCompiler.compile_patternc sV|jˆjjkr|jd}|jˆjjkrz‡fdd„|jddd…Dƒ}t|ƒdkrX|dStjdd„|Dƒddd�}|jƒS|jˆjj krʇfdd„|jDƒ}t|ƒdkr°|dStj|gddd�}|jƒS|jˆjj krþˆj |jdd…ƒ}tj |ƒ}|jƒSd}|j}t|ƒd k�r>|djt jk�r>|dj}|dd…}d}t|ƒdk�rx|d jˆjjk�rx|d }|dd …}ˆj ||ƒ}|dk �r>|j} | d} | jt jk�r¶d} tj} nX| jt jk�rÐd} tj} n>| jt jk�rˆj| dƒ} } t| ƒd k�rˆj| d ƒ} n| dk�s"| dk�r>|jƒ}tj|gg| | d�}|dk �rN||_|jƒS)Nrcsg|]}ˆj|ƒ‘qSr)r()Ú.0Úch)r$rrú Osz0PatternCompiler.compile_node..ércSsg|] }|g‘qSrr)r,Úarrrr.Rs)ÚminÚmaxcsg|]}ˆj|ƒ‘qSr)r()r,r-)r$rrr.Vséééÿÿÿÿr5r5)rr!ZMatcherÚchildrenZ AlternativesÚlenr ÚWildcardPatternÚoptimizeZ AlternativeZ NegatedUnitÚ compile_basicZNegatedPatternrÚEQUALrZRepeaterÚSTARZHUGEÚPLUSÚLBRACEÚget_intÚname) r$ÚnodeZaltsÚpZunitsÚpatternr@ÚnodesÚrepeatr6Zchildr1r2r)r$rr(Cs^       "    zPatternCompiler.compile_nodecCs@|d}|jtjkr4ttj|jƒƒ}tjt |ƒ|ƒS|jtj krô|j}|j ƒr„|t krbt d|ƒ‚|dd…rvt dƒ‚tjt |ƒS|dkr’d}n,|jdƒs¾t|j|dƒ}|dkr¾t d|ƒ‚|dd…râ|j|djdƒg}nd}tj||ƒSnH|jdk�r|j|dƒS|jd k�r<|j|dƒ}tj|ggddd �SdS) NrzInvalid token: %rrzCan't have details for tokenÚanyÚ_zInvalid symbol: %rú(ú[)r1r2)rrÚSTRINGr'rZ evalStringrr Z LeafPatternÚ_type_of_literalÚNAMEÚisupperÚ TOKEN_MAPr Ú startswithÚgetattrr"r(r6Z NodePatternr8)r$rDrErArrZcontentÚ subpatternrrrr:Šs8         zPatternCompiler.compile_basiccCs t|jƒS)N)Úintr)r$rArrrr?­szPatternCompiler.get_int)N)FF)N)r r rr%r+r(r:r?rrrrr &s   G #r )rLrJÚNUMBERZTOKENcCs.|djƒrtjS|tjkr&tj|SdSdS)Nr)ÚisalpharrLrZopmap)rrrrrK¹s    rKcCs>|\}}}}|s||jkr*tj|||d�Stj|||d�SdS)N)Úcontext)Z number2symbolr ZNodeZLeaf)rZ raw_node_inforrrUr6rrrr#Âs r#cCs tƒj|ƒS)N)r r+)rCrrrr+Ësr+)Ú __author__rZpgen2rrrrrrÚr r Ú Exceptionr rÚobjectr rLrJrSrNrKr#r+rrrrÚ s