
    }ffh                    b   d dl mZ d dlZd dlZd dlZd dlmZmZ d dl	m	Z	 ddl
mZmZmZ ddlmZ ddlmZ dd	lmZmZmZmZmZmZmZmZmZmZmZmZ dd
lm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& ddlm'Z' ddl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ ddl0m1Z1m2Z2m3Z3m4Z4m5Z5 g dZ6d Z7d Z8d Z9d Z: G d de;      Z< G d d      Z=y)    )annotationsN)contextmanagersuppress)copy   )	bufferingcolor
tokenizing)AST)
OrderedSet)	FailedCutFailedExpectingEndOfTextFailedKeywordSemanticsFailedLeftRecursionFailedLookaheadFailedParseFailedPattern	FailedRefFailedSemanticsFailedTokenOptionSucceeded
ParseError)AlertMemoKey	ParseInfoParserConfig
ParseStateRuleInfo
RuleResult)	Tokenizer)infois_list
left_assoc
prune_dictright_assoc	safe_nametrim)C_CUTC_ENTRY	C_FAILUREC_RECURSION	C_SUCCESS)ParseContext	tatsumasuleftrecnomemoc                       fd}|S )Nc                H     t        j                          fd       }|S )Nc           	         j                   }|dd }t        dd      }t        dd      }t        dd      }t        ||||      }| j                  |      S )Nr   
is_leftrecFis_memoizableTis_name)__name__getattrr   _call)	selfnamer5   r6   r7   ruleinfoimplkwparamsparamss	         M/var/www/feuerwehr-webapp/venv/lib/python3.12/site-packages/tatsu/contexts.pywrapperz-tatsumasu.<locals>.decorator.<locals>.wrapper;   ss    ==D ":D |U;J#D/4@MdIu5GH ::h''    )	functoolswraps)r>   rB   r?   r@   s   ` rA   	decoratorztatsumasu.<locals>.decorator:   s%    			( 
	(& rC    )r@   r?   rF   s   `` rA   r.   r.   9   s    . rC   c                "    d| _         d| _        | S )NTF)r5   r6   r>   s    rA   r/   r/   U   s    DODKrC   c                    d| _         | S NF)r6   rI   s    rA   r0   r0   ]   s    DKrC   c                    d| _         | S )NT)r7   rI   s    rA   isnamerM   c   s    DLKrC   c                      e Zd Zd Zy)closurec                *    t        t        |             S N)hashtupler;   s    rA   __hash__zclosure.__hash__i   s    E$K  rC   N)r8   
__module____qualname__rU   rG   rC   rA   rO   rO   h   s    !rC   rO   c                      e Zd Zdsdt fdZd Zed        Zed        Zed        Zed        Z	ed        Z
ed        Zed	        Zed
        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        ZdudZd ZdsdtdZed        Zedvd       Zed        Zej<                  d        Zed        Zd Z d Z!d Z"dsd Z#dsd!Z$ed"        Z%ed#        Z&e&j<                  d$        Z&d% Z'd& Z(e)d'        Z*dwd(Z+d) Z,dwd*Z-d+ Z.d, Z/ed-        Z0e0j<                  d.        Z0d/ Z1d0 Z2dxd1Z3d2 Z4d3 Z5d4 Z6d5 Z7d6 Z8d7 Z9d8 Z:d9 Z;d: Z<d; Z=d< Z>d= Z?d> Z@dsd?ZAd@ ZBdA ZCdydBZDeEfdCZFeEfdDZGdE ZHdF ZIedG        ZJedH        ZKdI ZLdJ ZMdK ZNdL ZOdM ZPdN ZQdO ZRdP ZSdQ ZTdR ZUdS ZVdT ZWdU ZXdV ZYdW ZZdX Z[dY Z\dZ Z]d[ Z^d\ Z_e`d]        Zae`d^        Zbe`d_        Zce`d`        Zde`da        Zee`db        Zfe`dc        ZgdwddZhdydeZidydfZjdydgZkdh Zldi Zmdj Zndk Zodl Zpdm Zqdn Zrdo Zsdp Ztdq Zudr Zv xZwS )zr-   c                   t         |           t        j                  |fi |}|| _        | j                  | _        d | _        |j                  | _        | j                          y rQ   )
