
    }fx                    n    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mZmZ  G d d	e	      Zy
)    )annotations)Sequence   )grammars)FailedSemantics)ModelBuilderSemantics)eval_escapesflattenrewarningc                       e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )EBNFGrammarSemanticsc                    t         |   t        j                  t        j                  j	                                || _        i | _        y )N)	base_typetypes)super__init__r   Modelclassesgrammar_namerules)selfr   	__class__s     U/var/www/feuerwehr-webapp/venv/lib/python3.12/site-packages/tatsu/parser_semantics.pyr   zEBNFGrammarSemantics.__init__   s<    nnHNN,B,B,D 	 	
 )
    c                J    |}|st        d      t        j                  |      S )Nzempty token)r   r   Token)r   astargstokens       r   r    zEBNFGrammarSemantics.token   s$    !-00~~e$$r   c                ,    t        j                  |      S N)r   Patternr   r   r   s      r   patternzEBNFGrammarSemantics.pattern   s    $$r   c                    dj                  |      }	 t        j                  |       |S # t        t        j                  f$ r}t        dt        |      z         |d }~ww xY w)N regexp error: )joinr   compile	TypeErrorerrorr   strr   r   r   r%   es        r   regexeszEBNFGrammarSemantics.regexes   s\    ''#,	DJJw 
 288$ 	D!"2SV";<!C	Ds   * A AA c                    |}	 t        j                  |       |S # t        t         j                  f$ r}t	        dt        |      z         |d }~ww xY w)Nr(   )r   r*   r+   r,   r   r-   r.   s        r   regexzEBNFGrammarSemantics.regex$   sT    	DJJw  288$ 	D!"2SV";<!C	Ds    AAAc                    t        |      S r"   )r	   r   r   s     r   stringzEBNFGrammarSemantics.string,   s    C  r   c                    t        |d      S )N   intr4   s     r   hexzEBNFGrammarSemantics.hex/   s    3|r   c                    t        |      S r"   )floatr4   s     r   r<   zEBNFGrammarSemantics.float2   s    Szr   c                    t        |      S r"   r8   r4   s     r   r9   zEBNFGrammarSemantics.int5   s    3xr   c                     y r"    r4   s     r   nullzEBNFGrammarSemantics.null8   s    r   c                @    t        d       t        j                         S )Nz>The use of >> for cut is deprecated. Use the ~ symbol instead.)r   r   Cutr$   s      r   cut_deprecatedz#EBNFGrammarSemantics.cut_deprecated;   s    L	
 ||~r   c                B    t        d       t        j                  |      S )Nz7The use of @ for override is deprecated. Use @: instead)r   r   Overrider$   s      r   override_single_deprecatedz/EBNFGrammarSemantics.override_single_deprecatedA   s    IJ  %%r   c                    |j                   }t        |t              sJ t        |             t	        |      dk(  r|d   S t        j                  |      S Nr   r   )sequence
isinstancer   r-   lenr   )r   r   r   seqs       r   rI   zEBNFGrammarSemantics.sequenceE   sI    ll#x(2#c(2(s8q=q6M  %%r   c                R    t        |      dk(  r|d   S t        j                  |      S rH   )rK   r   Choicer$   s      r   choicezEBNFGrammarSemantics.choiceL   s%    s8q=q6Ms##r   c                @    || j                   v rt        d|d      |S )Nrule "z" already definedr   r   r   names     r   new_namezEBNFGrammarSemantics.new_nameQ   s(    4::!F4(2C"DEEr   c                @    || j                   vrt        d|d      |S )NrQ   z" not yet definedrR   rS   s     r   
known_namezEBNFGrammarSemantics.known_nameV   s(    tzz!!F4(2C"DEEr   c                8    t        |      j                         dv S )N>   1okyestrue)r-   lowerr4   s     r   booleanzEBNFGrammarSemantics.boolean[   s    3x~~#===r   c           	        |j                   }|j                  }|j                  }|j                  }|j                  }|j
                  rt        |j
                        nd }d|vr || j                  v r| j                  |       nd|v r| j                  |       |st        j                  ||||||      }	n<| j                  |       | j                  |   }
t        j                  ||||
|||      }	|	| j                  |<   |	S )Noverride)
decorators)ra   rT   expbaseparamskwparamsdictr   rU   rW   r   Rule	BasedRule)r   r   r   ra   rT   rb   rc   rd   re   rule	base_rules              r   ri   zEBNFGrammarSemantics.rule^   s    ^^
xxggxx),4%4Z'DDJJ,>MM$:%OOD!==T3ZD OOD!

4(I%%%D  

4r   c                    t        |      }| j                  |       | j                  |   }t        j                  |      S r"   )r-   rW   r   r   RuleInclude)r   r   r   rT   ri   s        r   rule_includez!EBNFGrammarSemantics.rule_include   s6    3xzz$##D))r   c                   t        |j                        D ci c]  }|j                  |j                   }}t	        t        |j
                              xs g }|j                  d      dv rd|d<   | j                  xs |j                  d      }t        j                  |t	        | j                  j                               ||      S c c}w )N
whitespace>   NoneFalser'   grammar)
directiveskeywords)r
   rs   rT   valuelistrt   getr   r   Grammarr   values)r   r   r   drs   rt   rT   s          r   rr   zEBNFGrammarSemantics.grammar   s    /6s~~/FG!affaggoG
G-.4">>,'+<<')J|$  =JNN9$=""$%!	
 	
 Hs   C)__name__
__module____qualname__r   r    r%   r0   r2   r5   r:   r<   r9   r@   rC   rF   rI   rO   rU   rW   r^   ri   rm   rr   __classcell__)r   s   @r   r   r      sh    %%!&&$


>B*
r   r   N)
__future__r   collections.abcr   r'   r   
exceptionsr   	semanticsr   utilr	   r
   r   r   r   r?   r   r   <module>r      s)    " $  ' , 4 4I
0 I
r   