
    }fZ1                        d dl mZ d dlZd dlZd dlmZ d dlmZ ddlm	Z	 ddl
mZ ddlmZ dd	lmZ dd
lmZ ddlmZmZ ddlmZ dZdZ G d dee      Zy)    )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                      e Zd ZU  ej                         Zded<   d3d4 fdZed        Z	ed        Z
d5dZd6dZd7dZd8d	Zd9d
Zd:dZd;dZd<dZd=dZd>dZd?dZd@dZdAdZdBdZdCdZdDdZdEdZdFdZdGdZdHdZdIdZdJdZ dKdZ!dLdZ"dMdZ#dNdZ$dOd Z%dPd!Z&dQd"Z'dRd#Z(dSd$Z)dTd%Z*dUd&Z+dVd'Z,dWd(Z-dWd)Z.dXd*Z/dYd+Z0dZd,Z1d6d-Z2d6d.Z3d[d/Z4d[d0Z5d\d1Z6d]d^d2Z7 xZ8S )_PythonCodeGeneratorzIterator[int]_counterc                0    t         |           || _        y N)super__init__parser_name)selfr   	__class__s     U/var/www/feuerwehr-webapp/venv/lib/python3.12/site-packages/tatsu/ngcodegen/python.pyr   zPythonCodeGenerator.__init__D   s    &    c                ,    t        | j                        S r   )nextr   clss    r   _next_nzPythonCodeGenerator._next_nH   s    CLL!!r   c                6    t        j                         | _        y r   )	itertoolscountr   r   s    r   _reset_counterz"PythonCodeGenerator._reset_counterL   s     (r   c                    |S r    )r   nodes     r   walk_defaultz PythonCodeGenerator.walk_defaultP   s    r   c                V   | j                   xs |j                  }| j                  t               | j                          | j                          | j	                  |       | j                  ||       | j                  ||       | j                  t        j                  |             y )Nname)	r   r*   printHEADER_gen_keywords_gen_buffering_gen_parsingFOOTERformatr   grammarr   s      r   walk_Grammarz PythonCodeGenerator.walk_GrammarS   sy    &&6',,

6



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

6==k=23r   c                    d  j                          dx}}|j                  r%dj                   fd|j                  D              }|j                  r3dj                   fd|j                  j	                         D              }|r|r	|dz   |z   }n|r|}|j
                  rdnd}|j                  s|sdnd}|j                  rdnd} j                  d	| d
| d| d| d|j                   d        j                         5   j                   j                  |j                               d d d        y # 1 sw Y   y xY w)Nc                    t        | t        t        z        rt        |       S t	        | j                  d      d         S )Nz::r   )
isinstanceintfloatstrreprsplit)ps    r   
param_reprz1PythonCodeGenerator.walk_Rule.<locals>.param_repr`   s1    !S5[)1vAGGDM!,--r    , c              3  L   K   | ]  } j                  |              y wr   walk).0r=   r>   r   s     r   	<genexpr>z0PythonCodeGenerator.walk_Rule.<locals>.<genexpr>i   s#      -.
499Q<(s   !$c              3  \   K   | ]#  \  }}| d  j                  |              % yw)=NrB   )rD   kvr>   r   s      r   rE   z0PythonCodeGenerator.walk_Rule.<locals>.<genexpr>m   s6      !Aq #Qz$))A,/01!s   ),z	
@leftrecz
@nomemoz
@isnamez
                @tatsumasu(z)                z                z                
def _z_(self):
            )r#   paramsjoinkwparamsitems
is_leftrecis_memoizableis_namer+   r*   indentrC   exp)r   rulerJ   rL   leftrecnomemoisnamer>   s   `      @r   	walk_RulezPythonCodeGenerator.walk_Rule_   sO   	. 	;;YY 26++ F ==yy ! MM//1! H
 hd]X-FF"&//,r %%g  	
 !%"

