
    c'f7                     v   d dl mZ d dlZd dlZd dlZd dlZddl  ej                  e      Z	 ej                  ej                  d      Z G d de      Z G d	 d
e      Z G d de      Z G d de      Z G d de      Zd Zd Zd Zd ZedededededededediZ d Z!eeeeeee"e#e$h	Z% G d de&      Z'y)     )OrderedDictN   )*utf-8)encodingc                       e Zd Zy)ParserErrorN)__name__
__module____qualname__     \/var/www/html/tulostaulu.pesapallolive.fi/venv/lib/python3.12/site-packages/config/parser.pyr	   r	      s    r   r	   c                       e Zd ZdZd Zy)ODictze
    This class preserves insertion order for display purposes but is
    otherwise just a dict.
    c                     g }| j                         D ]  \  }}|j                  |d|        ddj                  |      z  S )Nz: z{%s}z, )itemsappendjoin)selfresultkvs       r   __repr__zODict.__repr__   sE    JJL 	-DAqMMa+,	-		&)))r   N)r
   r   r   __doc__r   r   r   r   r   r      s    
*r   r   c                       e Zd ZdxZZy)ASTNodeNr
   r   r   startendr   r   r   r   r   $       ECr   r   c                       e Zd ZdxZZy)MappingBodyNr   r   r   r   r#   r#   (   r!   r   r#   c                       e Zd ZdxZZy)ListBodyNr   r   r   r   r%   r%   ,   r!   r   r%   c                      || _         || _        y N)r   r    )noder   r    s      r   set_positionsr)   0   s    DJDHr   c                 d    t               }t        |       |t        d      <   ||t        d      <   |S )z@
    This function makes an AST node for a unary expression
    opoperandr   str)r+   r,   r   s      r   make_unary_exprr/   5   s0     YFBF3t9$F3y>Mr   c                     t               }t        |       |t        d      <   ||t        d      <   ||t        d      <   |S )zA
    This function makes an AST node for a binary expression
    r+   lhsrhsr-   )r+   r1   r2   r   s       r   make_binary_exprr3   @   s>     YFBF3t9F3u:F3u:Mr   c                 "    t        d|| fz        )Nz4Invalid index at %s: expected 1 expression, found %d)r	   )nposs     r   invalid_indexr7   L   s    
AS!HL r   
identifiernewlineintegerzfloating-point valuezcomplex valuestringzbacktick-stringEOFc                 d    | t         v r	t         |    S t        j                  d   dk(  rd| z  S d| z  S )Nr      z'%s'z%r)TOKEN_REPRSsysversion_info)kinds    r   
token_reprrC   ^   s<    {4  
a}$;r   c                       e Zd Zd"dZd Zed        Ze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d Zd Zd Zd Zd Zd Z d Z!d  Z"e"Z#d#d!Z$y)$ParserNc                 b    || _         |rt        |      | _        d | _        y d | _        d | _        y r'   )stream	Tokenizer	tokenizertoken)r   rG   s     r   __init__zParser.__init__j   s1    &v.DN 
 "DN
r   c                     t        |t              s|j                  d      }t        j                  |      | _        t        | j
                        | _        d | _        y )Nr   )	
