PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  oY@sdZdZddlZddlZddlmZmZmZmZm Z m Z ddl m Z ddl m Z ejjejjedZGd d d eZd d ZGd ddeZdejdejdejddiZddZddZddZdS)zPattern compiler. The grammar is taken from PatternGrammar.txt. The compiler compiles a pattern to a pytree.*Pattern instance. z#Guido van Rossum N)driverliteralstokentokenizeparsegrammar)pytree)pygramzPatternGrammar.txtc@seZdZdS)PatternSyntaxErrorN)__name__ __module__ __qualname__rr&/opt/python35/lib/python3.5/patcomp.pyr s r c csntjtjtjh}tjtj|j}x4|D],}|\}}}}}||kr:|Vq:WdS)z6Tokenizes a string suppressing significant whitespace.N) rNEWLINEINDENTDEDENTrgenerate_tokensioStringIOreadline) inputskiptokensZ quintupletypevaluestartendZ line_textrrrtokenize_wrapper!s   rc@sXeZdZeddZddddZddZdd d Zd d ZdS) PatternCompilercCs^tj||_tj|j|_tj|_tj|_ tj |jdt |_dS)z^Initializer. Takes an optional alternative filename for the pattern grammar. convertN) rZ load_grammarrr ZSymbolssymsZpython_grammarZ pygrammarZpython_symbolspysymsZDriverpattern_convert)selfZ grammar_filerrr__init__-s   zPatternCompiler.__init__FcCst|}y|jj|d|}Wn:tjk rd}ztt|WYdd}~XnX|r~|j||fS|j|SdS)z=Compiles a pattern string to a nested pytree.*Pattern object.debugN)rrZ parse_tokensrZ ParseErrorr str compile_node)r%rr'Z with_treerrooterrrcompile_pattern8s %zPatternCompiler.compile_patternc s|jjjkr"|jd}|jjjkrfdd|jdddD}t|dkrz|dStjdd|Dddd d}|jS|jjj krfd d|jD}t|dkr|dStj|gddd d}|jS|jjj krij |jdd}tj |}|jS|jjj kstd}|j}t|d kr|djtjkr|dj}|dd}d}t|dkr#|djjjkr#|d}|dd}j ||}|dk r|jjjks\t|j} | d} | jtjkrd} tj} n| jtjkrd} tj} n| jtjkr<| djtjkstt| dkstj| d} } t| d krHj| d } n d sHt| dks`| dkr|j}tj|ggd| d | }|dk r||_|jS)zXCompiles a node, recursively. This is one big switch on the node type. rcsg|]}j|qSr)r)).0ch)r%rr Ps z0PatternCompiler.compile_node..NrcSsg|]}|gqSrr)r-arrrr/Ss minmaxcsg|]}j|qSr)r))r-r.)r%rrr/Ws Fr6r6r6)r4r5)rr"ZMatcherchildrenZ Alternativeslenr WildcardPatternoptimizeZ AlternativeZ NegatedUnit compile_basicZNegatedPatternZUnitAssertionErrorrEQUALrZRepeaterSTARZHUGEPLUSLBRACERBRACEget_intname) r%nodeZaltspZunitspatternrCnodesrepeatr7Zchildr2r3r)r%rr)Dsh )(    ( +        !  zPatternCompiler.compile_nodeNcCst|dkst|d}|jtjkrbttj|j}t j t ||S|jtj krp|j}|j r|tkrtd||ddrtdt j t|S|dkrd}n@|jds't|j|d}|dkr'td||ddrW|j|djdg}nd}t j||Sns|jdkr|j|dS|jd kr|dkst|j|d}t j|ggd dd dSd st|dS) NrrzInvalid token: %rzCan't have details for tokenany_zInvalid symbol: %r([r2r3F)r8r<rrSTRINGr(rZ evalStringrr Z LeafPattern_type_of_literalNAMEisupper TOKEN_MAPr startswithgetattrr#r)r7Z NodePatternr9)r%rGrHrDrrZcontent subpatternrrrr;s<         zPatternCompiler.compile_basiccCs%|jtjkstt|jS)N)rrNUMBERr<intr)r%rDrrrrBszPatternCompiler.get_int) r r r_PATTERN_GRAMMAR_FILEr&r,r)r;rBrrrrr +s   G#r rOrMrUZTOKENcCs9|djrtjS|tjkr1tj|SdSdS)Nr)isalpharrOrZopmap)rrrrrNs  rNcCsW|\}}}}|s'||jkr=tj||d|Stj||d|SdS)z9Converts raw node information to a Node or Leaf instance.contextN)Z number2symbolr ZNodeZLeaf)rZ raw_node_inforrrYr7rrrr$sr$cCstj|S)N)r r,)rFrrrr,sr,)__doc__ __author__rosZpgen2rrrrrrr r pathjoindirname__file__rW Exceptionr robjectr rOrMrUrQrNr$r,rrrr s$  .