super__init__r   newconfig_active_config
_tokenizer	semantics
_semantics_initialize_caches)r;   r]   settings	__class__s      rA   r[   zParseContext.__init__n   sV    !!&5H5"kk,0 **!rC   c                    t               g| _        g | _        dg| _        d | _        d | _        d| _        d | _        | j                          y )NFr   )	r   _statestack_rule_stack
_cut_stack
_last_nodesubstate
_lookahead_furthest_exception_clear_memoization_cachesrT   s    rA   rb   zParseContext._initialize_cachesz   sH    &L> '#' &&(rC   c                    | j                   S rQ   )r^   rT   s    rA   active_configzParseContext.active_config   s    """rC   c                    | j                   S rQ   )ra   rT   s    rA   r`   zParseContext.semantics       rC   c                .    | j                   j                  S rQ   )ro   encodingrT   s    rA   rs   zParseContext.encoding       !!***rC   c                .    | j                   j                  S rQ   )ro   	parseinforT   s    rA   rv   zParseContext.parseinfo       !!+++rC   c                .    | j                   j                  S rQ   )ro   tracerT   s    rA   ry   zParseContext.trace   s    !!'''rC   c                .    | j                   j                  S rQ   )ro   trace_lengthrT   s    rA   r{   zParseContext.trace_length   s    !!...rC   c                .    | j                   j                  S rQ   )ro   trace_separatorrT   s    rA   r}   zParseContext.trace_separator       !!111rC   c                .    | j                   j                  S rQ   )ro   trace_filenamerT   s    rA   r   zParseContext.trace_filename       !!000rC   c                .    | j                   j                  S rQ   )ro   comments_rerT   s    rA   r   zParseContext.comments_re   s    !!---rC   c                .    | j                   j                  S rQ   )ro   eol_comments_rerT   s    rA   r   zParseContext.eol_comments_re   r~   rC   c                .    | j                   j                  S rQ   )ro   
whitespacerT   s    rA   r   zParseContext.whitespace       !!,,,rC   c                .    | j                   j                  S rQ   )ro   
ignorecaserT   s    rA   r   zParseContext.ignorecase   r   rC   c                .    | j                   j                  S rQ   )ro   	nameguardrT   s    rA   r   zParseContext.nameguard   rw   rC   c                .    | j                   j                  S rQ   )ro   memoize_lookaheadsrT   s    rA   r   zParseContext.memoize_lookaheads   s    !!444rC   c                .    | j                   j                  S rQ   )ro   left_recursionrT   s    rA   r   zParseContext.left_recursion   r   rC   c                .    | j                   j                  S rQ   )ro   colorizerT   s    rA   r   zParseContext.colorize   rt   rC   c                    | j                   S rQ   )	_keywordsrT   s    rA   keywordszParseContext.keywords   s    ~~rC   c                .    | j                   j                  S rQ   )ro   	namecharsrT   s    rA   r   zParseContext.namechars   rw   rC   c                2   | j                   j                  rt        j                          | j	                          t        |j                        | _        |j                  | _	        t        | j                  d      r| j                  j                  |        |S )Nset_context)ro   r   r	   initrb   osetr   r   r`   ra   hasattrr   )r;   r]   s     rA   _resetzParseContext._reset   sh    &&JJL!foo. **4>>=1NN&&t,rC   c                r    | j                   r#|j                  | j                   j                  kD  r|| _         y y rQ   )rl   posr;   es     rA   _set_furthest_exceptionz$ParseContext._set_furthest_exception   s0    ((uut//333'(D$ 4rC   c                  | j                   j                  |      } |j                  di |}|| _        | j	                  |       t        |t        j                        r|}n$|| j                  } |||      }nt        d      || _
        | j                  j                         xs d}	 | j                  |      } |       | j                          S # t        $ r-}| j!                  |j"                         | j$                  |d }~wt&        $ r#}| j!                  |       | j$                  |d }~ww xY w# | j                          w xY w)N)r]   zNo tokenizer or textstartrG   )r]   replace_configreplacer^   r   
isinstancer
   r    tokenizerclsr   r_   ro   effective_rule_name
_find_rulerm   r   r   nestedrl   r   )	r;   textr]   rc   	tokenizerclsr   ruler   s	            rA   parsezParseContext.parse   s'   ++F3+(+$FdJ001I##CD0I344#""668CG
	-??5)D6 **,  	2((2**1 	2((+**1	2 **,s0   -C 	D5(DD5D00D55D8 8E
c                    | j                   S rQ   )r_   rT   s    rA   r   zParseContext.tokenizer   rq   rC   c                z    | j                   j                  t        j                  S | j                   j                  S rQ   )r]   r   r   BufferrT   s    rA   r   zParseContext.tokenizercls   s.    ;;##+###;;+++rC   c                    | j                   S rQ   ri   rT   s    rA   	last_nodezParseContext.last_node  rq   rC   c                    || _         y rQ   r   r;   values     rA   r   zParseContext.last_node
  s	    rC   c                .    | j                   j                  S rQ   )r_   r   rT   s    rA   _poszParseContext._pos  s    """rC   c                .    i | _         i | _        d| _        y Nr   )_memos_results_recursion_depthrT   s    rA   rm   z&ParseContext._clear_memoization_caches  s     !rC   c                :    | j                   j                  |       y rQ   )r_   goto)r;   r   s     rA   _gotozParseContext._goto  s    S!rC   c                6    | j                   j                         S rQ   )r_   nextrT   s    rA   _nextzParseContext._next  s    ##%%rC   c                    |,|j                   j                  d      d d j                         s| j                  j	                          y y )N_r   )r<   lstripisupperr_   
