
    #hK                    t    S SK J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   " S S	5      r " S
 S5      rg)    )annotationsN   )SemanticError)BASE_CLASS_TOKENNode)
synthesizesimplify_listc                  ,    \ rS rSrS rS rS rS rSrg)ASTSemantics   c                    [        U5      $ Nr	   selfastargss      O/Users/user/Downloads/htwk/venv/lib/python3.13/site-packages/tatsu/semantics.pygroupASTSemantics.group       S!!    c                    [        U5      $ r   r	   r   s      r   elementASTSemantics.element   r   r   c                    [        U5      $ r   r	   r   s      r   sequenceASTSemantics.sequence   r   r   c                @    [        U5      S:X  a  [        US   5      $ U$ )Nr   r   )lenr
   r   s      r   choiceASTSemantics.choice   s!    s8q= Q((
r    N)	__name__
__module____qualname____firstlineno__r   r   r   r!   __static_attributes__r#   r   r   r   r      s    """r   r   c                  @    \ rS rSrSrS\S4S jrS rS rS r	S r
S	rg)
ModelBuilderSemantics   zIntended as a semantic action for parsing, a ModelBuilderSemantics creates
nodes using the class name given as first parameter to a grammar
rule, and synthesizes the class/type if it's not known.
Nc                p    Xl         X l        0 U l        U=(       d    S H  nU R                  U5        M     g )Nr#   )ctx	base_typeconstructors_register_constructor)r   contextr.   typests        r   __init__ModelBuilderSemantics.__init__!   s2    ""A&&q) r   c                6    XR                   UR                  '   U$ r   )r/   r$   )r   constructors     r   r0   +ModelBuilderSemantics._register_constructor*   s    2=+../r   c           
         [         nUR                  S5       H  n [        U5      nX4;   a  XC   nM  S n  U$    U$ ! [         a.  n[	        SU S[        U5      R                   SU< 35      UeS nAff = f)N.zCould not find constructor for z (z): )builtinssplitvars	Exceptionr   typer$   )r   typenamer7   namer1   es         r   _find_existing_constructor0ModelBuilderSemantics._find_existing_constructor.   s    NN3'D{+
 %m" (   #5hZr${BSB\B\A]]`ab`efs   ;
A3)A..A3c                    [        U5      nXR                  ;   a  U R                  U   $ U R                  U5      nU(       d  [        X5      nU R	                  U5      $ r   )strr/   rC   r   r0   )r   r@   baser7   s       r   _get_constructor&ModelBuilderSemantics._get_constructor>   sV    x=((($$X..55h?$X4K))+66r   c                   U(       d  U$ US   R                  [        5      nUS   nUSSS2   nU R                  nU H  nU R                  X5      nM     U R                  XW5      n	 [	        U	[
        5      (       a)  [        U	[        5      (       a  U	" SXR                  S.UD6$ U	" U/USS  Q70 UD6$ ! [         a  n
[        SU SU
< 35      U
eS n
A
ff = f)Nr   )r   r-   r   zCould not call constructor for z: r#   )r<   r   r.   rH   
isinstancer?   
issubclassr   r-   r>   r   )r   r   r   kwargstypespecr@   basesrG   base_r7   rB   s              r   _defaultModelBuilderSemantics._defaultJ   s    J7==!12A;Ab!~~E((5D  ++H;	+t,,K1N1N"CsCFCC"3<ab<V<< 	1(2aUC	s   '=B4 %B4 4
C>CC)r.   r/   r-   )r$   r%   r&   r'   __doc__r   r4   r0   rC   rH   rR   r(   r#   r   r   r*   r*      s)    
  $t4 * 
7r   r*   )
__future__r   r;   
exceptionsr   objectmodelr   r   synthr   utilr
   r   r*   r#   r   r   <module>rZ      s-    "  % /    D Dr   