
    qZh	                     h    d Z ddlZ ej        d          j        Z ej        d          Zd Zd ZdS )z
ldap.schema.tokenizer - Low-level parsing functions for schema element strings

See https://www.python-ldap.org/ for details.
    Nz:(\()|(\))|([^'$()\s]+)|('(?:[^'\\]|\\.)*'(?!\w))|([^\s]+?)z\\(.)c           	         g }d}t          |           D ]\  }}}}}|r|                    |            |r7|                    t                              d|dd                              Y|r|dz  }|                    |           v|r|dz  }|                    |           |dk    r|st	          d| z            t	          ||           |rt	          d| z            |S )zJ
    Returns list of syntax elements with quotes and spaces stripped.
    r   z\1   $z'$' outside parenthesis in %rzUnbalanced parenthesis in %r)TOKENS_FINDALLappendUNESCAPE_PATTERNsub
ValueError)spartsparensoparcparunquotedquotedresidues           a/var/www/lab.imftr.de/alumni/alumnizer_venv/lib/python3.11/site-packages/ldap/schema/tokenizer.pysplit_tokensr      s.    EF1?1B1B ) )-dHfg 	)LL"""" 	)LL)--eVAbD\BBCCCC 
	)aKFLL 	)aKFLL^^ H !@A!FGGGH Wa((( ?71=>>>L    c                 r   | d                                          dk    r| d                                          dk    sJ t          |                       i }|                    |           d}t          |           }||k     r| |         |v r| |         }|dz  }||k     r| |         |v rd||<   n| |         dk    r_|dz  }|}||k     r#| |         dk    r|dz  }||k     r| |         dk    t	          t          d | ||                             ||<   |dz  }n| |         f||<   |dz  }n|dz  }||k     |S )z8
  Returns dictionary of known tokens with all values
  r   (r   )r    c                     | dk    S )Nr   r   )vs    r   <lambda>z extract_tokens.<locals>.<lambda>L   s
    3 r   )stripr   updatelentuplefilter)lknown_tokensresultil_lentokenstarts          r   extract_tokensr*   5   sk    
1s		qu{{}}c111*Q--111&--!
a&&%	%tv~~de1fa	
5Q46>>&--qT3YY
q&!%%AaD#IIFA %AaD#IIqqz B BCC&-
q&!! A$%&-
q&!1fa+ 	
%, 
-r   )__doc__recompilefindallr   r	   r   r*   r   r   r   <module>r/      sv     
			  
  2:h''   4    r   