
    daf1                         d dl Zd dlZd dlmZ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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! dZ"dZ# G d d	e      Z$ G d
 de      Z% G d de!e      Z&y)    N)IOAnyDictOptionalSequenceSetTextTuple)grammar)AltCutForcedGatherGrammarVisitorGroup	Lookahead	NamedItemNameLeafNegativeLookaheadOptPositiveLookaheadRepeat0Repeat1RhsRule
StringLeaf)ParserGeneratorz#!/usr/bin/env python3.8
# @generated by pegen from {filename}

import ast
import sys
import tokenize

from typing import Any, Optional

from pegen.parser import memoize, memoize_left_rec, logger, Parser

zr

if __name__ == '__main__':
    from pegen.parser import simple_parser_main
    simple_parser_main({class_name})
c                       e Zd ZdedefdZdedefdZdedefdZ	de
defdZdedefdZdedefdZdedefd	Zdedefd
ZdedefdZdedeeef   fdZdedeeef   fdZdedefdZdedefdZde defdZ!y)InvalidNodeVisitornodereturnc                 <    |j                   }|j                  d      S )Ninvalid)value
startswithselfr    names      A/root/Python-3.12.4/Tools/peg_generator/pegen/python_generator.pyvisit_NameLeafz!InvalidNodeVisitor.visit_NameLeaf1   s    zzy))    c                      yNF r'   r    s     r)   visit_StringLeafz#InvalidNodeVisitor.visit_StringLeaf5       r+   c                 8    | j                  |j                        S N)visititemr/   s     r)   visit_NamedItemz"InvalidNodeVisitor.visit_NamedItem8       zz$))$$r+   c                 @     t         fd|j                  D              S )Nc              3   @   K   | ]  }j                  |        y wr3   r4   ).0altr'   s     r)   	<genexpr>z/InvalidNodeVisitor.visit_Rhs.<locals>.<genexpr><   s     8s4::c?8   )anyaltsr/   s   ` r)   	visit_RhszInvalidNodeVisitor.visit_Rhs;   s    8dii888r+   c                 @     t         fd|j                  D              S )Nc              3   @   K   | ]  }j                  |        y wr3   r:   )r;   r5   r'   s     r)   r=   z/InvalidNodeVisitor.visit_Alt.<locals>.<genexpr>?   s     ;4::d#;r>   )r?   itemsr/   s   ` r)   	visit_AltzInvalidNodeVisitor.visit_Alt>   s    ;

;;;r+   c                 8    | j                  |j                        S r3   r4   r    r/   s     r)   lookahead_call_helperz(InvalidNodeVisitor.lookahead_call_helperA   r7   r+   c                 $    | j                  |      S r3   rH   r/   s     r)   visit_PositiveLookaheadz*InvalidNodeVisitor.visit_PositiveLookaheadD       ))$//r+   c                 $    | j                  |      S r3   rJ   r/   s     r)   visit_NegativeLookaheadz*InvalidNodeVisitor.visit_NegativeLookaheadG   rL   r+   c                 8    | j                  |j                        S r3   rG   r/   s     r)   	visit_OptzInvalidNodeVisitor.visit_OptJ   r7   r+   c                 8    | j                  |j                        S r3   rG   r/   s     r)   visit_RepeatzInvalidNodeVisitor.visit_RepeatM   r7   r+   c                 8    | j                  |j                        S r3   rG   r/   s     r)   visit_GatherzInvalidNodeVisitor.visit_GatherP   r7   r+   c                 8    | j                  |j                        S r3   r4   rhsr/   s     r)   visit_GroupzInvalidNodeVisitor.visit_GroupS       zz$((##r+   c                      yr-   r.   r/   s     r)   	visit_CutzInvalidNodeVisitor.visit_CutV   r1   r+   c                 8    | j                  |j                        S r3   rG   r/   s     r)   visit_ForcedzInvalidNodeVisitor.visit_ForcedY   r7   r+   N)"__name__
__module____qualname__r   boolr*   r   r0   r   r6   r   rA   r   rE   r   rH   r   rK   r   rN   r   rP   r   r
   strrR   r   rT   r   rX   r   r[   r   r]   r.   r+   r)   r   r   0   s   *8 * *Z D %I %$ %9c 9d 9<c <d <%) % %0,= 0$ 00,= 0$ 0%c %d %% %U38_ %% %E#s(O %$ $$ $c d % %D %r+   r   c                      e Zd ZdefdZdedeee   ef   fdZ	de