next_tokenr;   r=   s     rA   _next_tokenzParseContext._next_token  s?    8==#7#7#<Ra#@#H#H#JOO&&( $KrC   c                    t               }|j                  ||       |j                  | j                         || _        y )N)	list_keys)r   _defineupdateast)r;   keysr   r   s       rA   r   zParseContext._define!  s0    eDI.

488rC   c                     | j                   d   S Nr4   )rf   rT   s    rA   statezParseContext.state(      ##rC   c                .    | j                   j                  S rQ   r   r   rT   s    rA   r   zParseContext.ast,      zz~~rC   c                &    || j                   _        y rQ   r   r   s     rA   r   zParseContext.ast0      

rC   c                6    | j                   | j                  |<   y rQ   )r   r   r;   r<   s     rA   name_last_nodezParseContext.name_last_node4  s    rC   c                P    | j                   j                  || j                         y rQ   )r   _setlistr   r   s     rA   add_last_node_to_namez"ParseContext.add_last_node_to_name7  s    $/rC   c                "    | |v r
| dz  } | |v r
| S )Nr   rG   )r<   r   s     rA   
_safe_namezParseContext._safe_name:  s     ckCKD ckrC   c                    | j                   }| j                  ||      }|j                  |      }||r|gn|}nt        |      rg ||}n||g}t	        ||      }|| _         y )Nr<   )r   r   getr"   r   )r;   r<   r   as_listr   previous	new_values          rA   ast_setzParseContext.ast_set@  sm    hhtS)774=#*IX*(*E*I!5)I#I&rC   c                ,    | j                  ||d       y )NT)r   )r   )r;   r<   r   s      rA   
ast_appendzParseContext.ast_appendO  s    T5$/rC   c                    |rt        | j                        n	t               }| j                  | j                  _        | j                  j                  t        || j                               y )N)r   r   )	r   r   r   r   r   r   rf   appendr   )r;   copyastr   s      rA   	_push_astzParseContext._push_astR  sC     'd488nSU


s		 BCrC   c                    | j                   j                          | j                  j                  | j                  j
                         y rQ   )rf   popr   r   r   r   rT   s    rA   _pop_astzParseContext._pop_astW  s.    DJJNN+rC   c                    | j                   }| j                  }| j                  }| j                  j	                          || _        | j                  |       | j                  j                  |       y rQ   )r   r   cstrf   r   _extend_cstr   r   )r;   r   r   r   s       rA   
_merge_astzParseContext._merge_ast[  sV    iihhhhC rC   c                .    | j                   j                  S rQ   r   r   rT   s    rA   r   zParseContext.cstd  r   rC   c                &    || j                   _        y rQ   r   r   s     rA   r   zParseContext.csth  r   rC   c                b    | j                   j                  t        | j                               y )N)r   )rf   r   r   r   rT   s    rA   	_push_cstzParseContext._push_cstl  s    
txx 89rC   c                ^    | j                   }| j                  j                          || _         y rQ   )r   rf   r   )r;   r   s     rA   _pop_cstzParseContext._pop_csto  s$    hhrC   c                    | j                   }| j                          |r| j                  |       |S | j                  |       |S rQ   )r   r   r   _append_cst)r;   extendr   s      rA   
_merge_cstzParseContext._merge_cstt  sA    hhS! 
 S!
