
    #hN1                        S SK Jr  S SKrS SKrS SKJr  S SKJr  SSKJ	r	  SSK
Jr  SSKJr  SS	KJr  SS
KJr  SSKJrJr  SSKJr  SrSr " S S\\5      rg)    )annotationsN)Iterator)Any   )grammars)
OrderedSet)CodegenError)UndefinedStr)IndentPrintMixin)compress_seq	safe_name)
NodeWalkera      #!/usr/bin/env python3

    # WARNING: CAVEAT UTILITOR
    #
    #  This file was automatically generated by TatSu.
    #
    #     https://pypi.python.org/pypi/tatsu/
    #
    #  Any changes you make to it will be overwritten the next time
    #  the file is generated.

    # ruff: noqa: C405, COM812, I001, F401, PLR1702, PLC2801, SIM117

    import sys
    from pathlib import Path

    from tatsu.buffering import Buffer
    from tatsu.parsing import Parser
    from tatsu.parsing import tatsumasu
    from tatsu.parsing import leftrec, nomemo, isname
    from tatsu.infos import ParserConfig
    from tatsu.util import re, generic_main
a  def main(filename, **kwargs):
    if not filename or filename == '-':
        text = sys.stdin.read()
    else:
        text = Path(filename).read_text()
    parser = {name}Parser()
    return parser.parse(
        text,
        filename=filename,
        **kwargs,
    )


if __name__ == '__main__':
    import json
    from tatsu.util import asjson

    ast = generic_main(main, {name}Parser, name='{name}')
    data = asjson(ast)
    print(json.dumps(data, indent=2))
c                  D  ^  \ rS rSr% \R
                  " 5       rS\S'   S5S6U 4S jjjr\	S 5       r