deeef   fdZdedeee   ef   fdZdedeee   ef   fdZdedeeef   fd	Zdeded
ef   fdZdeded
ef   fdZdedeeef   fdZdedeeef   fdZdedeeef   fdZdedeeef   fdZdedeee   ef   fdZde deeef   fdZ!de"deeef   fdZ#y
)PythonCallMakerVisitorparser_generatorc                      || _         i | _        y r3   )gencache)r'   re   s     r)   __init__zPythonCallMakerVisitor.__init__^   s    #%'
r+   r    r!   c                     |j                   }|dk(  ry|dv r|j                         }|d| dfS |dv rd|j                         z   d|d	fS |d| dfS )
NSOFT_KEYWORD)soft_keywordzself.soft_keyword())NAMENUMBERSTRINGOPTYPE_COMMENTself.())NEWLINEDEDENTINDENT	ENDMARKERASYNCAWAIT_self.expect())r$   lowerr&   s      r)   r*   z%PythonCallMakerVisitor.visit_NameLeafb   sz    zz>!8EE::<D5b)))QQ%dXQ'???uTF"%%%r+   c                 &    dd|j                    dfS )Nliteralr{   r|   )r$   r/   s     r)   r0   z'PythonCallMakerVisitor.visit_StringLeafn   s    LA666r+   c                    || j                   v r| j                   |   S t        |j                        dk(  r^t        |j                  d   j                        dk(  r9| j	                  |j                  d   j                  d         | j                   |<   n0| j
                  j                  |      }|d| df| j                   |<   | j                   |   S )N   r   rr   rs   )rh   lenr@   rD   r4   rg   artifical_rule_from_rhsr&   s      r)   rA   z PythonCallMakerVisitor.visit_Rhsq   s    4::::d##tyy>Q3tyy|'9'9#:a#?#zz$))A,*<*<Q*?@DJJt8833D9D#uTF"%55DJJtzz$r+   c                 v    | j                  |j                        \  }}|j                  r|j                  }||fS r3   )r4   r5   r(   r'   r    r(   calls       r)   r6   z&PythonCallMakerVisitor.visit_NamedItem{   s2    ZZ		*
d9999DTzr+   c                     | j                  |j                        \  }}|j                  dd      \  }}|d   dk(  sJ |d d }||fS )N(r   r|   )r4   r    split)r'   r    r(   r   headtails         r)   rH   z,PythonCallMakerVisitor.lookahead_call_helper   sQ    ZZ		*
dZZQ'
dBx3CRyTzr+   Nc                 @    | j                  |      \  }}d d| d| dfS )Nzself.positive_lookahead(, r|   rJ   r'   r    r   r   s       r)   rK   z.PythonCallMakerVisitor.visit_PositiveLookahead   1    //5
d/vRvQ???r+   c                 @    | j                  |      \  }}d d| d| dfS )Nzself.negative_lookahead(r   r|   rJ   r   s       r)   rN   z.PythonCallMakerVisitor.visit_NegativeLookahead   r   r+   c                 v    | j                  |j                        \  }}|j                  d      rd|fS d| dfS )N,opt)r4   r    endswithr   s       r)   rP   z PythonCallMakerVisitor.visit_Opt   sA    ZZ		*
d ==$;TF!*$$r+   c                     || j                   v r| j                   |   S | j                  j                  |j                  d      }|d| df| j                   |<   | j                   |   S )NFrr   z(),rh   rg   artificial_rule_from_repeatr    r&   s      r)   visit_Repeat0z$PythonCallMakerVisitor.visit_Repeat0   sb    4::::d##xx33DIIuE5c!22

4zz$r+   c                     || j                   v r| j                   |   S | j                  j                  |j                  d      }|d| df| j                   |<   | j                   |   S )NTrr   rs   r   r&   s      r)   visit_Repeat1z$PythonCallMakerVisitor.visit_Repeat1   sb    4::::d##xx33DIItD5b!11

4zz$r+   c                     || j                   v r| j                   |   S | j                  j                  |      }|d| df| j                   |<   | j                   |   S )Nrr   rs   )rh   rg   artifical_rule_from_gatherr&   s      r)   rT   z#PythonCallMakerVisitor.visit_Gather   s\    4::::d##xx22485b!11

