
    ]Og)                     4   S r SrSS/rSSKrSSKrSSKrSSKrSSKrSSKJ	r	  SSK
JrJr  SSKJr  SS	KJrJrJrJrJrJrJrJrJr  SS
KJr  SSKJr  SSKJr  SSKJrJ r J!r!J"r"J#r#  \\$S4   r%\ " S S5      5       r& " S S5      r' " S S5      r(S'S\%S\\%   S\$4S jjr)     S(S\$S\\$   S\*S\*S\\   S\4S jjr+S\$S\$S\*4S  jr, S'S!\$S"\$S\\%   S\R2                  4S# jjr-S$\$S\*4S% jr.\/S&:X  a#  \R`                  " \1" \." 5       (       + 5      5        gg))zZParser driver.

This provides a high-level interface to parse a file into a syntax tree.

z#Guido van Rossum <guido@python.org>Driverload_grammar    N)contextmanager)	dataclassfield)Logger)	IOAnyIterableIteratorListOptionalTupleUnioncast)Grammar)GoodTokenInfo)NL   )grammarparsepgentokentokenizezos.PathLike[str]c                   Z    \ rS rSr% \\S'   Sr\\   \S'   \" \	S9r
\\   \S'   S	S jrSrg)
ReleaseRange'   startNend)default_factorytokensc                 V    [        U R                  5      nU R                  U-   U l        g N)lenr!   r   r   )selftotal_eatens     Z/Users/admin/workspace/ai/Jarvis/env/lib/python3.13/site-packages/blib2to3/pgen2/driver.pylockReleaseRange.lock-   s     $++&::+    )r   )returnN)__name__
__module____qualname____firstlineno__int__annotations__r   r   r   listr!   r   r
   r(   __static_attributes__ r*   r'   r   r   '   s-    JC#d3FDI3,r*   r   c                       \ rS rSrS\SS4S jr\S\S    4S j5       rS\	S\4S jr
SS	 jrS\4S
 jrS\	S\4S jrSrg)
