B +@sddlZed\ZZZZZedejej Bj Z edejj Z edejejBj Zedejj Zedejj Zedejj ZGd d d eZeed d Zed ddDedddDedddDGdddZedkrddlmZeddddS)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)selfkeyrr2/opt/alt/python37/lib/python3.7/idlelib/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@s|eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZdS)ParsercCs||_||_dS)N) indentwidthtabwidth)rrrrrr__init__szParser.__init__cCs||_d|_dS)Nr)code study_level)rsrrrset_codeszParser.set_codec Cs|jd}}t|}xdtdD]X}|dd|}|dkr:P|dd|d}t|||}|rr||sr|}P|}qW|dkrt|}|r||s|}|S|d}x.t||}|r|\}}||s|}qPqW|S)Nrz: r )rlenrangerfind_synchrestartspan) rZis_char_in_stringrposlimitZtriesimrrrrfind_good_parse_starts4     zParser.find_good_parse_startcCs|dkr|j|d|_dS)Nr)r)rlorrrset_losz Parser.set_loc Cs|jdkrdSd|_|j}|t}|dd}|dd}|dd}|dd}|dd}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<| 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||jS)N)rCr>)rrrrget_continuation_typeOszParser.get_continuation_typecCs|jdkrdS|d|_|j|j}}t|d}t|}xX|r|}x4t||d||D]}|dd|dd}q`Wt||r|d}q@Pq@W|dkr|}|||_|_ d}g}|j } |dfg} x||krxt |||} | rD| } | d}x&||kr ||dkr |d}qW||kr4||}| }||krDP||} | dkr~| || |t|f| }|d}q| dkr|r|d =| }|d}| |t|fq| d ks| d kr| |t|df| }t ||| }| |t|fq| d krL| |t|df|d||d}| |t|fq|d}||dkrn| ||}|d}qW||_|r|d nd|_t| |_dS) Nr.rrrz z([{z)]}r2r,r-r1)rrCrr7rrr _junkre stmt_startstmt_endr8_chew_ordinaryreend_match_stringrer;lastchlastopenbracketpostuplestmt_bracketing)rrr7r&pqZnothingrLstackZ push_stackZ bracketingr'ZnewprArrr_study2Ss             zParser._study2cCs||j}|j}t|}|dd|d}}|d}xj||kr|t||}|rf|d}d}Pq<|d|d}}q|d}td |||dk}|sf|}x||d krd|d}qJWt||j| |j dS)Nz rrrz([{z)]}r,r-r1=z=<>!z\s*\\z ) rSrrGr;rKrJrematchrrUr)rrr&startposendposfoundr?rArrrcompute_backslash_indentsH     zParser.compute_backslash_indentcCsN||j|j}}|}|j}x ||kr@||dkr@|d}q"W|||S)Nz r)rSrGrHr)rr&r@rVrrrrget_base_indent_string0s zParser.get_base_indent_stringcCs||jdkS)N:)rSrL)rrrris_block_opener<szParser.is_block_openercCs|t|j|jdk S)N)rS_closererrG)rrrris_block_closerAszParser.is_block_closercCs||jS)N)rSrO)rrrrget_last_stmt_bracketingFszParser.get_last_stmt_bracketingN)r r r rrr(r*rCrDrSrWrYr`rarcrerfrrrrr}s8 { 9 r__main__)mainzidlelib.idle_test.test_pyparser.) verbosity)r[rr6r<r9r:r=compileVERBOSE MULTILINEsearchr!r\rFDOTALLrKrTrdrIdictrfromkeysr4updaterr Zunittestrhrrrr s2    U