4zz$r+   c                 8    | j                  |j                        S r3   rV   r/   s     r)   rX   z"PythonCallMakerVisitor.visit_Group   rY   r+   c                      y)N)cutTruer.   r/   s     r)   r[   z PythonCallMakerVisitor.visit_Cut   s    r+   c                 *   t        |j                  t              rG| j                  |j                  j                        \  }}dd| d|j                  j                  dfS dd|j                  j
                   d|j                  j
                  dfS )Nforcedzself.expect_forced(z, '''(z)''')zself.expect_forced(self.expect(z), r|   )
isinstancer    r   r4   rW   r$   )r'   r    rz   vals       r)   r]   z#PythonCallMakerVisitor.visit_Forced   s    dii'ZZ		.FAs23%vdiimm=NeTTT 1$))//1B#diiooEXXYZ r+   )$r^   r_   r`   r   ri   r   r
   r   rb   r*   r   r0   r   rA   r   r6   r   rH   r   rK   r   rN   r   rP   r   r   r   r   r   rT   r   rX   r   r[   r   r]   r.   r+   r)   rd   rd   ]   s   ( (
&8 
&hsmS6H0I 
&7Z 7E#s(O 7 c  eHSM3,>&?  I %s8J2K ) c3h @,= @%c	BR @@,= @%c	BR @%c %eCHo % '  eCHo   '  eCHo     E#s(O  $ $%s0B*C $c eCHo  E#s(O r+   rd   c                   "    e Zd Z eej
                  j                               ddfdej                  de	e
e      dee   de	e   de	e   f
 fdZded	dfd
Zdee   d	efdZded	dfdZded	dfdZddededed	dfdZdededed	dfdZ xZS )PythonParserGeneratorNr   filetokenslocation_formattingunreachable_formattingc                     |j                  d       t        | 	  |||       t        |       | _        t               | _        |xs d| _        |xs d| _        y )Nrk   zNone  # pragma: no coverzflineno=start_lineno, col_offset=start_col_offset, end_lineno=end_lineno, end_col_offset=end_col_offset)	addsuperri   rd   callmakervisitorr   invalidvisitorr   r   )r'   r   r   r   r   r   	__class__s         r)   ri   zPythonParserGenerator.__init__   s_     	

>"&$/8Nt8T2D2F&<&Z@Z# CC 	 r+   filenamer!   c                    | j                          | j                  j                  j                  dt              }|Ot
        j                  j                  |      }| j                  |j                  d      j                  |             | j                  j                  j                  dd      }|r| j                  |       | j                  j                  j                  dd      }| j                  d       | j                  d	| d
       | j                  j                         D ]<  }| j                          | j                         5  | j                  |       d d d        > | j                          | j                         5  | j                  dt        | j                                 | j                  dt        | j"                                d d d        | j                  j                  j                  dt$        j                  |            }|!| j                  |j                  d             y y # 1 sw Y   xY w# 1 sw Y   txY w)Nheader
)r   	subheader classGeneratedParserzL# Keywords and soft keywords are listed at the end of the parser definition.zclass z	(Parser):zKEYWORDS = zSOFT_KEYWORDS = trailer)
class_name)collect_rulesr   metasgetMODULE_PREFIXospathbasenameprintrstripformat	all_rulesvaluesindentr4   tuplekeywordssoft_keywordsMODULE_SUFFIX)r'   r   r   r   r   cls_nameruler   s           r)   generatezPythonParserGenerator.generate   s   ##''-@ww''1HJJv}}T*1181DELL&&**;;	JJy!<<%%))'3DE

ab

VH:Y/0NN))+ 	!DJJL !

4 ! !	!
 	

[[] 	GJJU4==%9$:;<JJ)%0B0B*C)DEF	G ,,$$((M4H4HT\4H4]^JJw~~d+, ! !	G 	Gs   H?
AI?I		Ir@   c                    |D ]|  }|j                   rd|j                   v r y|j                  D ]O  }t        |j                  t              s| j                  |j                  j                  j                        sN  y ~ y)N	LOCATIONSTF)actionrD   r   r5   r   alts_uses_locationsrW   r@   )r'   r@   r<   ns       r)   r   z)PythonParserGenerator.alts_uses_locations   sh     	 CzzkSZZ7YY  affe,1I1I!&&**//1Z 	  r+   r    c                 6   |j                         }|j                         }|j                         }|j                  r0|j                  r| j                  d       n#| j                  d       n| j                  d       |j                  xs d}| j                  d|j                   d| d       | j                         5  | j                  d|j                   d	|        | j                  d
       | j                  |j                  j                        r"| j                  d       | j                  d       |r| j                  d       | j                  |||       |r| j                  d       n| j                  d       d d d        y # 1 sw Y   y xY w)Nz@memoize_left_recz@loggerz@memoizer   zdef z(self) -> Optional[z]:z# z: mark = self._mark()ztok = self._tokenizer.peek()z*start_lineno, start_col_offset = tok.startzchildren = []is_loop	is_gatherzreturn childrenzreturn None)r   r   flattenleft_recursiveleaderr   typer(   r   r   rW   r@   r4   )r'   r    r   r   rW   	node_types         r)   