TokenProxy2   	generatorr+   Nc                 ,    Xl         SU l        / U l        g )Nr   )_tokens_counter_release_ranges)r%   r8   s     r'   __init__TokenProxy.__init__3   s     35r*   c              #      #    [        U R                  5      nU R                  R                  U5         U v   UR	                  5         g ! UR	                  5         f = f7fr#   )r   r;   r<   appendr(   )r%   release_ranges     r'   releaseTokenProxy.release8   sK     $T]]3##M2	!J  M s   1AA	 A	AApointc                     U R                   S   R                  nU[        U5      :  a  X!   $ U[        U5      :  a7  [        U R                  5      nUR                  U5        U[        U5      :  a  M7  W$ )N)r<   r!   r$   nextr:   r@   )r%   rD   eaten_tokensr   s       r'   eatTokenProxy.eatC   sm    ++B/663|$$&&3|,,T\\*##E* 3|,, Lr*   c                     U $ r#   r4   )r%   s    r'   __iter__TokenProxy.__iter__M   s    r*   c                 <   U R                    Ha  nUR                  c   eUR                  UR                  p2X R                  s=::  a  U:  d  MA  O  ME  UR                  U R                  U-
     n  O   [        U R                  5      nU =R                  S-  sl        U$ )Nr   )r<   r   r   r;   r!   rG   r:   )r%   rA   r   r   r   s        r'   __next__TokenProxy.__next__P   s     "11M $$000&,,m.?.?3+++%,,T]]U-BC 2 &Er*   toc                 H     U R                  U5        g! [         a     gf = f)NTF)rI   StopIteration)r%   rQ   s     r'   can_advanceTokenProxy.can_advance`   s+    	HHRL   		s    
!!)r;   r<   r:   )r+   r6   )r,   r-   r.   r/   r
   r=   r   r   rB   r0   rI   rL   rO   boolrT   r3   r4   r*   r'   r6   r6   2   sl    6# 6$ 6
 !,/ ! !  #  c d r*   r6   c            	           \ rS rSrSS\S\\   SS4S jjrSS\\	   S\
S\4S	 jjrSS
\\   S\
S\4S jjrSS
\\   S\
S\4S jjr SS\S\\   S\
S\4S jjrSS\S\
S\4S jjrS\S\S\\\4   4S jrSrg)r   k   Nr   loggerr+   c                 V    Xl         Uc  [        R                  " [        5      nX l        g r#   )r   logging	getLoggerr,   rY   )r%   r   rY   s      r'   r=   Driver.__init__l   s!    >&&x0Fr*   r!   debugc                    [        U5      n[        R                  " U R                  5      nUR	                  US9  SnSn/ nS=n=n	=n
=pSnU GH  nUu  ppnXU4:w  a8  XV4U
::  d
   XV4U
45       eU
u  nnX_:  a  USX-
  -  -  nUnSnUU:  a	  XUU -  nUnU[
        R                  [
        R                  4;   a'  X-  nUu  pVU	R                  S5      (       a  US-  nSnM  U[        R                  :X  a  [        R                  U	   nU(       a3  Uc   eU R                  R                  S[        R                  U   X5        U[        R                  :X  a#  UR!                  [#        U	5      5        X-   nSnSn	O9U[        R$                  :X  a%  UR'                  5       nU R)                  UU5      u  nnUR+                  [-        [.        U5      XU
45      (       a$  U(       a  U R                  R                  S5          OoSnU[        R                  [        R$                  1;   a  WnUu  pVU	R                  S5      (       d  GM  US-  nSnGM     U
c   e[        R0                  " S	XX45      eUR2                  c   eUR2                  $ )
z4Parse a series of tokens and return the syntax tree.)proxyr   r   N 
z%s %r (prefix=%r)zStop.zincomplete input)r6   r   Parserr   setupr   COMMENTr   endswithr   OPopmaprY   r^   tok_nameINDENTr@   r$   DEDENTpop_partially_consume_prefixaddtokenr   r0   
ParseErrorrootnode)r%   r!   r^   r`   plinenocolumnindent_columnstypevaluer   r   	line_textprefix	quintuples_linenos_column_prefix_indent_cols                      r'   parse_tokensDriver.parse_tokensr   s    6"LL&	e$&1555u5u5sI1:.DY(('50KF3CU2KK0%*"($dh&788F%FFH$x88F%F(((++66!$>>$''aKFFuxx}}U+'''!!')=u u||#%%c%j1 .%,002"&"@"@"Uzz$sD/55/BBKK%%g.Fell33  NF~~d##!Y ^ $$$""#5tVOTTzz%%%zzr*   streamc                 v    [         R                  " UR                  U R                  S9nU R	                  X25      $ )*Parse a stream and return the syntax tree.r   )r   generate_tokensreadliner   r~   )r%   r   r^   r!   s       r'   parse_stream_rawDriver.parse_stream_raw   s-    ))&//4<<P  //r*   c                 $    U R                  X5      $ )r   )r   )r%   r   r^   s      r'   parse_streamDriver.parse_stream   s    $$V33r*   filenameencodingc                 l    [        XS9 nU R                  XC5      sSSS5        $ ! , (       d  f       g= f)z(Parse a file and return the syntax tree.)r   N)openr   )r%   r   r   r^   r   s        r'   
parse_fileDriver.parse_file   s(     (.&$$V3 /..s   %
3textc                     [         R                  " [        R                  " U5      R                  U R
                  S9nU R                  X25      $ )z*Parse a string and return the syntax tree.r   )r   r   ioStringIOr   r   r~   )r%   r   r^   r!   s       r'   parse_stringDriver.parse_string   s=    ))KK&&
   //r*   rx   rs   c                 `   / nSnSnSnU H  nXG-  nU(       a]  US:X  aU  UR                  5       (       a'  XR:  a"  SR                  U5      nX[        U5      S  4s  $ UR                  U5        SnSnSnMi  Mk  US;   a  US-  nMx  US:X  a  SnM  US:X  a  SnM  SnM     SR                  U5      U4$ )	Nra   r   Frb   z 	r   T)stripjoinr$   r@   )	r%   rx   rs   linescurrent_linecurrent_columnwait_for_nlcharress	            r'   rm    Driver._partially_consume_prefix   s    D L4<#))++0G ggen"3s8:$666LL.#%L%&N"'K   !#!"!" #+ , wwu~|++r*   )r   rY   r#   )F)NF)r,   r-   r.   r/   r   r   r   r=   r   r   rV   r   r~   r	   strr   r   Pathr   r   r0   r   rm   r3   r4   r*   r'   r   r   k   s     &1A T @8M#: @4 @TV @D0r#w 0t 0 0