"8 $	   		{ #	
 [[] 	,JJtyy*+	, 	, 	,s   +D<<Ec                H    |j                   |_        | j                  |       y r   )rhsrR   rW   )r   rS   s     r   walk_BasedRulez"PythonCodeGenerator.walk_BasedRule   s    88tr   c                B    | j                  d|j                   d       y )Nzself._z_())r+   r*   )r   refs     r   walk_RuleRefz PythonCodeGenerator.walk_RuleRef   s    

VCHH:S)*r   c                N    | j                  |j                  j                         y r   )rC   rS   rR   )r   includes     r   walk_RuleIncludez$PythonCodeGenerator.walk_RuleInclude   s    		',,""#r   c                &    | j                  d       y )Nzself._void()r+   )r   voids     r   	walk_VoidzPythonCodeGenerator.walk_Void       

>"r   c                &    | j                  d       y )Nzself._any()rb   )r   anys     r   walk_AnyzPythonCodeGenerator.walk_Any       

=!r   c                &    | j                  d       y )Nzself._fail()rb   )r   fails     r   	walk_FailzPythonCodeGenerator.walk_Fail   re   r   c                &    | j                  d       y )Nzself._cut()rb   )r   cuts     r   walk_CutzPythonCodeGenerator.walk_Cut   ri   r   c                    dj                  d |j                  j                         D              }| j                  d| d       y )N
c              3  &   K   | ]	  }d |  yw)z# Nr%   )rD   cs     r   rE   z3PythonCodeGenerator.walk_Comment.<locals>.<genexpr>   s     KBqe*Ks   )rK   comment
splitlinesr+   )r   rt   liness      r   walk_Commentz PythonCodeGenerator.walk_Comment   s7    		Kgoo.H.H.JKK

Rwb>"r   c                &    | j                  |       y r   )rw   )r   rt   s     r   walk_EOLCommentz#PythonCodeGenerator.walk_EOLComment   s    '"r   c                &    | j                  d       y )Nzself._check_eof()rb   )r   eofs     r   walk_EOFzPythonCodeGenerator.walk_EOF   s    

&'r   c                    | j                  d       | j                         5  | j                  |j                         d d d        y # 1 sw Y   y xY w)Nzwith self._group():r+   rQ   rC   rR   )r   groups     r   
walk_GroupzPythonCodeGenerator.walk_Group   s=    

()[[] 	!IIeii 	! 	! 	!   AAc                B    | j                  d|j                  d       y )Nzself._token())r+   token)r   r   s     r   
walk_TokenzPythonCodeGenerator.walk_Token   s    

\%++23r   c                B    | j                  d|j                  d       y )Nzself._constant(r   )r+   literal)r   constants     r   walk_Constantz!PythonCodeGenerator.walk_Constant   s    

_X%5%5$8:;r   c                \    | j                  d|j                  d|j                   d       y )Nzself._alert(r@   r   )r+   r   level)r   alerts     r   
walk_AlertzPythonCodeGenerator.walk_Alert   s&    

\%--!2"U[[MCDr   c                B    | j                  d|j                  d       y )Nzself._pattern(r   )r+   pattern)r   r   s     r   walk_Patternz PythonCodeGenerator.walk_Pattern   s    

^GOO#6a89r   c                    | j                  d       | j                         5  | j                  |j                         d d d        y # 1 sw Y   y xY w)Nzwith self._if():r~   r   	lookaheads     r   walk_Lookaheadz"PythonCodeGenerator.walk_Lookahead   s=    