visit_Rulez PythonParserGenerator.visit_Rule   s>   ,,.NN$	lln{{

./ 

9%JJz"II&	

T$))$7	{"EF[[] 	*JJDII;b./JJ,-''6

9:

GH

?+JJsGyJA

,-

=)	* 	* 	*s    CFFc                    | j                   j                  |j                        \  }}|j                  r|j                  }|s| j	                  |       y |dk7  r| j                  |      }| j	                  d| d| d       y )Nr   r   z := r|   )r   r4   r5   r(   r   deduper   s       r)   r6   z%PythonParserGenerator.visit_NamedItem  so    **00;
d9999DJJtu}{{4(JJ4&TF!,-r+   r   r   c                     |rt        |j                        dk(  sJ |j                  D ]  }| j                  |||        y )Nr   r   )r   r@   r4   )r'   r    r   r   r<   s        r)   rA   zPythonParserGenerator.visit_Rhs  sB    tyy>Q&&&99 	BCJJsGyJA	Br+   c                 :   t        d |j                  D              }| j                         5  |r| j                  d       |r| j                  d       n| j                  d       | j	                         5  d}|j                  D ]=  }|rd}n| j                  d       | j                  |       |s-| j                  d       ? 	 d d d        | j                  d	       | j	                         5  |j                  }|s|r=t        | j                        d
k(  sJ d| j                  d    d| j                  d    }n| j                  j                  |      rd}nt        | j                        dk(  r| j                  d    }nbddj                  | j                         d}nBd|v r>| j                  d       | j                  d       |j                  d| j                        }|r'| j                  d| d       | j                  d       n4d|v r|j                  d| j                        }| j                  d|        d d d        | j                  d       |r| j                  d       d d d        y # 1 sw Y   xY w# 1 sw Y   CxY w# 1 sw Y   y xY w)Nc              3   P   K   | ]  }t        |j                  t                 y wr3   )r   r5   r   )r;   r5   s     r)   r=   z2PythonParserGenerator.visit_Alt.<locals>.<genexpr>&  s     HTjC0Hs   $&zcut = Falsezwhile (zif (TFandzis not Nonez):   [r   z] + r   UNREACHABLEr   ]r   z5tok = self._tokenizer.get_last_non_whitespace_token()z$end_lineno, end_col_offset = tok.endzchildren.append(r|   r   zreturn zself._reset(mark)zif cut: return None)r?   rD   local_variable_contextr   r   r4   r   r   local_variable_namesr   joinreplacer   r   )r'   r    r   r   has_cutfirstr5   r   s           r)   rE   zPythonParserGenerator.visit_Alt%  s[   HTZZHH((* 2	2

=)

9%

6" 	2 JJ 2D %

5)JJt$ 

=12	2 JJt 3 "4#<#<=BBB 9 9! <=T$B[B[\]B^A_`   ..44T:%2F !:!:;q@(,(A(A!(D'EF'(43L3L)M(Na%PF F*JJVWJJEF#^^K9Q9QRFJJ!1&;<JJ!46$.!'t?Z?Z![JJ12538 JJ*+

01e2	2 2	2	2 	23 3'2	2 2	2sC   A	J6;I82I8)J/EJ,J8J	=JJ	
JJ)FF)r^   r_   r`   settokentok_namer   r   Grammarr   r   r	   r   rb   ri   r   r   r   ra   r   r   r   r   r6   r   rA   rE   __classcell__)r   s   @r)   r   r      s   
 u~~4467-104

 r$x 
 C	

 &c]
 !)
&- - -4 $ *t * *:	.I 	.$ 	.Bc BD BT BVZ B42c 42D 42T 42d 42r+   r   )'os.pathr   r   typingr   r   r   r   r   r   r	   r
   pegenr   pegen.grammarr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   pegen.parser_generatorr   r   r   r   rd   r   r.   r+   r)   <module>r      so      F F F     & 3*% *%Z`^ `FY2O^ Y2r+   