\	S 5       rS7S jrS8S jrS9S	 jrS:S
 jrS;S jrS<S jrS=S jrS>S jrS?S jrS@S jrSAS jrSBS jrSCS jrSDS jrSES jrSFS jrSGS jrSHS jrSIS jrSJS jrSKS jr SLS jr!SMS jr"SNS jr#SOS jr$SPS  jr%SQS! jr&SRS" jr'SSS# jr(STS$ jr)SUS% jr*SVS& jr+SWS' jr,SXS( jr-SYS) jr.SYS* jr/SZS+ jr0S[S, jr1S\S- jr2S8S. jr3S8S/ jr4S]S0 jr5S]S1 jr6S^S2 jr7S_S`S3 jjr8S4r9U =r:$ )aPythonCodeGeneratorA   zIterator[int]_counterc                .   > [         TU ]  5         Xl        g N)super__init__parser_name)selfr   	__class__s     V/Users/user/Downloads/htwk/venv/lib/python3.13/site-packages/tatsu/ngcodegen/python.pyr   PythonCodeGenerator.__init__D   s    &    c                ,    [        U R                  5      $ r   )nextr   clss    r   _next_nPythonCodeGenerator._next_nH   s    CLL!!r   c                8    [         R                  " 5       U l        g r   )	itertoolscountr   r   s    r   _reset_counter"PythonCodeGenerator._reset_counterL   s     (r   c                    U$ r    )r   nodes     r   walk_default PythonCodeGenerator.walk_defaultP   s    r   c                V   U R                   =(       d    UR                  nU R                  [        5        U R                  5         U R                  5         U R	                  U5        U R                  X5        U R                  X5        U R                  [        R                  US95        g )Nname)	r   r/   printHEADER_gen_keywords_gen_buffering_gen_parsingFOOTERformatr   grammarr   s      r   walk_Grammar PythonCodeGenerator.walk_GrammarS   su    &&6',,

6



7#G1'/

6==k=23r   c                  ^ ^ S mT R                  5         S=p#UR                  (       a&  SR                  UU 4S jUR                   5       5      nUR                  (       a4  SR                  UU 4S jUR                  R	                  5        5       5      nU(       a  U(       a	  US-   U-   nO	U(       a  UnUR
                  (       a  SOSnUR                  (       d	  U(       d  SOSnUR                  (       a  SOSnT R                  S	U S
U SU SU SUR                   S35        T R                  5          T R                  T R                  UR                  5      5        S S S 5        g ! , (       d  f       g = f)Nc                    [        U [        [        -  5      (       a  [        U 5      $ [	        U R                  S5      S   5      $ )Nz::r   )
isinstanceintfloatstrreprsplit)ps    r   
param_repr1PythonCodeGenerator.walk_Rule.<locals>.param_repr`   s4    !S5[))1vAGGDM!,--r    , c              3  R   >#    U  H  nT" TR                  U5      5      v   M     g 7fr   walk).0rC   rD   r   s     r   	<genexpr>0PythonCodeGenerator.walk_Rule.<locals>.<genexpr>i   s$      2=Q
499Q<((+s   $'c              3  `   >#    U  H#  u  pU S T" TR                  U5      5       3v   M%     g7f)=NrI   )rK   kvrD   r   s      r   rL   rM   m   s3      !1DA #Qz$))A,/011s   +.z	
@leftrecz
@nomemoz
@isnamez
                @tatsumasu(z)                z                z                
def _z_(self):
            )r&   paramsjoinkwparamsitems
is_leftrecis_memoizableis_namer0   r/   indentrJ   exp)r   rulerR   rT   leftrecnomemoisnamerD   s   `      @r   	walk_RulePythonCodeGenerator.walk_Rule_   sB   	. 	;;YY 26++ F ==yy ! MM//1! H
 hd]X-FF"&//,r %%g  	
 !%"

"8 $	   		{ #	
 [[]JJtyy*+ ]]s   6+E**
E8c                H    UR                   Ul        U R                  U5        g r   )rhsrZ   r_   )r   r[   s     r   walk_BasedRule"PythonCodeGenerator.walk_BasedRule   s    88tr   c                B    U R                  SUR                   S35        g )Nzself._z_())r0   r/   )r   refs     r   walk_RuleRef PythonCodeGenerator.walk_RuleRef   s    

VCHH:S)*r   c                N    U R                  UR                  R                  5        g r   )rJ   r[   rZ   )r   includes     r   walk_RuleInclude$PythonCodeGenerator.walk_RuleInclude   s    		',,""#r   c                &    U R                  S5        g )Nzself._void()r0   )r   voids     r   	walk_VoidPythonCodeGenerator.walk_Void       

>"r   c                &    U R                  S5        g )Nzself._any()rn   )r   anys     r   walk_AnyPythonCodeGenerator.walk_Any       

=!r   c                &    U R                  S5        g )Nzself._fail()rn   )r   fails     r   	walk_FailPythonCodeGenerator.walk_Fail   rr   r   c                &    U R                  S5        g )Nzself._cut()rn   )r   cuts     r   walk_CutPythonCodeGenerator.walk_Cut   rw   r   c                    SR                  S UR                  R                  5        5       5      nU R                  SU S35        g )N
c              3  .   #    U  H  nS U< 3v   M     g7f)z# Nr)   )rK   cs     r   rL   3PythonCodeGenerator.walk_Comment.<locals>.<genexpr>   s     K.JBqe*.Js   )rS   comment
splitlinesr0   )r   r   liness      r   walk_Comment PythonCodeGenerator.walk_Comment   s7    		Kgoo.H.H.JKK

Rwb>"r   c                &    U R                  U5        g r   )r   )r   r   s     r   walk_EOLComment#PythonCodeGenerator.walk_EOLComment   s    '"r   c                &    U R                  S5        g )Nzself._check_eof()rn   )r   eofs     r   walk_EOFPythonCodeGenerator.walk_EOF   s    

&'r   c                    U R                  S5        U R                  5          U R                  UR                  5        S S S 5        g ! , (       d  f       g = f)Nzwith self._group():r0   rY   rJ   rZ   )r   groups     r   
walk_GroupPythonCodeGenerator.walk_Group   s2    

()[[]IIeii  ]]   A
Ac                D    U R                  SUR                  < S35        g )Nzself._token())r0   token)r   r   s     r   
walk_TokenPythonCodeGenerator.walk_Token   s    

\%++23r   c                D    U R                  SUR                  < S35        g )Nzself._constant(r   )r0   literal)r   constants     r   walk_Constant!PythonCodeGenerator.walk_Constant   s    

_X%5%5$8:;r   c                ^    U R                  SUR                  < SUR                   S35        g )Nzself._alert(rG   r   )r0   r   level)r   alerts     r   
walk_AlertPythonCodeGenerator.walk_Alert   s&    

\%--!2"U[[MCDr   c                D    U R                  SUR                  < S35        g )Nzself._pattern(r   )r0   pattern)r   r   s     r   walk_Pattern PythonCodeGenerator.walk_Pattern   s    

^GOO#6a89r   c                    U R                  S5        U R                  5          U R                  UR                  5        S S S 5        g ! , (       d  f       g = f)Nzwith self._if():r   r   	lookaheads     r   walk_Lookahead"PythonCodeGenerator.walk_Lookahead   s2    

%&[[]IIimm$ ]]r   c                    U R                  S5        U R                  5          U R                  UR                  5        S S S 5        g ! , (       d  f       g = f)Nzwith self._ifnot():r   r   s     r   walk_NegativeLookahead*PythonCodeGenerator.walk_NegativeLookahead   s2    

()[[]IIimm$ ]]r   c                \    U R                  UR                  5        U R                  U5        g r   )rJ   sequence_gen_defines_declaration)r   seqs     r   walk_Sequence!PythonCodeGenerator.walk_Sequence   s     		#,,%%c*r   c                t   [        UR                  5      S:X  a  U R                  UR                  S   5        g UR                  5       nU(       a  [        R
                  " USS9nS/UQnOS/nSR                  S U 5       5      nU R                  S	5        U R                  5          U R                  UR                  5        U R                  S
5        U R                  5          U R                  U5        S S S 5        U R                  S5        S S S 5        g ! , (       d  f       N(= f! , (       d  f       g = f)N   r   (   )widthzexpecting one of: zno available optionsr   c              3  8   #    U  H  n[        U5      v   M     g 7fr   rA   )rK   es     r   rL   2PythonCodeGenerator.walk_Choice.<locals>.<genexpr>   s     2Eq477E   zwith self._choice():zself._error(r   )	lenoptionsrJ   lookahead_strtextwrapwraprS   r0   rY   )r   choicefirstsetmsglineserrorerrorss         r   walk_ChoicePythonCodeGenerator.walk_Choice   s    v~~!#IIfnnQ'('')}}XR8H)5H5E+,E2E22

)*[[]IIfnn%JJ~&

6" JJsO ]  ]s$   '=D)$D6D)
D&	"D))
D7c                    U R                  S5        U R                  5          U R                  UR                  5        S S S 5        g ! , (       d  f       g = f)Nzwith self._option():r   )r   options     r   walk_OptionPythonCodeGenerator.walk_Option   s2    

)*[[]IIfjj! ]]r   c                    U R                  S5        U R                  5          U R                  UR                  5        S S S 5        g ! , (       d  f       g = f)Nzwith self._optional():r   )r   optionals     r   walk_Optional!PythonCodeGenerator.walk_Optional   s2    

+,[[]IIhll# ]]r   c                &    U R                  S5        g )Nzself._empty_closure()rn   )r   closures     r   walk_EmptyClosure%PythonCodeGenerator.walk_EmptyClosure   s    

*+r   c                d    U R                  UR                  5      nU R                  SU S35        g )Nzself._closure(blockr   
_gen_blockrZ   r0   r   r   ns      r   walk_Closure PythonCodeGenerator.walk_Closure   s*    OOGKK(

(1-.r   c                d    U R                  UR                  5      nU R                  SU S35        g )Nzself._positive_closure(blockr   r   r   s      r   walk_PositiveClosure(PythonCodeGenerator.walk_PositiveClosure   s*    OOGKK(

1!A67r   c                    U R                  UR                  SS9nU R                  UR                  5      nU R                  SU SU S35        g )Nsepr.   zself._join(block, sepr   r   r   rZ   r0   r   rS   mr   s       r   	walk_JoinPythonCodeGenerator.walk_Join   sF    OODHH5O1OODHH%

%aSaS23r   c                    U R                  UR                  SS9nU R                  UR                  5      nU R                  SU SU S35        g )Nr   r.   zself._positive_join(blockr   r   r   r   s       r   walk_PositiveJoin%PythonCodeGenerator.walk_PositiveJoin   sF    OODHH5O1OODHH%

.qcqc;<r   c                    U R                  UR                  SS9nU R                  UR                  5      nU R                  SU SU S35        g )Nr   r.   zself._left_join(blockr   r   r   r   s       r   walk_LeftJoin!PythonCodeGenerator.walk_LeftJoin   sF    OODHH5O1OODHH%

*1#U1#Q78r   c                    U R                  UR                  SS9nU R                  UR                  5      nU R                  SU SU S35        g )Nr   r.   zself._right_join(blockr   r   r   r   s       r   walk_RightJoin"PythonCodeGenerator.walk_RightJoin  sF    OODHH5O1OODHH%

+A3eA3a89r   c                    U R                  UR                  SS9nU R                  UR                  5      nU R                  SU SU S35        g )Nr   r.   zself._gather(blockr   r   r   r   gatherr   r   s       r   walk_GatherPythonCodeGenerator.walk_Gather	  sF    OOFJJUO3OOFJJ'

's%s!45r   c                    U R                  UR                  SS9nU R                  UR                  5      nU R                  SU SU S35        g )Nr   r.   zself._positive_gather(blockr   r   r   r   s       r   walk_PositiveGather'PythonCodeGenerator.walk_PositiveGather  sF    OOFJJUO3OOFJJ'

051=>r   c                d    U R                  UR                  5      nU R                  SU S35        g )Nzself._skip_to(blockr   r   )r   skiptor   s      r   walk_SkipToPythonCodeGenerator.walk_SkipTo  s*    OOFJJ'

(1-.r   c                x    U R                  UR                  5        U R                  SUR                   S35        g )Nzself.name_last_node('')rJ   rZ   r0   r/   r   nameds     r   
walk_NamedPythonCodeGenerator.walk_Named  s,    		%))

*5::,b9:r   c                x    U R                  UR                  5        U R                  SUR                   S35        g )Nzself.add_last_node_to_name('r  r  r  s     r   walk_NamedList"PythonCodeGenerator.walk_NamedList  s,    		%))

1%**R@Ar   c                &    U R                  U5        g r   )r  r   overrides     r   walk_Override!PythonCodeGenerator.walk_Override  s    !r   c                &    U R                  U5        g r   )r  r  s     r   walk_OverrideList%PythonCodeGenerator.walk_OverrideList"  s    H%r   c                    g r   r)   )r   specials     r   walk_Special PythonCodeGenerator.walk_Special%  s    r   c                6   UR                    Vs/ s H  o"c  M  [        U5      PM     nnU(       d  U R                  S5        O2SR                  S U 5       5      nSU S3nU R                  SU 35        U R                  5         U R                  5         g s  snf )NzKEYWORDS: set[str] = set()r   c              3  0   #    U  H  nS U< S3v   M     g7f)z    ,Nr)   )rK   rP   s     r   rL   4PythonCodeGenerator._gen_keywords.<locals>.<genexpr>-  s     $EHqtA5]Hs   z{
z
}zKEYWORDS: set[str] = )keywordsr@   r0   rS   )r   r8   rP   r  keywords_strs        r   r2   !PythonCodeGenerator._gen_keywords(  s    $+$4$4F$4qFCF$4FJJ3499$EH$EEL!,t4LJJ.|n=>



 Gs
   BBc                L   UR                   R                  =(       d    UR                  S   R                  nUR                   R                  n[        U[        5      (       a  S n[        U5      nU R                  SU SUR                   R                   SUR                   R                   SUR                   R                  < SUR                   R                   SUR                   R                  < SUR                   R                  < S	U< S
35        U R                  5         g )Nr   z
                config = ParserConfig.new(
                    config,
                    owner=self,
                    whitespace=z ,
                    nameguard=z!,
                    ignorecase=z ,
                    namechars=z ,
                    parseinfo=z,
                    comments=z#,
                    eol_comments=zC,
                    keywords=KEYWORDS,
                    start=zT,
                )
                config = config.replace(**settings)
            )configstartrulesr/   
whitespacer=   r
   rA   r0   	nameguard
ignorecase	namechars	parseinfocommentseol_comments)r   r8   r  r!  s       r   	_gen_initPythonCodeGenerator._gen_init4  s   $$=a(8(=(=^^..
j,//J*%


  !+| ,&~~778 9  ' 9 9: ;&~~77: ;&~~778 9%nn558 9"").."="=!@ A ) $	
$ 	

r   c                \   U R                  SU S35        U R                  5          U R                  S5        U R                  5          U R                  U5        U R                  S5        S S S 5        S S S 5        U R                  5         g ! , (       d  f       N'= f! , (       d  f       N0= f)Nclass zBuffer(Buffer):zLdef __init__(self, text, /, config: ParserConfig | None = None, **settings):z%super().__init__(text, config=config))r0   rY   r(  r7   s      r   r3   "PythonCodeGenerator._gen_bufferingP  st    

VK=89[[]JJefw'

BC  
 	

  ]s#   "B#B+B
B	B
B+c                   U R                  5         U R                  SU S35        U R                  5          U R                  S5        U R                  5          U R                  U5        U R                  S5        S S S 5        U R                  5         U R                  UR                  5        S S S 5        U R                  5         g ! , (       d  f       NR= f! , (       d  f       N0= f)Nr+  zParser(Parser):zFdef __init__(self, /, config: ParserConfig | None = None, **settings):zsuper().__init__(config=config))r0   rY   r(  rJ   r   r7   s      r   r4    PythonCodeGenerator._gen_parsingZ  s    



VK=89[[]JJ_`w'

