o
    xi(                     @   sn   d Z ddlmZmZmZmZmZmZ ddlm	Z	m
Z
mZmZmZmZmZmZmZmZ dgZG dd deZdS )z
    pygments.lexers.clean
    ~~~~~~~~~~~~~~~~~~~~~

    Lexer for the Clean language.

    :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    )ExtendedRegexLexerLexerContextbygroupswordsincludedefault)
CommentKeywordLiteralNameNumberOperatorPunctuationStringText
Whitespace
CleanLexerc                    @   s~  e Zd ZdZdZdgZddgZdwddZd	d
 Zdd Z	e
dd Zdd Zdd Zdd Zdd Zdd ZdZi ddedfdedfgdd ejfd!ejfd"ejfd#eejejeejfd$ejd%fd&ejd'feed(d)d*efeed+d)d*efd,ed-fd.eeejej eed/fd0eeed1fd2eeed1fd3e!j"fd4e!j"fd5e!j"fd6e#j$fd7e#j%fd8e#j&fd9e#j'fd:e!j(d;fed<d(d)d*e)fd=eeejefd>efd?efd@e*fdAe*fdBejfdCefe+dgd'e+ddDefdEedfdCefgdFe+ddGeeeej fdHe	fdIefdEedfdCefgdJe+ddKedLfdIedfdMefdEedNfdOefdPej fgdLe+ddQedfdKedfdRefdSefdPej fgd%e+dedTd(d)d*ejfdUejfdEedfdIefdOefgddVefdWefgd;dXe!j(fd:e!j(dfdYe!j(fgd1e+ddZej fd[efd\efd]edfdCefd^ej fgd-e+dd_efd`edfdIefd\efdaeeedbfdCefdcej fddefg	dbe+ddZej fdIefdCefdeedfgd/e+ddfefdgefd\edhfdiedfdjej fdCefgdhe+ddfefdiedNfdgefdkedlfdjej fdCefgdle+ddfefdiedmfdnefdoedpfdqejdrfdSefgdpe+ddsej fdSefdtefduedfgdre+ddvejfd,ed-fe,dgZ-dS )xr   z
    Lexer for the general purpose, state-of-the-art, pure and lazy functional
    programming language Clean (http://clean.cs.ru.nl/Clean).

    .. versionadded: 2.2
    Cleancleanz*.iclz*.dclNc                 C   s    t |d}d|_tj| ||dS )Nr   )context)r   indentr   get_tokens_unprocessed)selftextr   ctx r   V/home/ubuntu/.local/lib/python3.10/site-packages/wandb/vendor/pygments/lexers/clean.pyr      s   
z!CleanLexer.get_tokens_unprocessedc                 c   sf    | ddkr | tj| dfV  |jd d dg |_n| tj| dfV  | |_d S )Nr   importfromimportfunc)	groupstartr	   	Namespacestackr   Classendposlexermatchr   r   r   r   check_class_not_import$   s   z!CleanLexer.check_class_not_importc                 c   sj    | ddks| ddkr| t| dfV  n| tj| dfV  |jdg |_| |_d S )Nr   instanceclassfromimportfunctype)r    r!   r	   r   Functionr#   r%   r&   r'   r   r   r   check_instance_class,   s   zCleanLexer.check_instance_classc                 C   s$   |  dd} t|  ddt| fS )N
 	z    )replacelen)r   r   r   r   
indent_len4   s   zCleanLexer.indent_lenc                 c   s<    t |d\|_}| |_| t|dfV  d S )Nr   )r   r5   r    r   r%   r&   r!   r   )r(   r)   r   _r   r   r   store_indent;   s   
zCleanLexer.store_indentc                 c   s    t |d\}}||jkr&| t|dfV  | | d |_d S d|_| |_|jd d |_| t|ddd  fV  d S )Nr      r   r   r5   r    r   r!   r   r&   r#   r(   r)   r   r   reallenr   r   r   check_indent1@   s   

"zCleanLexer.check_indent1c                 c   sp    t |d\}}||jkr&| t|dfV  | | d |_d S d|_| |_|jd d |_d S )Nr   r8   r9   r:   r   r   r   check_indent2K   s   

zCleanLexer.check_indent2c                 c   s    t |d\}}||jkr&| t|dfV  | | d |_d S d|_| |_|jd d |_| t|ddd  fV  |ddkrT|jd |_d S d S )Nr   r8   z

r9   r:   r   r   r   check_indent3U   s   

zCleanLexer.check_indent3c                 c   s6    |j d d |_ | |_| t|dfV  d S )Nr   r   )r#   r%   r&   r!   r   r    r'   r   r   r   skipb   s   
zCleanLexer.skip)r,   r+   wherewithletzlet!incaseofinfixinfixrinfixlgenericderive	otherwisecodeinlinecommon;z#popz//singlecommentrootz//.*\nz(?s)/\*\*.*?\*/z(?s)/\*.*?\*/zB\b((?:implementation|definition|system)\s+)?(module)(\s+)([\w`.]+)z(?<=\n)import(?=\s)r   z(?<=\n)from(?=\s)
fromimportz(?<=\s)z(?=\s))prefixsuffix^z(?=\{\|)genericfunctionz<(?<=\n)([ \t]*)([\w`$()=\-<>~*\^|+&%]+)((?:\s+\w)*)(\s*)(::)functiondefargsz(?<=\n)([ \t]*)(::)typedefz^([ \t]*)(::)z\'\\?.(?<!\\)\'z	\'\\\d+\'z\'\\\\\'z"[+\-~]?\s*\d+\.\d+(E[+\-~]?\d+)?\bz[+\-~]?\s*0[0-7]\bz[+\-~]?\s*0x[0-9a-fA-F]\bz[+\-~]?\s*\d+\b"doubleqstring)TrueFalsez(\')([\w.]+)(\'\.)z([\w`$%/?@]+\.?)*[\w`$%/?@]+z[{}()\[\],:;.#]z[+\-=!<>|&~*\^/]z\\\\z\\.*?(->|\.|=)z\sz	([\w`.]+)z\nr   z(::)(\s+)([^,\s]+)z([\w`$()=\-<>~*\^|+&%/]+),r-   z[{(\[]combtypez[:;.#]z#pop:2z[^\S\n]+z\S+z[})\]]z[,:;.#]z\s+)fromr   as	qualifiedz[\w`.]+z	(.)(?=\n)z.+(?!\n)z[^\\"]+z\\.z[\w`]+z[:=|(),\[\]{}!*]z->z\n(?=[^\s|]).z\{\|z\|\}z(\s+of\s+)(\{)genericftypesz[\w`\[\]{}!]+z[*()]z\}z\n(\s*)z[!{}()\[\],:;.#]functiondefresz^(?=\S)z\Sz\|functiondefclassesz#pop:3z[,&]z\[functiondefuniquneqz[\w`$()=\-<>~*\^|+&%/{}\[\]@]functionnamez[a-z]+z<=|,z\]z[\w`$()=\-<>~*\^|+&%/]+)NN).__name__
__module____qualname____doc__namealiases	filenamesr   r*   r/   staticmethodr5   r7   r<   r>   r@   rA   keywordsr   r   SingleSpecialMultir   r	   r"   r   r   r$   r   r   r.   Typer   Charr   FloatOctHexIntegerDoubler
   r   r   r   tokensr   r   r   r   r      s   





AGOX`im
r{        
  )  0 N)rm   pygments.lexerr   r   r   r   r   r   pygments.tokenr   r	   r
   r   r   r   r   r   r   r   __all__r   r   r   r   r   <module>   s
    
0