a  ze@sdZddlZddlmZmZmZmZmZmZddl m Z ddl m Z Gddde Z d d ZGd d d eZejejejdd ZddZddZddZdS)z#Guido van Rossum N)driverliteralstokentokenizeparsegrammar)pytree)pygramc@s eZdZdS)PatternSyntaxErrorN)__name__ __module__ __qualname__rrC/opt/bitninja-python-dojo/embedded/lib/python3.9/lib2to3/patcomp.pyr sr c csLtjtjtjh}tt|j}|D] }|\}}}}}||vr&|Vq&dSN) rNEWLINEINDENTDEDENTrgenerate_tokensioStringIOreadline) inputskiptokensZ quintupletypevaluestartendZ line_textrrrtokenize_wrappers r c@s:eZdZd ddZdddZddZdd d Zd d ZdS)PatternCompilerNcCsZ|durtj|_tj|_nt||_t|j|_tj|_ tj |_ tj |jt d|_dS)N)convert)r Zpattern_grammarrZpattern_symbolssymsrZ load_grammarZSymbolsZpython_grammarZ pygrammarZpython_symbolspysymsZDriverpattern_convert)selfZ grammar_filerrr__init__(s  zPatternCompiler.__init__Fc Csrt|}z|jj||d}Wn4tjyP}ztt|dWYd}~n d}~00|rd|||fS||SdS)N)debug)r rZ parse_tokensrZ ParseErrorr str compile_node)r&rr(Z with_treerrooterrrcompile_pattern7s$zPatternCompiler.compile_patternc sV|jjjkr|jd}|jjjkrzfdd|jdddD}t|dkrX|dStjdd|Dddd}|S|jjj krʇfdd|jD}t|dkr|dStj|gddd}|S|jjj kr |jdd}t |}|Sd}|j}t|d kr>|djt jkr>|dj}|dd}d}t|dkrx|d jjjkrx|d }|dd } ||}|dur>|j} | d} | jt jkrd} tj} nX| jt jkrd} tj} n>| jt jkr| d} } t| d kr| d } n| dks"| dkr>|}tj|gg| | d}|durN||_|S) Nrcsg|]}|qSrr*.0Zchr&rr Oz0PatternCompiler.compile_node..rcSsg|] }|gqSrr)r0arrrr2Rr3minmaxcsg|]}|qSrr.r/r1rrr2Vr3)rr#ZMatcherchildrenZ Alternativeslenr WildcardPatternoptimizeZ AlternativeZ NegatedUnit compile_basicZNegatedPatternrEQUALrZRepeaterSTARZHUGEPLUSLBRACEget_intname) r&nodeZaltspZunitspatternrFnodesrepeatr<childr7r8rr1rr*Cs^       "    zPatternCompiler.compile_nodecCs@|d}|jtjkr4tt|j}tt ||S|jtj kr|j}| r|t vrbt d||ddrvt dtt |S|dkrd}n,|dst|j|d}|durt d||ddr||djdg}nd}t||SnH|jdkr||dS|jd kr<||d}tj|ggddd SdS) NrzInvalid token: %rrzCan't have details for tokenany_zInvalid symbol: %r([r6)rrSTRINGr)rZ evalStringrr Z LeafPattern_type_of_literalNAMEisupper TOKEN_MAPr startswithgetattrr$r*r<Z NodePatternr>)r&rJrKrGrrZcontent subpatternrrrr@s8         zPatternCompiler.compile_basiccCs t|jSr)intr)r&rGrrrrEszPatternCompiler.get_int)N)FF)N)r r rr'r-r*r@rErrrrr!&s   G #r!)rSrQNUMBERZTOKENcCs.|drtjS|tjvr&tj|SdSdS)Nr)isalpharrSrZopmap)rrrrrRs    rRcCs>|\}}}}|s||jvr*tj|||dStj|||dSdS)N)context)Z number2symbolr ZNodeZLeaf)rZ raw_node_inforrr\r<rrrr%s r%cCs t|Sr)r!r-)rIrrrr-sr-) __author__rZpgen2rrrrrrr r Exceptionr r objectr!rSrQrZrUrRr%r-rrrr s