%&[[] 	%IIimm$	% 	% 	%r   c                    | j                  d       | j                         5  | j                  |j                         d d d        y # 1 sw Y   y xY w)Nzwith self._ifnot():r~   r   s     r   walk_NegativeLookaheadz*PythonCodeGenerator.walk_NegativeLookahead   s=    

()[[] 	%IIimm$	% 	% 	%r   c                \    | j                  |j                         | j                  |       y r   )rC   sequence_gen_defines_declaration)r   seqs     r   walk_Sequencez!PythonCodeGenerator.walk_Sequence   s     		#,,%%c*r   c                X   t        |j                        dk(  r| j                  |j                  d          y |j                         }|rt	        j
                  |d      }dg|}ndg}dj                  d |D              }| j                  d	       | j                         5  | j                  |j                         | j                  d
       | j                         5  | j                  |       d d d        | j                  d       d d d        y # 1 sw Y   #xY w# 1 sw Y   y xY w)N   r   (   )widthzexpecting one of: zno available optionsrq   c              3  2   K   | ]  }t        |        y wr   r;   )rD   es     r   rE   z2PythonCodeGenerator.walk_Choice.<locals>.<genexpr>   s     2q472   zwith self._choice():zself._error(r   )	lenoptionsrC   lookahead_strtextwrapwraprK   r+   rQ   )r   choicefirstsetmsglineserrorerrorss         r   walk_ChoicezPythonCodeGenerator.walk_Choice   s    v~~!#IIfnnQ'('')}}XR8H)5H5E+,E2E22

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

6"#JJsO	 	# #	 	s$   #=D  D2D D	D  D)c                    | j                  d       | j                         5  | j                  |j                         d d d        y # 1 sw Y   y xY w)Nzwith self._option():r~   )r   options     r   walk_OptionzPythonCodeGenerator.walk_Option   s=    

)*[[] 	"IIfjj!	" 	" 	"r   c                    | j                  d       | j                         5  | j                  |j                         d d d        y # 1 sw Y   y xY w)Nzwith self._optional():r~   )r   optionals     r   walk_Optionalz!PythonCodeGenerator.walk_Optional   s=    

+,[[] 	$IIhll#	$ 	$ 	$r   c                &    | j                  d       y )Nzself._empty_closure()rb   )r   closures     r   walk_EmptyClosurez%PythonCodeGenerator.walk_EmptyClosure   s    

*+r   c                d    | j                  |j                        }| j                  d| d       y )Nzself._closure(blockr   
_gen_blockrR   r+   r   r   ns      r   walk_Closurez PythonCodeGenerator.walk_Closure   s*    OOGKK(

(1-.r   c                d    | j                  |j                        }| j                  d| d       y )Nzself._positive_closure(blockr   r   r   s      r   walk_PositiveClosurez(PythonCodeGenerator.walk_PositiveClosure   s*    OOGKK(

1!A67r   c                    | j                  |j                  d      }| j                  |j                        }| j                  d| d| d       y )Nsepr)   zself._join(block, sepr   r   r   rR   r+   r   rK   r   s      r   	walk_JoinzPythonCodeGenerator.walk_Join   sF    OODHH5O1OODHH%

%aSaS23r   c                    | j                  |j                  d      }| j                  |j                        }| j                  d| d| d       y )Nr   r)   zself._positive_join(blockr   r   r   r   s      r   walk_PositiveJoinz%PythonCodeGenerator.walk_PositiveJoin   sF    OODHH5O1OODHH%

.qcqc;<r   c                    | j                  |j                  d      }| j                  |j                        }| j                  d| d| d       y )Nr   r)   zself._left_join(blockr   r   r   r   s      r   walk_LeftJoinz!PythonCodeGenerator.walk_LeftJoin   sF    OODHH5O1OODHH%

*1#U1#Q78r   c                    | j                  |j                  d      }| j                  |j                        }| j                  d| d| d       y )Nr   r)   zself._right_join(blockr   r   r   r   s      r   walk_RightJoinz"PythonCodeGenerator.walk_RightJoin  sF    OODHH5O1OODHH%

+A3eA3a89r   c                    | j                  |j                  d      }| j                  |j                        }| j                  d| d| d       y )Nr   r)   zself._gather(blockr   r   r   r   gathermr   s       r   walk_GatherzPythonCodeGenerator.walk_Gather	  sF    OOFJJUO3OOFJJ'

's%s!45r   c                    | j                  |j                  d      }| j                  |j                        }| j                  d| d| d       y )Nr   r)   zself._positive_gather(blockr   r   r   r   s       r   walk_PositiveGatherz'PythonCodeGenerator.walk_PositiveGather  sF    OOFJJUO3OOFJJ'

051=>r   c                d    | j                  |j                        }| j                  d| d       y )Nzself._skip_to(blockr   r   )r   skiptor   s      r   walk_SkipTozPythonCodeGenerator.walk_SkipTo  s*    OOFJJ'