rC   c                    || _         | j                  }|| j                  |      | _        |S t        |      r|j	                  |       |S ||g| _        |S rQ   )r   r   
_copy_noder"   r   r;   noder   s      rA   r  zParseContext._append_cst}  s_    88t,DH
 	 XOOD!  !$'DHrC   c                   || _         |y | j                  }|| j                  |      | _        |S t        |      r*t        |      r|j	                  |       |S |g|| _        |S t        |      r|j                  |       |S ||g| _        |S rQ   )r   r   r  r"   r  r   r  s      rA   r   zParseContext._extend_cst  s    <88t,DH  T]x %  %,t,
 	 XOOD!  !$'DHrC   c                ,    |y t        |      r|d d  S |S rQ   )r"   r;   r  s     rA   r  zParseContext._copy_node  s    <T]7NKrC   c                     | j                   d   S r   )rh   rT   s    rA   _is_cut_setzParseContext._is_cut_set  s    r""rC   c                    | j                          d| j                  d<   d } || j                  | j                         y )NTr4   c                $    t        | fd       y )Nc                    | d   k  S r   rG   )kr   cutposs     rA   <lambda>z2ParseContext._cut.<locals>.prune.<locals>.<lambda>  s    1Q4&= rC   )r$   )cacher  s    `rA   prunez ParseContext._cut.<locals>.prune  s    u89rC   )
