3 2aN@sddlZed\ZZZZZejdejej Bj Z ejdejj Z ejdejejBj Zejdejj Zejdejj Zejdejj ZGd d d eZejed d Zejd ddDejdddDejdddDGdddZedkrddlmZeddddS)Nz ^ [ \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@seZdZddZdS)ParseMapcCsdS)Nx)selfkeyrr,/opt/alt/python36/lib64/python3.6/pyparse.py __missing__rszParseMap.__missing__N)__name__ __module__ __qualname__r rrrrrfs rrccs|]}t|tdfVqdS)(N)ord).0crrr xsrz({[ccs|]}t|tdfVqdS))N)r)rrrrrrysz)}]ccs|]}t|t|fVqdS)N)r)rrrrrrzsz"'\ #c@seZdZddZddZdefddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZddZdS)ParsercCs||_||_dS)N) indentwidthtabwidth)rrrrrr__init__szParser.__init__cCs||_d|_dS)Nr)code study_level)rsrrrset_codeszParser.set_codeNc Cs|jd}}|sdSt|}xftdD]Z}|jdd|}|dkrBP|jdd|d}||||}|r|||j r||j}P|}q&W|dkr||}|r||j r|j}|S|d}x.|||}|r|j\} }|| s| }qPqW|S)Nrz: r )rlenrangerfindstartspan) rZis_char_in_string_synchrerposlimitZtriesimrrrrfind_good_parse_starts8     zParser.find_good_parse_startcCs|dkr|j|d|_dS)Nr)r)rlorrrset_losz Parser.set_loc Cs|jdkrdSd|_|j}|jt}|jdd}|jdd}|jdd}|jdd}|jdd}t}d}}dg|_}|j}dt|}}x||krn||} |d}| dkrq| dkr|d}|dkr||q| d kr|d}q| d kr|r|d}q| d ks| d kr$| } ||d|d | dkr>| d} |} t| d} || }x||kr||} |d}| dkrqX||d|| | kr|| }P| dkr|d}| dkrX|dkr||PqX| dkrX||dkr|d}|d}qXqXW|d| krt }qt }q| dkr<|j d|}q||dkrd|d}|d|krdt }|d}qW|t kr|t kr|dkrt }||_|d|kr||dS)NrZxxxxxxxxxZxxxxZxxz xrrrr"'\#)rr translatetransreplaceC_NONE goodlinesappendrC_STRING_FIRST_LINEC_STRING_NEXT_LINESfind C_BACKSLASH C_BRACKET continuation) rrr>levelZlnor7Z push_goodr&nchZquoteZfirstlnowrrr_study1s                     zParser._study1cCs|j|jS)N)rCr>)rrrrget_continuation_typeTszParser.get_continuation_typecCs|jdkrdS|jd|_|j|j}}t|d}t|}xX|r|}x4t||d||D]}|jdd|dd}q`Wt||r|d}q@Pq@W|dkr|}|||_|_ d}g}|j } |dfg} x||krxt |||} | rD| j } | d}x&||kr ||dkr |d}qW||kr4||}| }||krDP||} | dkr~| || j |t|f| }|d}q| dkr|r|d =| }|d}| j |t|fq| d ks| d kr| j |t|df| }t |||j }| j |t|fq| d krL| j |t|df|jd||d}| j |t|fq|d}||dkrn| ||}|d}qW||_|r|d nd|_t| |_dS)Nr.rrrz z([{z)]}r,r-r1r2r2)rrCrr7rrr _junkre stmt_startstmt_endr8_chew_ordinaryreend_match_stringrer;lastchlastopenbracketpostuplestmt_bracketing)rrr7r&pqZnothingrLstackZ push_stackZ bracketingr'ZnewprArrr_study2Xs             zParser._study2cCs|j|j}|j}t|}|jdd|d}}|d}xj||kr|t||}|rf|jd}d}Pq<|jd|d}}q!z\s*\\z ) rSrrGr;rKrJrematchrrUr)rrr&startposendposfoundr?rArrrcompute_backslash_indentsH     zParser.compute_backslash_indentcCsN|j|j|j}}|}|j}x ||kr@||dkr@|d}q"W|||S)Nz r)rSrGrHr)rr&r@rVrrrrget_base_indent_string5s zParser.get_base_indent_stringcCs|j|jdkS)N:)rSrL)rrrris_block_openerAszParser.is_block_openercCs|jt|j|jdk S)N)rS_closererrG)rrrris_block_closerFszParser.is_block_closercCs|j|jS)N)rSrO)rrrrget_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=compileVERBOSE MULTILINEsearchr#r\rFDOTALLrKrTrdrIdictrfromkeysr4updaterr Zunittestrhrrrr s2    Z