(1-.r   c                x    | j                  |j                         | j                  d|j                   d       y )Nzself.name_last_node('')rC   rR   r+   r*   r   nameds     r   
walk_NamedzPythonCodeGenerator.walk_Named  s,    		%))

*5::,b9:r   c                x    | j                  |j                         | j                  d|j                   d       y )Nzself.add_last_node_to_name('r   r   r   s     r   walk_NamedListz"PythonCodeGenerator.walk_NamedList  s,    		%))

1%**R@Ar   c                &    | j                  |       y r   )r   r   overrides     r   walk_Overridez!PythonCodeGenerator.walk_Override  s    !r   c                &    | j                  |       y r   )r   r   s     r   walk_OverrideListz%PythonCodeGenerator.walk_OverrideList"  s    H%r   c                     y r   r%   )r   specials     r   walk_Specialz PythonCodeGenerator.walk_Special%  s    r   c                $   |j                   D cg c]  }|t        |       }}|s| j                  d       n2dj                  d |D              }d| d}| j                  d|        | j                          | j                          y c c}w )NzKEYWORDS: set[str] = set()rq   c              3  (   K   | ]
  }d |d  yw)z    ,Nr%   )rD   rH   s     r   rE   z4PythonCodeGenerator._gen_keywords.<locals>.<genexpr>-  s     $EqtA5]$Es   z{
z
}zKEYWORDS: set[str] = )keywordsr:   r+   rK   )r   r3   rH   r   keywords_strs        r   r-   z!PythonCodeGenerator._gen_keywords(  s    $+$4$4FqCFFFJJ3499$EH$EEL!,t4LJJ.|n=>



 Gs
   BBc                0   |j                   j                  xs |j                  d   j                  }|j                   j                  }t        |t              rd }t        |      }| j                  d| d|j                   j                   d|j                   j                   d|j                   j                  d|j                   j                   d|j                   j                  d|j                   j                  d	|d
       | j                          y )Nr   z
                config = ParserConfig.new(
                    config,
                    owner=self,
                    whitespace=z ,
                    nameguard=z!,
                    ignorecase=z ,
                    namechars=z ,
                    parseinfo=z",
                    comments_re=z&,
                    eol_comments_re=zC,
                    keywords=KEYWORDS,
                    start=zT,
                )
                config = config.replace(**settings)
            )configstartrulesr*   
whitespacer7   r
   r;   r+   	nameguard