_trace_cutrh   r   r   )r;   r  s     rA   _cutzParseContext._cut  s3    "	: 	dkk499%rC   c                <    | j                   xs | j                  dk(  S r   )r   rk   rT   s    rA   _memoizationzParseContext._memoization  s    &&>$//Q*>>rC   c                r   t        | j                        D cg c]  }|j                   }}| j                  j	                  |      }t        d |j                         D              | j                  kD  r=|d | j                   }|j                  | j                  d      d   }|| j                  z  }|S c c}w )Nc              3  2   K   | ]  }t        |        y wrQ   )len).0ss     rA   	<genexpr>z*ParseContext._rulestack.<locals>.<genexpr>  s     2!s1v2s   r   r   )	reversedrg   r<   r}   joinmax
splitlinesr{   rsplit)r;   r	rulestackstacks       rA   
_rulestackzParseContext._rulestack  s    %-d.>.>%?@QVV@	@$$)))42u//122T5F5FF-D--.ELL!5!5q9!<ET)))E As   B4c                6    | j                  |t               d S )Nexclassc                      y rQ   rG   rG   rC   rA   r  z)ParseContext._find_rule.<locals>.<lambda>  s    rC   )_errorr   r   s     rA   r   zParseContext._find_rule  s    D),rC   c                
   | j                   yt        | j                   dd       }t        | j                   t        |      d       }t        |      st        | j                   dd       }t        |      sd }t        |      sd }||fS )N)NN	_postproc_default)r`   r9   r&   callable)r;   r<   postprocactions       rA   _find_semantic_actionz"ParseContext._find_semantic_action  sv    >>!4>>;=4$?T^^Z>FF!HxrC   c                p    | j                   r*||z  }t        t        |      t        j                         y y )N)file)ry   r!   strsysstderr)r;   msgr@   kwargss       rA   _tracezParseContext._trace  s)    ::6MCS

+ rC   c                   | j                   rd}| j                  r'| j                  j                         j                  dz   }| j                  j                         j                         }|rd|z   }| j                  d|| j                         z   | j                  j                         t        j                  j                  |z   t        j                  j                  |z   t        j                  j                  z   d       y y )N 
z	%s %s%s%send)ry   r   r_   	line_infofilename	lookaheadrstripr;  r'  lookahead_posr	   StyleDIMNORMAL	RESET_ALL)r;   eventfnamerC  s       rA   _trace_eventzParseContext._trace_event  s    ::E""113<<tC113::<I 9,	KK))--/%'""Y.1F1FF   rC   c                    | j                  t        j                  j                  t        j                  j
                  z   t        z          y rQ   )rL  r	   ForeYELLOWrF  BRIGHTr)   rT   s    rA   _trace_entryzParseContext._trace_entry  s.    %**++ekk.@.@@7JKrC   c                    | j                  t        j                  j                  t        j                  j
                  z   t        z          y rQ   )rL  r	   rN  GREENrF  rP  r,   rT   s    rA   _trace_successzParseContext._trace_success  s.    %****U[[-?-??)KLrC   c                    t        |t              r| j                          y | j                  t        j
                  j                  t        j                  j                  z   t        z          y rQ   )
r   r   _trace_recursionrL  r	   rN  REDrF  rP  r*   )r;   exs     rA   _trace_failurezParseContext._trace_failure  sC    b-.!!#ejjnnu{{/A/AAIMNrC   c                    | j                  t        j                  j                  t        j                  j
                  z   t        z          y rQ   )rL  r	   rN  rW  rF  rP  r+   rT   s    rA   rV  zParseContext._trace_recursion  s,    %**..5;;+=+==KLrC   c                    | j                  t        j                  j                  t        j                  j
                  z   t        z          y rQ   )rL  r	   rN  MAGENTArF  rP  r(   rT   s    rA   r  zParseContext._trace_cut   s.    %**,,u{{/A/AAEIJrC   c                   | j                   r:d}| j                  r'| j                  j                         j                  dz   }|rd| dnd}|s"t
        j                  j                  t        z   }n!t
        j                  j                  t        z   }| j                  j                         j                         }|rd|z   }| j                  t
        j                  j                  |z   dz   ||t
        j                  j                   |z   t
        j                  j"                  |z   t
        j                  j$                  z   d       y y )Nr=  r>  /z'%s' %s%s%sr?  )ry   r   r_   rA  rB  r	   rN  rS  r,   rW  r*   rC  rD  r;  rF  rP  rG  rH  rI  )r;   tokenr<   failedrK  fgcolorrC  s          rA   _trace_matchzParseContext._trace_match  s    ::E""113<<tC"&QtfA;BD****Y6**..94113::<I 9,	KK""W,}<%'""Y.1F1FF   rC   c                \    d | j                   d d d   D        } || j                  ||      S )Nc              3  4   K   | ]  }|j                     y wrQ   r   )r  r$  s     rA   r  z/ParseContext._make_exception.<locals>.<genexpr>  s     <QVV<s   r4   )rg   r   )r;   itemr*  r%  s       rA   _make_exceptionzParseContext._make_exception  s.    <T%5%5dd%;<	t~~y$77rC   c                (    | j                  ||      Nr)  )rf  )r;   re  r*  s      rA   r,  zParseContext._error   s    ""4"99rC   c                &    | j                  d       y )Nfail)r,  rT   s    rA   _failzParseContext._fail#  s    FrC   c           
         | j                   }t        | j                  |||| j                  j                  |      | j                  j                  |      | j                  j
                        S )N)r   r   r   endposlineendlinealerts)r   r   r   posliner   rp  )r;   r<   r   rm  s       rA   _get_parseinfozParseContext._get_parseinfo&  sY    nn'',NN**62::$$
 	
rC   c                     | j                   d   S r   )rg   rT   s    rA   r   zParseContext.rule2  r   rC   c                X    t        | j                  | j                  | j                        S rQ   )r   r   r   rj   rT   s    rA   memokeyzParseContext.memokey6  s    tyy$))T]];;rC   c                p    | j                         r%|j                  j                  r|| j                  |<   |S rQ   )r  r   r6   r   )r;   keymemos      rA   _memoizezParseContext._memoize:  s-    388#9#9#DKKrC   c                <    | j                   j                  |d        y rQ   )r   r   r;   rw  s     rA   _forgetzParseContext._forget?  s    T"rC   c                8    | j                   j                  |      S rQ   )r   r   r{  s     rA   	_memo_forzParseContext._memo_forB  s    {{s##rC   c                D    t        || j                  | j                        S rQ   )r   r   rj   r
  s     rA   	_mkresultzParseContext._mkresultH  s    $		4==99rC   c                    t        |j                        r4t        t        |j                        |j                  |j
                        }|| j                  |<   y rQ   )r"   r  r   rO   newposnewstater   )r;   rw  results      rA   _save_resultzParseContext._save_resultK  s@    6;;$fmmV__F $crC   c                    |j                   S rQ   )r5   r   s     rA   _is_recursivezParseContext._is_recursiveR  s    """rC   c                ~    | j                  |j                  j                  t              }| j	                  ||       y rh  )rf  r   r<   r   ry  )r;   rw  rX  s      rA   _set_left_recursion_guardz&ParseContext._set_left_recursion_guardU  s.    !!#((--9L!Mc2rC   c                   | xj                   |gz  c_         | j                  }	 | j                          d | _        | j	                  |      }|\  }}}| j                  |       || _        | j                  |       | j                          || j                   j                          S # t        $ r" | j                  d|j                   d       Y nDt        $ r9}| j                  |       | j                  |       | j                  |        d }~ww xY w	 | j                   j                          y # | j                   j                          w xY w)NzExpecting <>)rg   r   rQ  ri   _recursive_callr   rj   r  rT  r   r   r,  r<   r   r   rY  )r;   r=   r   r  r  r  r  r   s           rA   r:   zParseContext._callY  s   XJ&ii	#"DO))(3F%+"D&(JJv$DMT"!   "  	8KK+hmm_A67 	JJsO((+"		 8   "D  "s0   A(B' '(DD1 D4DDD1 1Ec                6    d }t        | j                  |       y )Nc                "    t        |t              S rQ   )r   r   )rw  r   s     rA   filterz4ParseContext._clear_recursion_errors.<locals>.filterv  s    e%899rC   )r$   r   )r;   r  s     rA   _clear_recursion_errorsz$ParseContext._clear_recursion_errorsu  s    	: 	4;;'rC   c                   | j                  |       | j                  }|j                  s| j                  ||      S | j                  s| j                  dt               | xj                  dz  c_        || j                  v r| j                  |   }n| j                  |j                  t              }|| j                  |<   | j                  }|dz
  }	 	 | j                          | j                  ||      }| j                  |       |j                  |kD  r!| j!                  ||       |j                  }|}nnf| xj                  dz  c_        t#        |t$              r||S # t        $ r Y 4w xY w)NzLeft recursion detectedr)  r   )r   ru  r5   _invoke_ruler   r,  r   r   r   rf  r<   r   r  r   r   r  r  r   	Exception)r;   r=   rw  r  initiallastpos
new_results          rA   r  zParseContext._recursive_call{  sa   "ll""$$Xs33$$KK1;NKO"$--]]3'F))': * F "(DMM#iiGkG002!%!2!28S!AJJJw' $$w.%%c:6(//G'F  	"fi(L # s   3E# #	E/.E/c                   | j                  |      }t        |t              r||r|S | j                  |       | j	                          	 	 | j                  |       |j                  |        | j                  |j                  |      }| j                  ||      }| j                  |      }| j                  ||       || j                          S # t        $ r$}| j                  t        |             Y d }~nd }~ww xY wn$# t         $ r}| j                  ||        d }~ww xY w	 | j                          y # | j                          w xY wrQ   )r~  r   r  r  r   r   r>   	_get_noder   _invoke_semantic_ruler  ry  r   r   r,  r6  r   )r;   r=   rw  rx  r  r  r   s          rA   r  zParseContext._invoke_rule  s   ~~c"dI&JK&&s+		$  *d#~~cggx811(DA-c6* MMO # $CF##$# 	MM#q!	 $
 MMODMMOsI   A4C 	C=C83D 8C==D  D7 	D"
DD""D7 7E	c                   | j                   }|s:t        | j                        rt        | j                        }|S | j                  }|S d|v r|d   }|S | j                  r+|j                  | j                  |j                  |             |S )N@)r   r"   r   rS   rv   set_parseinforr  r<   )r;   r   r=   r  s       rA   r  zParseContext._get_node  s    xx&-dhh&75?D
  >BXXD
 	 D[9D  ^^t228==#FGrC   c                    | j                  |j                        \  }}|r( ||g|j                  xs di |j                  xs i }t	        |      r	 || |       |j
                  r| j                  |       |S )NrG   )r3  r<   r@   r?   r0  r7   _check_name)r;   r   r  semantic_ruler1  s        rA   r  z"ParseContext._invoke_semantic_rule  s{    "&"<"<TYY"Gx )r/3}}/BD HT4 <<T"rC   c                    | j                          | j                  j                  |      *| j                  |d       | j	                  |t
               | j                  |       | j                  |       |S NTr`  r)  )r   r   matchrb  r,  r   r  )r;   r_  s     rA   _tokenzParseContext._token  sg    >>&.eD1KK{K3% rC   c                b   | j                          | j                  |       t        |t              r$	 t	        j
                  |j                               }| j                  |       |S # t        t        f$ r6 d|v rt        |      }t        dt        |      z    i | j                        }Y Ww xY w)Nr>  f)r   rb  r   r6  