<=  JJLIIgmm$  	

  ]s#   "C#C;3C
C	C
C&c                T  ^ [        UR                  5       5      n[        S U 5       5      m[        U4S jU 5       5      nU(       d  T(       d  g SR                  [	        S U 5       5      5      nSR                  [	        S T 5       5      5      nT(       d  U R                  SU SU S35        g U R                  S	5        U R                  5          U R                  S
U S35        U R                  S
U S35        S S S 5        U R                  S5        g ! , (       d  f       N = f)Nc              3  N   #    U  H  u  pU(       d  M  [        U5      v   M     g 7fr   r   )rK   dvalues      r   rL   ?PythonCodeGenerator._gen_defines_declaration.<locals>.<genexpr>h  s     C'haU\Yq\\'s   %%c              3  `   >#    U  H#  u  pU(       a  M  UT;  d  M  [        U5      v   M%     g 7fr   r1  )rK   r2  r3  ldefss      r   rL   r4  i  s1      
# e^ IaLL#s   ...rG   c              3  8   #    U  H  n[        U5      v   M     g 7fr   r   rK   r2  s     r   rL   r4  r       $<eT!WWer   c              3  8   #    U  H  n[        U5      v   M     g 7fr   r   r8  s     r   rL   r4  s  r9  r   zself._define([z], [z])zself._define([z],r   )r   definesosetrS   sortedr0   rY   )r   r*   r<  sdefs	sdefs_str	ldefs_strr6  s         @r   r   ,PythonCodeGenerator._gen_defines_declarationf  s    t||~.C'CC 
#
 
 IIf$<e$<<=	IIf$<e$<<=	JJ	{$ykDEJJ'

Qyk,-

Qyk,-  JJsO s   +D
D'c                0   SUR                  5       ;   a  [        U S35      eU R                  5       nU R                  5         U R                  SU U S35        U R	                  5          U R                  U5        S S S 5        U$ ! , (       d  f       U$ = f)Nr)   z may repeat empty sequencezdef z():)r   r	   r!   r0   rY   rJ   )r   rZ   r/   r   s       r   r   PythonCodeGenerator._gen_block~  s     #&@ABBLLN



T$s#&'[[]IIcN   ] s   *B
B)r   )rF   )r   r@   )r*   r   )r8   grammars.Grammar)r[   zgrammars.Rule)r[   zgrammars.BasedRule)rf   zgrammars.RuleRef)rj   zgrammars.RuleInclude)ro   zgrammars.Void)rt   zgrammars.Any)ry   zgrammars.Fail)r}   zgrammars.Cut)r   zgrammars.Comment)r   zgrammars.EOLComment)r   zgrammars.EOF)r   zgrammars.Group)r   zgrammars.Token)r   zgrammars.Constant)r   zgrammars.Alert)r   zgrammars.Pattern)r   zgrammars.Lookahead)r   zgrammars.NegativeLookahead)r   zgrammars.Sequence)r   zgrammars.Choice)r   zgrammars.Option)r   zgrammars.Optional)r   zgrammars.EmptyClosure)r   zgrammars.Closure)r   zgrammars.PositiveClosure)rS   zgrammars.Join)rS   zgrammars.PositiveJoin)rS   zgrammars.LeftJoin)rS   zgrammars.RightJoin)r   zgrammars.Gather)r   zgrammars.PositiveGather)r   zgrammars.SkipTo)r  zgrammars.Named)r  zgrammars.Override)r  zgrammars.OverrideList)r  zgrammars.Special)r8   rE  r   r@   )r*   grammars.Model)block)rZ   rF  );__name__
__module____qualname____firstlineno__r$   r%   r   __annotations__r   classmethodr!   r&   r+   r9   r_   rc   rg   rk   rp   ru   rz   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  r2   r(  r3   r4   r   r   __static_attributes____classcell__)r   s   @r   r   r   A   s/   'oo/Hm/' ' " " ) )
4*,X
+$#"#"##(!
4<E:%
%
+*"
$
,/84
=
9
:
6
?
/;B"&
8
0
 
r   r   )
__future__r   r$   r   collections.abcr   typingr   rF   r   collectionsr   r=  
exceptionsr	   infosr
   mixins.indentr   utilr   r   walkersr   r1   r5   r   r)   r   r   <module>rY     sH    "   $   , %   , *  
2
0G*J Gr   