a  zeM@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)selfkeyrrC/opt/bitninja-python-dojo/embedded/lib/python3.9/idlelib/pyparse.py __missing__rszParseMap.__missing__N)__name__ __module__ __qualname__r rrrrrfs rrccs|]}t|tdfVqdS)(Nord.0crrr xrz({[ccs|]}t|tdfVqdS))Nrrrrrryrz)}]ccs|]}t|t|fVqdSNrrrrrrzrz"'\ #c@s|eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZdS)ParsercCs||_||_dSr) indentwidthtabwidth)rrrrrr__init__szParser.__init__cCs||_d|_dSNr)code study_level)rsrrrset_codeszParser.set_codec Cs|jd}}t|}tdD]\}|dd|}|dkr:qz|dd|d}t|||}|rt||st|}qz|}q|durt|}|r||s|}|S|d}t||}|r|\}}||s|}qqq|S)Nrz: r )rlenrangerfind_synchrestartspan) rZis_char_in_stringrposlimitZtriesimrrrrfind_good_parse_starts2      zParser.find_good_parse_startcCs|dkr|j|d|_dSr)r)rlorrrset_losz Parser.set_loc Cs|jdkrdSd|_|j}|t}|dd}|dd}|dd}|dd}|dd}t}d}}dg|_}|j}dt|}}||krd||} |d}| dkrq| dkr|d}|dkr||q| d kr|d}q| d kr|r|d}q| d ks| d kr| } ||d|d | dkr8| d} |} t| d} || }||kr||} |d}| dkrxqP||d|| | kr|| }q| dkr|d}| dkrP|dkr||qqP| dkrP||dkr|d}|d}qPqP|d| krt }qt }q| dkr2| d|}q||dkrZ|d}|d|krZt }|d}q|t kr|t kr|dkrt }||_|d|kr||dS)Nr"ZxxxxxxxxxZxxxxxxz xr!rrr"'\#)rr translatetransreplaceC_NONE goodlinesappendr#C_STRING_FIRST_LINEC_STRING_NEXT_LINESfind C_BACKSLASH C_BRACKET continuation) rrrDlevellnor=Z push_goodr+nchquoteZfirstlnowrrr_study1s                    zParser._study1cCs||jSr)rKrDrrrrget_continuation_typeOszParser.get_continuation_typecCs|jdkrdS|d|_|j|j}}t|d}t|}|r|}t||d||D]}|dd|dd}q\t||r|d}q>qq>|dkr|}|||_|_ d}g}|j } |dfg} ||krht |||} | r4| } | d}||kr||dvr|d}q||kr"||}| }||kr4qh||} | dvrn| || |t|f| }|d}q| dvr|r|d =| }|d}| |t|fq| d ks| d kr| |t|df| }t ||| }| |t|fq| d kr<| |t|df|d||d}| |t|fq|d}||dkr^| ||}|d}q||_|r||d nd|_t| |_dS) Nr4r"r!r ([{)]}r8r2r3r7)rrKrr=r#r$r%_junkre stmt_startstmt_endr>_chew_ordinaryreend_match_stringrerAlastchlastopenbracketpostuplestmt_bracketing)rrr=r+pqZnothingrXstackZ push_stackZ bracketingr,ZnewprHrrr_study2Ss               zParser._study2cCs||j}|j}t|}|dd|d}}|d}||krzt||}|rd|d}d}qq:|d|d}}q:|}}||dvr|d}q|j}t||| |j |S)Nr!rr" ) r_rYrr#r%_itemrerVrAr expandtabsr)rjrrGZorigir+r,extrarrrcompute_bracket_indents$    zParser.compute_bracket_indentcCs||j}|d|dS)Nr8)rKr=)rr=rrrget_num_lines_in_stmtszParser.get_num_lines_in_stmtcCs|||j}|j}||dvr*|d}q|}|d|d}d}}||kr||}|dvrr|d}|d}qF|dvr|r|d}|d}qF|dks|dkrt|||}qF|d krqqF|dkr |d kr |dks||dd vr ||dd kr d}qqF|d}qF|r:|d}td |||du}|s^|}||d vr^|d}qDt||j| |j dS)Nr`r"r!rrPrQr2r3r7=z=<>!z\s*\\rO) r_rrSrArWrVrematchr#rbr)rrr+startposendposfoundrErHrrrcompute_backslash_indentsV       zParser.compute_backslash_indentcCsJ||j|j}}|}|j}||kr>||dvr>|d}q |||S)Nr`r")r_rSrTr)rr+rGrcrrrrget_base_indent_string0s zParser.get_base_indent_stringcCs||jdkS)N:)r_rXrLrrris_block_opener<szParser.is_block_openercCs|t|j|jduSr)r__closererrSrLrrris_block_closerAszParser.is_block_closercCs||jSr)r_r[rLrrrget_last_stmt_bracketingFszParser.get_last_stmt_bracketingN)r r r rr r-r/rKrMr_rergrnrorqrsrtrrrrr}s8 { 9 r__main__)mainzidlelib.idle_test.test_pyparser4) verbosity)rir$r<rBr?r@rCcompileVERBOSE MULTILINEsearchr&rjrRDOTALLrWrarrrUdictrfromkeysr:updaterr Zunittestrvrrrr sB    U