U e5d@shdZddlZddlZddlmZddlmZddlmZGddde Z Gd d d e Z ia d d Z dS) z+George Boutsioukis N) defaultdict)pytree) reduce_treec@seZdZeZddZdS)BMNodecCs"i|_g|_ttj|_d|_dS)N)transition_tablefixersnextrcountidcontentselfr+/usr/lib64/python3.8/lib2to3/btm_matcher.py__init__s zBMNode.__init__N)__name__ __module__ __qualname__ itertoolsr rrrrrrsrc@s4eZdZddZddZddZddZd d Zd S) BottomMatchercCs0t|_t|_|jg|_g|_td|_dS)NZRefactoringTool) setmatchrrootZnodesr loggingZ getLoggerZloggerrrrrrs  zBottomMatcher.__init__cCsH|j|t|j}|}|j||jd}|D]}|j|q2dS)Nstart)r appendrZ pattern_treeZget_linear_subpatternaddr)rfixerZtreeZlinear match_nodesZ match_noderrr add_fixer%s   zBottomMatcher.add_fixerc Cs|s |gSt|dtr`g}|dD]6}|j||d}|D]}|||dd|q:q$|S|d|jkrt}||j|d<n|j|d}|ddr|j|dd|d}n|g}|SdS)Nrrr) isinstancetuplerextendrr)rpatternrr! alternativeZ end_nodesendZ next_noderrrr1s"  zBottomMatcher.addc Cs|j}tt}|D]}|}|rd|_|jD]$}t|tjr*|jdkr*d|_qPq*|j dkrb|j}n|j }||j kr|j |}|j D]}|| |qnH|j}|j dk r|j jrq||j kr|j |}|j D]}|| |q|j }qq|S)NT;Fr)rrlistZ was_checkedZchildrenr#rZLeafvaluetyperr rparent) rZleavesZcurrent_ac_nodeZresultsZleafZcurrent_ast_nodeZchildZ node_tokenr rrrrunSs8          zBottomMatcher.runcs*tdfdd|jtddS)Nz digraph g{csZ|jD]J}|j|}td|j|jt|t|jf|dkrLt|j|q dS)Nz%d -> %d [label=%s] //%sr)rkeysprintr type_reprstrr r )ZnodeZ subnode_keyZsubnode print_noderrr4s  z*BottomMatcher.print_ac..print_node})r0rrrr3rprint_acs  zBottomMatcher.print_acN)rrrrr"rr.r6rrrrrs  "8rcCsDts8ddlm}|jD]\}}t|tkr|t|<qt||S)Nr)python_symbols) _type_reprsZpygramr7__dict__itemsr,int setdefault)Ztype_numr7namevalrrrr1s   r1) __author__rr collectionsrrrZ btm_utilsrobjectrrr8r1rrrrs