isinstance	text_typedecodeioStringIOrG   rH   rI   rJ   )r   texts     r   _make_streamzParser._make_streamr   sA    $	*;;w'Dkk$'"4;;/
r   c                 <    | j                   j                  t        k(  S r'   )rJ   rB   r<   r   s    r   at_endzParser.at_endy   s    zz#%%r   c                 .    | j                   j                  S r'   )rI   	remainingrU   s    r   rX   zParser.remaining}   s    ~~'''r   c                 l    | j                   j                         | _        | j                  j                  S r'   )rI   	get_tokenrJ   rB   rU   s    r   advancezParser.advance   s$    ^^--/
zzr   c                 F   | j                   j                  |k7  rkt        dt        |      dt        | j                   j                        d| j                   j                        }| j                   j                  |_        || j                   }| j                          |S )Nz	Expected z, got  at )rJ   rB   r	   rC   r   locationr[   )r   ttper   s       r   expectzParser.expect   ss    ::??b /9"~z$**//?Z\`\f\f\l\lmB ****BKHr   c                 x    | j                   j                  }|t        k(  r| j                         }|t        k(  r|S r'   )rJ   rB   NEWLINEr[   )r   r_   s     r   consume_newlineszParser.consume_newlines   s/    ZZ__GmB Gm	r   c                     | j                   j                  t        k(  r| j                         }|S | j                   }| j	                          |S r'   )rJ   rB   STRINGstringsr[   r   r   s     r   
object_keyzParser.object_key   s=    ::??f$\\^F  ZZFLLNr   c                    t               }| j                  j                  }| j                         }|t        t
        fv r%| j                  j                  }t        |||       |S |t        t        fvr_t        dt        | j                  j                        d| j                  j                        }| j                  j                  |_        ||t        t        fv r| j                         }| j                  j                  t        t         fvr_t        dt        | j                  j                        d| j                  j                        }| j                  j                  |_        || j#                          | j                          | j%                         }|j'                  ||f       | j                  j                  }|t(        t*        fv r!| j#                          | j                         }nm|t        t
        fvr_t        dt        | j                  j                        d| j                  j                        }| j                  j                  |_        ||t        t        fv r|S NUnexpected r]   )r#   rJ   r   rd   RCURLYr<   r    r)   WORDrf   r	   rC   rB   r^   ri   COLONASSIGNr[   exprr   rc   COMMA)r   r   r   r_   r    r`   keyvalues           r   mapping_bodyzParser.mapping_body   s   

  ""$&#**..C&%-MdF^#)3DJJOO)DdjjFVFVWB ****BKHT6N"//#Czzufo5 !$**//2DJJ4D4DF #jj..LLN!!#IIKEMM3,'Bgu%%**,FC=( !$**//2DJJ4D4DF #jj../ T6N"0 r   c                    | j                   }|j                  }|j                  }| j                         t        k(  rg }	 |j                  |       | j                   j                  }| j                   j                  }| j                         t        k7  rnV|j                  |       dj                  |      }t        t        ||      }||_        ||_        |S )N )	rJ   r   rt   r[   rf   r   r    r   Token)r   r   r   sall_textr    s         r   rg   zParser.strings   s    LL<<>V#H"JJ$$jjnn<<>V+  OOA!A61a(F FLFJr   c                    t               }| j                  j                  }| j                  j                  }| j	                         }|t
        t        t        t        t        t        t        t        t        t        t        t         t"        t$        t&        t(        t*        t,        fv r| j/                         }| j                  j                  }|j1                  |       | j                  j2                  }|t4        t6        fvrn| j9                          | j	                         }|t
        t        t        t        t        t        t        t        t        t        t        t         t"        t$        t&        t(        t*        t,        fv rt;        |||       |S r'   )r%   rJ   r   r    rd   LCURLYLBRACKLPARENATDOLLARBACKTICKPLUSMINUSBITNOTINTEGERFLOATCOMPLEXTRUEFALSENONENOTrf   rn   rq   r   rB   rc   rr   r[   r)   )r   r   r   r    r_   rt   s         r   	list_bodyzParser.list_body   s(   

  jjnn""$%
 
( IIKE**..CMM% B'5))LLN&&(B7 %
 
8 	feS)r   c                 z    | j                  t               | j                         }| j                  t               |S r'   )ra   r}   r   RBRACKrh   s     r   listzParser.list   s+    F!Fr   c                 F   | j                   j                  }|t        vrKt        dt	        |      d| j                   j
                        }| j                   j
                  |_        ||t        k(  r| j                         }|S | j                   }| j                          |S )Nrl   z when looking for value: )
rJ   rB   VALUE_STARTERSr	   rC   r   r^   rf   rg   r[   )r   r_   r`   rJ   s       r   rt   zParser.value  s    ZZ__^#b>4::#3#35B ****BKH<LLNE  JJELLNr   c                     | j                  t              j                  }| j                         }| j                  t              j
                  }t        |||       |S r'   )ra   r|   r   ru   rm   r    r)   )r   r   r   r    s       r   mappingzParser.mapping  sI    F#))""$kk&!%%feS)r   c                    | j                          | j                         }|t        k(  r| j                         }n|t        k(  r| j                         }n|t        t        t        fv r| j                         }n_t        dt        | j                  j                        d| j                  j                        }| j                  j                  |_        || j                          |S rk   )r[   rd   r|   r   r}   r   rn   rf   r<   ru   r	   rC   rJ   rB   r   r^   )r   r   r   r`   s       r   	containerzParser.container  s    !!#;\\^F&[YY[F4%%&&(F)3DJJOO)DdjjFVFVWB ****BKHr   c                    | j                   j                  }|t        k(  r| j                         }|S |t        k(  r| j                         }|S |t        v r| j                         }|S |t        k(  rX| j                          | j                  t               | j                         }| j                  t               t        ||      }|S |t        k(  r7| j                          | j                         }| j                  t                |S t#        dt%        | j                   j                        d| j                   j&                        }| j                   j&                  |_        |rk   )rJ   rB   r|   r   r}   r   r   rt   r   r[   ra   primaryrm   r/   r~   rq   RPARENr	   rC   r   r^   )r   r_   r   r`   s       r   atomzParser.atom.  s   ZZ__<\\^F, + 6\YY[F( ' >!ZZ\F$ # 6\LLNKK\\^FKK$R0F  6\LLNYY[FKK  )3DJJOO)DdjjFVFVWB ****BKHr   c                      j                   j                  }|t        k7  r. j                  t                j                  t
              }||fS  fd} j                         }d}|t        k(  rd }d}n- |       } j                   j                  }|t        k7  r|}n|}d}|st        }nd x}} j                         }|t        k(  r! j                         }|t        k7  rW |       }nO|t        k7  rF |       } j                   j                  }|t        k(  r  j                         }|t        k7  r |       }||f}t        } j                  t               |fS )Nc                  z    j                         } t        |       }|dk7  rt        || j                         | d   S )Nr   r   )r   lenr7   r   )lbr5   r   s     r   get_slice_elementz)Parser.trailer.<locals>.get_slice_elementQ  s6    ^^%G6!!RXX.!ur   FT)	rJ   rB   r}   ra   DOTrn   r[   ro   r   )	r   r_   r   r   is_slicer   elemstepstops	   `        r   trailerzParser.trailerJ  s6   ZZ__<KK[[&F\ 6zW BHU{(*ZZ__;!F E#H""t \\^;BV|026\,.DBU{!\\^<#4#6Dt,KK6zr   c                     | j                         }| j                  j                  t        t        fv rC| j                         \  }}t        |||      }| j                  j                  t        t        fv rC|S r'   )r   rJ   rB   r}   r   r   r3   r   r   r+   r2   s       r   r   zParser.primary~  s[    jjoo&#.llnGB%b&#6F jjoo&#. r   c                     | j                         }| j                  j                  t        k(  r1| j	                          | j                         }t        t        ||      }|S r'   )r   rJ   rB   POWERr[   u_exprr3   r   r   r2   s      r   powerzParser.power  sD    ::??e#LLN++-C%eVS9Fr   c                     | j                   j                  }|t        t        t        t
        fvr| j                         }|S | j                          t        || j                               }|S r'   )
rJ   rB   r   r   r   r   r   r[   r/   r   )r   r_   r   s      r   r   zParser.u_expr  sT    ZZ__dE62..ZZ\F  LLN$R7Fr   c                 ^   | j                         }| j                  j                  t        t        t
        t        fv rp| j                  j                  }| j                          | j                         }t        |||      }| j                  j                  t        t        t
        t        fv rp|S r'   )	r   rJ   rB   STARSLASH
SLASHSLASHMODULOr[   r3   r   s       r   mul_exprzParser.mul_expr  sw    jjoo$z6!BBBLLN++-C%b&#6F	 jjoo$z6!BB
 r   c                 6   | j                         }| j                  j                  t        t        fv rf| j                  j                  }| j                          | j                         }t        |||      }| j                  j                  t        t        fv rf|S r'   )r   rJ   rB   r   r   r[   r3   r   s       r   add_exprzParser.add_expr  sm    jjoo$.BLLN--/C%b&#6F	 jjoo$.
 r   c                 6   | j                         }| j                  j                  t        t        fv rf| j                  j                  }| j                          | j                         }t        |||      }| j                  j                  t        t        fv rf|S r'   )r   rJ   rB   LSHIFTRSHIFTr[   r3   r   s       r   
shift_exprzParser.shift_expr  so    jjoo&&!11BLLN--/C%b&#6F	 jjoo&&!11
 r   c                     | j                         }| j                  j                  t        k(  rO| j	                          | j                         }t        t        ||      }| j                  j                  t        k(  rO|S r'   )r   rJ   rB   BITANDr[   r3   r   s      r   bitand_exprzParser.bitand_expr  sZ    "jjoo'LLN//#C%ffc:F jjoo' r   c                     | j                         }| j                  j                  t        k(  rO| j	                          | j                         }t        t        ||      }| j                  j                  t        k(  rO|S r'   )r   rJ   rB   BITXORr[   r3   r   s      r   bitxor_exprzParser.bitxor_expr  s^    !!#jjoo'LLN""$C%ffc:F jjoo' r   c                     | j                         }| j                  j                  t        k(  rO| j	                          | j                         }t        t        ||      }| j                  j                  t        k(  rO|S r'   )r   rJ   rB   BITORr[   r3   r   s      r   
bitor_exprzParser.bitor_expr  s^    !!#jjoo&LLN""$C%eVS9F jjoo& r   c                     | j                   j                  }| j                         }d}|t        k(  r|t        k(  rd}d}n|t        k(  r|t
        k(  rd}d}|r| j                          |S )NFzis notTznot in)rJ   rB   r[   ISr   IN)r   r   r_   r[   s       r   comp_opzParser.comp_op  s^    \\^R<B#IFGs]rRxFGLLNr   c                    | j                         }| j                  j                  t        t        t
        t        t        t        t        t        t        t        f
v rx| j                         }| j                         }t        |||      }| j                  j                  t        t        t
        t        t        t        t        t        t        t        f
v rx|S r'   )r   rJ   rB   LELTGEGTEQNEQALT_NEQr   r   r   r   r3   r   s       r   
comparisonzParser.comparison  s    "jjoo"b"b"c7BC!PPB//#C%b&#6F jjoo"b"b"c7BC!PP r   c                     | j                   j                  t        k7  r| j                         }|S | j	                          t        t        | j                               }|S r'   )rJ   rB   r   r   r[   r/   not_exprrh   s     r   r   zParser.not_expr  sG    ::??c!__&F  LLN$S$--/:Fr   c                     | j                         }| j                  j                  t        k(  rO| j	                          | j                         }t        t        ||      }| j                  j                  t        k(  rO|S r'   )r   rJ   rB   ANDr[   r3   r   s      r   and_exprzParser.and_expr  sX    jjoo$LLN--/C%c637F jjoo$ r   c                     | j                         }| j                  j                  t        k(  rO| j	                          | j                         }t        t        ||      }| j                  j                  t        k(  rO|S r'   )r   rJ   rB   ORr[   r3   r   s      r   or_exprzParser.or_expr  sX    jjoo#LLN--/C%b&#6F jjoo# r   c                     | j                  |       | j                          t        | |d       }|st        d|z         |       S )Nzno such rule: %s)rS   r[   getattr
ValueError)r   rR   rulemethods       r   parsezParser.parse  sB    $tT*/$677xr   r'   )ru   )%r
   r   r   rK   rS   propertyrV   rX   r[   ra   rd   ri   ru   rg   r   r   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rq   r   r   r   r   rE   rE   i   s     & & ( (	&P*"H $82h Dr   rE   )(collectionsr   	functoolsrP   loggingr@   tokens	getLoggerr
   loggerpartialopen	open_fileRecognizerErrorr	   r   r   r   r#   r%   r)   r/   r3   r7   rn   rc   r   r   r   rf   r   r<   r?   rC   r   r   r   r   objectrE   r   r   r   <module>r      s    $  	  
 			8	$Ibgg8		/ 	
*K 
*e $ t 
	 	,YY	!_
H	 4PTUVV Vr   