3 Õì2a–Nã@sddlZedƒ\ZZZZZejdejej Bƒj Z ejdejƒj Z ejdejejBƒj Zejdejƒj Zejdejƒj Zejdejƒj ZGd d „d eƒZejed ƒd ƒZejd d„dDƒƒejdd„dDƒƒejdd„dDƒƒGdd„dƒZedk�rddlmZeddd�dS)éNézä ^ [ \t]* (?: while | else | def | return | assert | break | class | continue | elif | try | except | raise | import | yield ) \b z' [ \t]* (?: \# \S .* )? \n aK \""" [^"\\]* (?: (?: \\. | "(?!"") ) [^"\\]* )* (?: \""" )? | " [^"\\\n]* (?: \\. [^"\\\n]* )* "? | ''' [^'\\]* (?: (?: \\. | '(?!'') ) [^'\\]* )* (?: ''' )? | ' [^'\\\n]* (?: \\. [^'\\\n]* )* '? zM [ \t]* [^\s#\\] # if we match, m.end()-1 is the interesting char z_ \s* (?: return | break | continue | raise | pass ) \b z [^[\](){}#'"\\]+ c@seZdZdd„ZdS)ÚParseMapcCsdS)Néx©)ÚselfÚkeyrrú,/opt/alt/python36/lib64/python3.6/pyparse.pyÚ __missing__rszParseMap.__missing__N)Ú__name__Ú __module__Ú __qualname__r rrrrrfs ré€rccs|]}t|ƒtdƒfVqdS)ú(N)Úord)Ú.0Úcrrrú xsrz({[ccs|]}t|ƒtdƒfVqdS)ú)N)r)rrrrrrysz)}]ccs|]}t|ƒt|ƒfVqdS)N)r)rrrrrrzsz"'\ #c@s‚eZdZdd„Zdd„Zdefdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„ZdS)ÚParsercCs||_||_dS)N)Ú indentwidthÚtabwidth)rrrrrrÚ__init__szParser.__init__cCs||_d|_dS)Nr)ÚcodeÚ study_level)rÚsrrrÚset_codeƒszParser.set_codeNc Csî|jd}}|sdSt|ƒ}xftdƒD]Z}|jdd|ƒ}|dkrBP|jdd|ƒd}||||ƒ}|r|||jƒƒ r||jƒ}P|}q&W|dkr²||ƒ}|r®||jƒƒ r®|jƒ}|S|d}x.|||ƒ}|rä|jƒ\} }|| ƒsæ| }q¼Pq¼W|S)Nrz: rÚ é)rÚlenÚrangeÚrfindÚstartÚspan) rZis_char_in_stringÚ_synchrerÚposÚlimitZtriesÚiÚmrrrrÚfind_good_parse_startˆs8     zParser.find_good_parse_startcCs|dkr|j|d…|_dS)Nr)r)rÚlorrrÚset_loÅsz Parser.set_loc Cs²|jdkrdSd|_|j}|jtƒ}|jddƒ}|jddƒ}|jddƒ}|jddƒ}|jddƒ}t}d}}dg|_}|j}dt|ƒ}}�xà||k�rn||} |d}| dkr´q�| dkrÖ|d}|dkr�||ƒq�| d krè|d}q�| d k�r|r�|d}q�| d k�s| d k�r$| } ||d|d …| dk�r>| d} |} t| ƒd} || }xÊ||k�r||} |d}| dk�r€�qX||d|| …| k�r¤|| }P| dk�rØ|d}| dk�rX|dk�rÒ||ƒP�qX| dk�rX||dk�rø|d}|d}�qX�qXW|d| k�rt }q�t }q�| dk�r<|j d|ƒ}q�||dk�rd|d}|d|k�rdt }|d}q�W|t k�r’|t k�r’|dk�r’t }||_|d|k�r®||ƒdS)NrZxxxxxxxxÚxZxxxxZxxz xrrrrú"ú'ééú\ú#éÿÿÿÿ)rrÚ translateÚtransÚreplaceÚC_NONEÚ goodlinesÚappendrÚC_STRING_FIRST_LINEÚC_STRING_NEXT_LINESÚfindÚ C_BACKSLASHÚ C_BRACKETÚ continuation) rrr>ÚlevelZlnor7Z push_goodr&ÚnÚchZquoteZfirstlnoÚwrrrÚ_study1Îsš                     zParser._study1cCs|jƒ|jS)N)rCr>)rrrrÚget_continuation_typeTszParser.get_continuation_typecCs¢|jdkrdS|jƒd|_|j|j}}t|ƒd}t|ƒ}xX|r–|}x4t||d||ƒD]}|jdd|dƒd}q`Wt||ƒr’|d}q@Pq@W|dkr¤|}|||_|_ d}g}|j } |dfg} �x¬||k�rxt |||ƒ} | �rD| j ƒ} | d}x&||k�r ||dk�r |d}�qüW||k�r4||}| }||k�rDP||} | dk�r~| |ƒ| j |t|ƒfƒ| }|d}qÎ| dk�r´|�r”|d =| }|d}| j |t|ƒfƒqÎ| d k�sÈ| d k�r| j |t|ƒdfƒ| }t |||ƒj ƒ}| j |t|ƒfƒqÎ| d k�rL| j |t|ƒdfƒ|jd||ƒd}| j |t|ƒfƒqÎ|d}||dk�rn| ||}|d}qÎW||_|�rŽ|d nd|_t| ƒ|_dS)Nr.rrrÚz z([{z)]}r,r-r1r2r2)rrCrr7rrr Ú_junkreÚ stmt_startÚstmt_endr8Ú_chew_ordinaryreÚendÚ_match_stringrer;ÚlastchÚlastopenbracketposÚtupleÚstmt_bracketing)rrr7r&ÚpÚqZnothingrLÚstackZ push_stackZ bracketingr'ZnewprArrrÚ_study2Xs‚             zParser._study2cCsÂ|jƒ|j}|j}t|ƒ}|jdd|ƒd}}|d}xj||kr|t||ƒ}|rf|jƒd}d}Pq<|jd|ƒd}}q!z\s*\\z ) rSrrGr;rKrJÚreÚmatchrrUr)rrr&ÚstartposÚendposÚfoundr?rArrrÚcompute_backslash_indentüsH     zParser.compute_backslash_indentcCsN|jƒ|j|j}}|}|j}x ||kr@||dkr@|d}q"W|||…S)Nz r)rSrGrHr)rr&r@rVrrrrÚget_base_indent_string5s zParser.get_base_indent_stringcCs|jƒ|jdkS)Nú:)rSrL)rrrrÚis_block_openerAszParser.is_block_openercCs|jƒt|j|jƒdk S)N)rSÚ_closererrG)rrrrÚis_block_closerFszParser.is_block_closercCs|jƒ|jS)N)rSrO)rrrrÚget_last_stmt_bracketingKszParser.get_last_stmt_bracketing)r r r rrr#r(r*rCrDrSrWrYr`rarcrerfrrrrr}s  < { 9 rÚ__main__)Úmainzidlelib.idle_test.test_pyparser.)Ú verbosity)r[rr6r<r9r:r=ÚcompileÚVERBOSEÚ MULTILINEÚsearchr#r\rFÚDOTALLrKrTrdrIÚdictrÚfromkeysr4Úupdaterr ZunittestrhrrrrÚ s2    Z