42c7 44 4B 4
 MR44(04EI4	40 0T 0b 0, ,S ,U3PS8_ ,r*   gt	cache_dirr+   c                 J   [         R                  R                  U 5      u  p#US:X  a  SnX#-   SR                  [	        [
        [        R                  5      5      -   S-   nU(       a=  [         R                  R                  U[         R                  R                  U5      5      $ U$ )Nz.txtra   .z.pickle)	ospathsplitextr   mapr   sysversion_infobasename)r   r   headtailnames        r'   _generate_pickle_namer      sw    !!"%JDv~;#c3+;+;"<==	IDww||Irww'7'7'=>>r*   gpsaveforcerY   c                 d   Uc  [         R                  " [        5      nUc  [        U 5      OUnU(       d  [	        X5      (       d4  [
        R                  " U 5      nU(       a   UR                  U5        U$  U$ [        R                  " 5       nUR                  U5        U$ ! [         a     U$ f = f)z'Load the grammar (maybe from a pickle).)r[   r\   r,   r   _newerr   generate_grammardumpOSErrorr   r   load)r   r   r   r   rY   gs         r'   r   r      s     ~""8,&(j	r	"bBF2NN!2226r
 H  H OO	r
H   Hs   #B! !
B/.B/abc                    [         R                  R                  U 5      (       d  g[         R                  R                  U5      (       d  g[         R                  R                  U 5      [         R                  R                  U5      :  $ )z0Inquire whether file a was written since file b.FT)r   r   existsgetmtime)r   r   s     r'   r   r     sW    77>>!77>>!77A"''"2"21"555r*   packagegrammar_sourcec                 \   [         R                  R                  U5      (       a  U(       a  [        X5      OSn[	        XS9$ [        [         R                  R                  U5      U5      n[        R                  " X5      nUc   e[        R                  " 5       nUR                  U5        U$ )a  Normally, loads a pickled grammar by doing
    pkgutil.get_data(package, pickled_grammar)
where *pickled_grammar* is computed from *grammar_source* by adding the
Python version and using a ``.pickle`` extension.

However, if *grammar_source* is an extant file, load_grammar(grammar_source)
is called instead. This facilitates using a packaged grammar file when needed
but preserves load_grammar's automatic regeneration behavior when possible.

N)r   )r   r   isfiler   r   r   pkgutilget_datar   r   loads)r   r   r   r   pickled_namedatar   s          r'   load_packaged_grammarr     s     
ww~~n%%AJ">=PTN22()9)9.)I9ULG2DAGGDMHr*   argsc                      U (       d  [        [        R                  SS 5      n [        R                  " [        R
                  [        R                  SS9  U  H  n[        USSS9  M     g)zMain program, when run as a script: produce grammar pickle files.

Calls load_grammar for each argument, a path to a grammar text file.
r   Nz%(message)s)levelr   formatT)r   r   )tupler   argvr[   basicConfigINFOstdoutr   )r   r   s     r'   mainr   .  sN    
 SXXab\"gll3::mTRd$/ r*   __main__r#   )zGrammar.txtNTFN)2__doc__
__author____all__r   r[   r   r   r   
contextlibr   dataclassesr   r   r   typingr	   r
   r   r   r   r   r   r   r   blib2to3.pgen2.grammarr   blib2to3.pgen2.tokenizer   blib2to3.pytreer   ra   r   r   r   r   r   r   r   r   r6   r   r   rV   r   r   r   r   r,   exitr0   r4   r*   r'   <module>r      s   3
^
$ 
  	  
 % (  R R R * 1  4 3S$$% , , ,6 6r{, {,|d x~   #  	
 V 26c 6c 6d 6 DH"%2:4.__0
 
 
 zHHSTV_ r*   