a oe| }nqBq|S)Nrrz: ) rsysps1rfindrrange_synchrestartspan) r Zuse_ps1Zis_char_in_stringrposrilimitZtriesmsr r rfind_good_parse_startsD    "      zParser.find_good_parse_startcCs:|dks|j|ddksJ|dkr6|j|d|_dS)Nrrr)r)r lor r rset_losz Parser.set_loc Cs|jdkrdSd|_|j}|t}|dd}|dd}|dd}|dd}|dd}t}d}}dg|_}|j}dt|}}||kr||} |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}| dkrtqL||d|| | kr|| }q| dkr|d}| dkrL|dkr||qqL| dkrL||ksJ||dkr|d}|d}qLqLt }q| dkr4| d|}|dksJq| dksBJ||ksPJ||dkrx|d}|d|krxt }|d}q|t kr|dkrt }||_ |tk|d|kksJ|d|kr||dS)NrZxxxxxxxxrZxxxxxxz xrrrr"'\#r)rr translate_tranreplaceC_NONE goodlinesappendrC_STRINGfind C_BACKSLASH C_BRACKET continuation) r rr8levellnor2Z push_goodr nchquotewr r r_study1s                    zParser._study1cCs||jSr )r?r8r r r rget_continuation_type`szParser.get_continuation_typecCsHtj}|jdkrdS|d|_|j|j}}t|d}t|}|r|sPJ|}t||d||D]}|dd|dd}qjt ||r|d}qDqqD|dkr|dksJ|}|||_ |_ d}g} | j } ||kr.t |||} | rF| } | d}||kr"||dvr"|d}q||kr4||}| }||krFq.||} | dvrn| || }|d}q| dvr| r| d =| }|d}q| d ks| d kr| }t|||}q| d kr|d||d}|dksJq| d ksJ|d}||ks J||dkr$| ||}|d}q||_| rD| d |_dS)Nr*rrrr ([{)]}rr(r)r-r,)stringZ whitespacerr?rr2rrr_junkre stmt_startstmt_endr3_chew_ordinaryreend_match_stringrer5lastchlastopenbracketpos)r Z_wsrr2r pqZnothingrLstackZ push_stackr"Znewpr<r r r_study2ps                zParser._study2cCs||jtksJ|j}|j}t|}|dd|d}}|d}||krt||}|rr|d}d}qqH| d|d}}qH|}}||dvr|d}q|j }t||| |j |S)Nrrr ) rQr8r7rMrrr_itemrerJr5r expandtabsr )r jrr;Zorigir r"Zextrar r rcompute_bracket_indents&    zParser.compute_bracket_indentcCs||j}|d|dS)Nr)r?r2)r r2r r rget_num_lines_in_stmtszParser.get_num_lines_in_stmtcCs||jtksJ|j}|j}||dvr8|d}q"|}|d|d}d}}||kr"||}|dvr|d}|d}qT|dvr|r|d}|d}qT|dks|dkrt|||}qT|d krΐq"qT|dkr|d kr|dks||dd vr||dd krd}q"qT|d}qT|rH|d}t d |||du}|sl|}||d vrl|d}qRt ||j| |j dS)NrRrrrrCrDr(r)r-=z=<>!z\s*\\rB) rQr8r6rrGr5rKrJrematchrrTr )r rr startposendposfoundr9r<r r rcompute_backslash_indentsV       zParser.compute_backslash_indentcCsJ||j|j}}|}|j}||kr>||dvr>|d}q |||S)NrRr)rQrGrHr)r r r;rUrr r rget_base_indent_string5s zParser.get_base_indent_stringcCs||jdkS)N:)rQrLr@r r ris_block_opener@szParser.is_block_openercCs|t|j|jduSr )rQ_closererrGr@r r ris_block_closerFszParser.is_block_closercCs||jSr )rQrMr@r r rget_last_open_bracket_posMsz Parser.get_last_open_bracket_pos)N)__name__ __module__ __qualname__rrr$r&r?rArQrVrXr_r`rbrdrMrer r r rrs ? yf 7 r)rZrErlistrr1r6r4r7dumpcompileVERBOSE MULTILINEsearchrr[rFDOTALLrKrSrcrIr/r<ordjoinrr r r rsJ