stdlib_astliteral_evalstrip
ValueErrorSyntaxErrorr'   evalreprr   r  )r;   literals     rA   	_constantzParseContext._constant  s    '"gs#$11'--/B 	! , 7?"7mGT']*+b$((s   #A) )AB.-B.c                    | j                          | j                  d|z   d| dd       | j                  j                  j	                  t        ||             y )N^`Tr  )messagelevel)r   rb  r   rp  r   r   )r;   r  r  s      rA   _alertzParseContext._alert  sQ    S5[M7)15dC

  we!DErC   c                    | j                   j                  |      }|+| j                  d|d       | j                  |t               | j                  ||       | j                  |       |S )Nr=  Tr  r)  )r   matchrerb  r,  r   r  )r;   patternr_  s      rA   _patternzParseContext._pattern  sc    &&w/=b'$7KKK7%)rC   c                6    | j                   j                         S rQ   )r   atendrT   s    rA   _eofzParseContext._eof      ~~##%%rC   c                6    | j                   j                         S rQ   )r   ateolrT   s    rA   _eolzParseContext._eol  r  rC   c                    | j                          | j                  j                         s| j                  dt               y y )NzExpecting end of textr)  )r   r   r  r,  r   rT   s    rA   
_check_eofzParseContext._check_eof   s:    ~~##%KK'1I   &rC   c              #     K   | j                   }| j                  d       d | _        	 d  | j                          y # t        $ r | j                          || _          w xY ww)NT)r   )rj   r   r   r   r   r   r;   r  s     rA   _tryzParseContext._try  sW     MMt$	OO 	MMODM	s   &A#> A#"A  A#c              #    K   d | _         | xj                  dgz  c_        	 | j                         5  d  d d d        t               # 1 sw Y   t               xY w# t        $ r  t
        $ r&}| j                         rt	        |      |Y d }~nd }~ww xY w	 | j                  j                          y # | j                  j                          w xY wwrK   )r   rh   r  r   r   r   r  r   r   s     rA   _optionzParseContext._option  s     E7"
	" !##!## 	 	*!l) "	*! OO!DOO!sP   CA AA AA B/BB4 BB4 C4CCc              #  j   K   d | _         t        t              5  d  d d d        y # 1 sw Y   y xY wwrQ   )r   r   r   rT   s    rA   _choicezParseContext._choice$  s,     o& 		 	 	s   3'	303c              #     K   d | _         | j                         5  | j                         5  d  d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wwrQ   )r   r  r  rT   s    rA   	_optionalzParseContext._optional*  sJ     \\^ 	T\\^ 		 	 	 	 	 	s1   AAAA	AA
	AAAc              #     K   | j                          	 d  | j                  d       y # t        $ r | j                           w xY ww)NT)r  )r   r  r  r   rT   s    rA   _groupzParseContext._group0  s@     	OO4O( 	MMO	s   A	+ A	AA	c              #  2  K   | j                   }| j                          | xj                  dz  c_        	 d  | j                          | xj                  dz  c_        || _         y # | j                          | xj                  dz  c_        || _         w xY ww)Nr   )rj   r   rk   r   r  s     rA   _ifzParseContext._if:  sn     MM1	MMOOOq ODM MMOOOq ODMs   2BA& -B&.BBc              #     K   	 | j                         5  d  d d d        | j                  dt               y # 1 sw Y   !xY w# t        $ r Y y w xY ww)Nr=  r)  )r  r,  r   r   rT   s    rA   _ifnotzParseContext._ifnotF  sN     	5 
 KKOK4  		s:   AA 9A AAA 	AAAAc                    | j                          	  |        | j                  }| j                          t        |      rt	        |      }|s| j                  |       |S # | j                          w xY wrQ   )r   r   r   r"   rO   r  )r;   blockdropr   s       rA   _isolatezParseContext._isolateP  s[    	G((CMMO3<#,CS!
 MMOs   A   A2c                b   	 | j                         5  | j                         5  | j                  }|r#| j                  ||       | j	                          | j                  |       | j                  |k(  r| j                  d       d d d        	 d d d        y # 1 sw Y   xY w# 1 sw Y   nxY w)N)r  zempty closure)r  r  r   r  r  r,  )r;   r  prefix
