o ?Og@s dZddlZddlmZmZmZmZmZmZddl 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__rr6/opt/alt/python310/lib64/python3.10/lib2to3/patcomp.pyr sr c csP tjtjtjh}tt|j}|D]}|\}}}}}||vr%|VqdSN) rNEWLINEINDENTDEDENTrgenerate_tokensioStringIOreadline) inputskiptokensZ quintupletypevaluestartendZ line_textrrrtokenize_wrappersr c@s:eZdZd ddZdddZddZd d d Zd d ZdS)PatternCompilerNcCs\ |durtj|_tj|_n t||_t|j|_tj|_ tj |_ tj |jt d|_dS)N)Zconvert)r Zpattern_grammarrZpattern_symbolssymsrZ load_grammarZSymbolsZpython_grammarZ pygrammarZpython_symbolspysymsZDriverpattern_convert)selfZ grammar_filerrr__init__(s  zPatternCompiler.__init__Fc Csd t|}z |jj||d}Wntjy#}ztt|dd}~ww|r-|||fS||S)N)debug)r rZ parse_tokensrZ ParseErrorr str compile_node)r%rr'Z with_treerrooterrrcompile_pattern7s zPatternCompiler.compile_patternc sF |jjjkr |jd}|jjjkr>fdd|jdddD}t|dkr-|dStjdd|Dddd}|S|jjj krffdd|jD}t|dkrY|dStj|gddd}|S|jjj kr |jdd}t |}|Sd}|j}t|d kr|djt jkr|dj}|dd}d}t|dkr|d jjjkr|d }|dd } ||}|dur|j} | d} | jt jkrd} tj} n(| jt jkrd} tj} n| jt jkr| d} } t| d kr| d } | dks | dkr|}tj|gg| | d}|dur||_|S) Nrcg|]}|qSrr).0Zchr%rr Oz0PatternCompiler.compile_node..rcSsg|]}|gqSrr)r0arrrr2Rsminmaxcr-rr.r/r1rrr2Vr3)rr"ZMatcherchildrenZ Alternativeslenr WildcardPatternoptimizeZ AlternativeZ NegatedUnit compile_basicZNegatedPatternrEQUALrZRepeaterSTARZHUGEPLUSLBRACEget_intname) r%nodeZaltspZunitspatternrFnodesrepeatr<childr7r8rr1rr)Cs`              zPatternCompiler.compile_nodecCs:|d}|jtjkrtt|j}tt ||S|jtj kry|j}| rB|t vr1t d||ddr;t dtt |S|dkrId}n|ds_t|j|d}|dur_t d||ddrq||djdg}nd}t||S|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%rGrrrrEs zPatternCompiler.get_intr)FF)r r rr&r,r)r@rErrrrr!&s    G #r!)rSrQNUMBERZTOKENcCs*|dr tjS|tjvrtj|SdS)Nr)isalpharrSrZopmap)rrrrrRs   rRcCs< |\}}}}|s||jvrtj|||dStj|||dS)N)context)Z number2symbolr ZNodeZLeaf)rZ raw_node_inforrr\r<rrrr$s  r$cCs t|Sr)r!r,)rIrrrr,s r,) __author__rZpgen2rrrrrrr r Exceptionr r objectr!rSrQrZrUrRr$r,rrrrs$