ignorecase	namechars	parseinfocomments_reeol_comments_re)r   r3   r   r   s       r   	_gen_initzPythonCodeGenerator._gen_init4  s   $$=a(8(=(=^^..
j,/J*%


  !+| ,&~~778 9  ' 9 9: ;&~~77: ;&~~778 9!!(!;!; > ?%%,^^%C%C$F G ) $	
$ 	

r   c                H   | j                  d| d       | j                         5  | j                  d       | j                         5  | j                  |       | j                  d       d d d        d d d        | j                          y # 1 sw Y   "xY w# 1 sw Y   &xY w)Nclass zBuffer(Buffer):zLdef __init__(self, text, /, config: ParserConfig | None = None, **settings):z%super().__init__(text, config=config))r+   rQ   r   r2   s      r   r.   z"PythonCodeGenerator._gen_bufferingP  s    

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

BCD	D
 	

D D	D 	Ds#   "B#B+BB	BB!c                   | j                          | j                  d| d       | j                         5  | j                  d       | j                         5  | j                  |       | j                  d       d d d        | j                          | j                  |j                         d d d        | j                          y # 1 sw Y   MxY w# 1 sw Y   &xY w)Nr   zParser(Parser):zFdef __init__(self, /, config: ParserConfig | None = None, **settings):zsuper().__init__(config=config))r+   rQ   r   rC   r   r2   s      r   r/   z PythonCodeGenerator._gen_parsingZ  s    



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

<=> JJLIIgmm$	% 	

> >	% 	%s#   "C#C;3CC	CCc                *   t        |j                               }t        d |D              t        fd|D              }|ssy dj                  t	        d |D                    }dj                  t	        d D                    }s| j                  d| d| d       y | j                  d	       | j                         5  | j                  d
| d       | j                  d
| d       d d d        | j                  d       y # 1 sw Y   xY w)Nc              3  >   K   | ]  \  }}|s	t        |        y wr   r   )rD   dvalues      r   rE   z?PythonCodeGenerator._gen_defines_declaration.<locals>.<genexpr>h  s     ChaUYq\Cs   
c              3  F   K   | ]  \  }}|s|vrt        |        y wr   r   )rD   r   r   ldefss      r   rE   z?PythonCodeGenerator._gen_defines_declaration.<locals>.<genexpr>i  s*      
5Qe^ aL
s   !r@   c              3  2   K   | ]  }t        |        y wr   r   rD   r   s     r   rE   z?PythonCodeGenerator._gen_defines_declaration.<locals>.<genexpr>r       $<T!W$<r   c              3  2   K   | ]  }t        |        y wr   r   r  s     r   rE   z?PythonCodeGenerator._gen_defines_declaration.<locals>.<genexpr>s  r  r   zself._define([z], [z])zself._define([z],r   )r   definesosetrK   sortedr+   rQ   )r   r&   r  sdefs	sdefs_str	ldefs_strr  s         @r   r   z,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                "   d|j                         v rt        | d      | j                         }| j                          | j                  d| | d       | j	                         5  | j                  |       d d d        |S # 1 sw Y   |S xY w)Nr%   z may repeat empty sequencezdef z():)r   r	   r   r+   rQ   rC   )r   rR   r*   r   s       r   r   zPythonCodeGenerator._gen_block~  s     #&@ABBLLN



T$s#&'[[] 	IIcN	 	 s   (BB)r?   )r   r:   )r&   r   )r3   grammars.Grammar)rS   zgrammars.Rule)rS   zgrammars.BasedRule)r\   zgrammars.RuleRef)r_   zgrammars.RuleInclude)rc   zgrammars.Void)rg   zgrammars.Any)rk   zgrammars.Fail)rn   zgrammars.Cut)rt   zgrammars.Comment)rt   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)rK   zgrammars.Join)rK   zgrammars.PositiveJoin)rK   zgrammars.LeftJoin)rK   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)r3   r  r   r:   )r&   grammars.Model)block)rR   r  )9__name__
__module____qualname__r!   r"   r   __annotations__r   classmethodr   r#   r'   r4   rW   rZ   r]   r`   rd   rh   rl   ro   rw   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   __classcell__)r   s   @r   r   r   A   s,   -ioo/Hm/' " " ) )
4*,X
+$#"#"##(!
4<E:%
%
+*"
$
,/84
=
9
:
6
?
/;B"&
8
0
 
r   r   )
__future__r   r!   r   collections.abcr   typingr   r?   r   collectionsr   r  
exceptionsr	   infosr
   mixins.indentr   utilr   r   walkersr   r,   r0   r   r%   r   r   <module>r      sH    "   $   , %   , *  
2
0G*J Gr   