dropprefixps        rA   _repeatzParseContext._repeat^  s     \\^ 
5		Af:>		MM%(yyA~O4
5  
5 
5  s#   B$A#B	B$B!	B$$B-c                f   | j                          	 g | _        | j                         5   |        | j                  g| _        d d d        | j                  |||       t	        | j                        | _        | j                         S # 1 sw Y   GxY w# t        $ r | j                           w xY wN)r  r  )r   r   r  r  rO   r  r  r   r;   r  sepomitseps       rA   _closurezParseContext._closuren  s    
	DH! & HH:& LLswL?txx(DH??$$& &  	MMO	s#   B B	AB 	BB B0c                   | j                          	  |        | j                  g| _        | j                  |||       t        | j                        | _        | j	                         S # t
        $ r | j                           w xY wr  )r   r   r  rO   r  r  r   r  s       rA   _positive_closurezParseContext._positive_closure|  sm    	GzDHLLswL?txx(DH??$$ 	MMO	s   AA) )Bc                >    t        g       }| j                  |       |S rQ   )rO   r  )r;   r   s     rA   _empty_closurezParseContext._empty_closure  s    bk
rC   c                *    | j                  ||d      S NT)r  r  r  r;   r  r  s      rA   _gatherzParseContext._gather  s    }}UT}::rC   c                *    | j                  ||d      S r  r  r  s      rA   _positive_gatherzParseContext._positive_gather  s    %%ed%CCrC   c                (    | j                  ||      S N)r  r  r  s      rA   _joinzParseContext._join  s    }}U},,rC   c                (    | j                  ||      S r  r  r  s      rA   _positive_joinzParseContext._positive_join  s    %%e%55rC   c                |    t        | j                  ||            | _        | j                  | _        | j                  S rQ   )r#   r  r   r   r  s      rA   
_left_joinzParseContext._left_join  s/    d11%=>xxrC   c                |    t        | j                  ||            | _        | j                  | _        | j                  S rQ   )r%   r  r   r   r  s      rA   _right_joinzParseContext._right_join  s/    t225#>?xxrC   c                    t        |      }| j                  s| j                  j                  r|j                         }|| j                  v rt        d| d      y )N"z" is a reserved word)r6  r   r   upperr   r   r   s     rA   r  zParseContext._check_name  sO    4y??dnn77::<D4== (1TF2F)GHH !rC   c                    d | _         y rQ   )r   rT   s    rA   _voidzParseContext._void  s	    rC   c                    | j                         }|*| j                  |d       | j                  |t               | j                  |       | j	                  |       |S r  )r   rb  r,  r   r  )r;   cs     rA   _anyzParseContext._any  sV    JJL9a-KK;K/!rC   c                F   | j                         s"	 | j                         5   |        d d d        	  |        y # 1 sw Y   xY w# t        $ r Y nw xY w| j                  }| j	                          | j                  |k(  r| j                          | j                         sprQ   )r  r  r   r   r   r   )r;   r  r   s      rA   _skip_tozParseContext._skip_to  s    ))+XXZ G
 
 	   ))CyyC

 ))+s%   A ;A A A 	AArQ   )r]   zParserConfig | None)r]   r   )returnztype[Tokenizer])F)TrK   )xr8   rV   rW   r[   rb   propertyro   r`   rs   rv   ry   r{   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   setterr   rm   r   r   r   r   r   r   r   r   staticmethodr   r   r   r   r   r   r   r   r   r  r  r   r  r  r  r  r'  r   r3  r;  rL  rQ  rT  rY  rV  r  rb  r   rf  r,  rk  rr  r   ru  ry  r|  r~  r  r  r  r  r:   r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  __classcell__)rd   s   @rA   r-   r-   m   s   
"
) # #   + + , , ( ( / / 2 2 1 1 . . 2 2 - - - - , , 5 5 1 1 + +   , ,)-8   , ,       # #"
"&) $ $   	ZZ (0  
0D
,!   	ZZ :
	$#&(? ",
$LMOMK2 -8 8 $/ :

 $ $ < <
#$:$##8('R4
F
&& 
 
 " "  
  
   	 	 5 5 

;D-6

IrC   r-   )>
__future__r   r   r  rD   r7  
contextlibr   r   r   r=  r   r	   r
   r   collectionsr   r   
exceptionsr   r   r   r   r   r   r   r   r   r   r   r   infosr   r   r   r   r   r   r   r    utilr!   r"   r#   r$   r%   r&   r'   util.unicode_charactersr(   r)   r*   r+   r,   __all__r.   r/   r0   rM   listrO   r-   rG   rC   rA   <module>r     s    "   
 /  * *  +      "    =8
!d !
V VrC   