o
    -wiI                     @   s   d Z ddlZddlmZ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 g dZedZG dd deZG d	d
 d
eZdd ZdddZG dd deZG dd deZdS )z
    pygments.lexers.erlang
    ~~~~~~~~~~~~~~~~~~~~~~

    Lexers for Erlang.

    :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)Lexer
RegexLexerbygroupswordsdo_insertionsincludedefault)	TextCommentOperatorKeywordNameStringNumberPunctuationGeneric)ErlangLexerErlangShellLexerElixirConsoleLexerElixirLexerz.*?
c                   @   s@  e Zd ZdZdZdgZg dZdgZdZdZ	dZ
d	Zd
ZdZdZdZdZdZde d e d e d e d Zde d e d ZdZdefdefeeddefee	ddejfeeddejfdedfe
efdedfdejfdejfd e d! e ej!efd"e d# e ej"eefd$e d% e#j$fd&e#j$fd'e#j%fd(efeej&feefd)e ej'fd*e d+ ej(fd,e d- e d. ejfd/ej)fd0ed1fgeej*fded2fd3ej+fd4efd5efgd6e d e ej,eeej'd2fd7e d e ej,eeejd2feej,d2fge-d8d9ed:fd;ed:fd<ed2fge-d8d=ed2fd>ed2fgd?Z.d@S )Ar   z
    For the Erlang functional programming language.

    Blame Jeremy Thurgood (http://jerith.za.net/).

    .. versionadded:: 0.9
    Erlangerlang)z*.erlz*.hrlz*.esz	*.escriptztext/x-erlang)afterbegincasecatchcondendfunifletofqueryreceivetrywhen){absappend_elementapplyatom_to_listbinary_to_listbitstring_to_listbinary_to_termbit_sizebump_reductions	byte_sizecancel_timercheck_process_codedelete_module	demonitordisconnect_nodedisplayelementeraseexitfloatfloat_to_listfun_infofun_to_listfunction_exportedgarbage_collectgetget_keysgroup_leaderhashhdinteger_to_listiolist_to_binaryiolist_sizeis_atom	is_binaryis_bitstring
is_boolean
is_builtinis_floatis_function
is_integeris_list	is_numberis_pidis_portis_process_alive	is_recordis_referenceis_tuplelengthlinklist_to_atomlist_to_binarylist_to_bitstringlist_to_existing_atomlist_to_floatlist_to_integerlist_to_pidlist_to_tupleload_modulelocaltime_to_universaltime
make_tuplemd5	md5_final
md5_updatememorymodule_loadedmonitormonitor_nodenodenodes	open_portphashphash2pid_to_list
port_closeport_commandport_connectport_control	port_call	port_infoport_to_listprocess_displayprocess_flagprocess_infopurge_moduleput
read_timerref_to_listregisterresume_processroundsend
send_aftersend_nosuspend
set_cookie
setelementsizespawn
spawn_linkspawn_monitor	spawn_optsplit_binarystart_timer
statisticssuspend_processsystem_flagsystem_infosystem_monitorsystem_profileterm_to_binarytltracetrace_delivered
trace_infotrace_patterntrunc
tuple_sizetuple_to_listuniversaltime_to_localtimeunlink
unregisterwhereisz1(\+\+?|--?|\*|/|<|>|/=|=:=|=/=|=<|>=|==?|<-|!|\?))andandalsobandbnotborbslbsrbxordivnotororelseremxorz(?:[a-z]\w*|'[^\n']*[^\\]')z(?:[A-Z_]\w*)z[bdefnrstv\'"\\]z[0-7][0-7]?[0-7]?z%(?:x[0-9a-fA-F]{2}|x\{[0-9a-fA-F]+\})z
\^[a-zA-Z]z(?:\\(?:|z))z(?:)z(?:[2-9]|[12][0-9]|3[0-6])\s+z%.*\nz\b)suffixz^-	directive"string<<>>(z)(:)z(?:^|(?<=:))(z
)(\s*)(\()z[+-]?z#[0-9a-zA-Z]+z[+-]?\d+z[+-]?\d+.\d+z[]\[:_@\".{}()|;,]z\?z\$(?:z|\\[ %]|[^\\])#z(:?\.z)?z\A#!.+\n#\{map_key#popz~[0-9.*]*[~#+BPWXb-ginpswx]z[^"\\~]+~z(define)(\s*)(\()(z(record)(\s*)(\()(root=>map_valz:=\},(?=\}))r   r   r   r   r   N)/__name__
__module____qualname____doc__namealiases	filenames	mimetypeskeywordsbuiltins	operatorsword_operatorsatom_revariable_reesc_char_reesc_octal_re
esc_hex_reesc_ctrl_re	escape_remacro_rebase_rer	   r
   r   r   r   Builtinr   Wordr   r   Labelr   	NamespaceFunctionr   IntegerFloatVariableConstantCharHashbangEscapeInterpolEntityr   tokens r   r   `/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/wandb/vendor/pygments/lexers/erlang.pyr      s    $
 



r   c                   @   s8   e Zd ZdZdZdgZdgZdgZe	dZ
dd Zd	S )
r   zM
    Shell sessions in erl (for Erlang code).

    .. versionadded:: 1.1
    zErlang erl sessionerlz*.erl-shztext/x-erl-shellsessionz\d+>(?=\s|\Z)c           
   	   c   s   t di | j}d}g }t|D ][}| }| j|}|d urA| }|t	|dt
j|d | fgf |||d  7 }q|rUt|||D ]}	|	V  qKd}g }|drd| t
j|fV  q| t
j|fV  q|r~t|||D ]}	|	V  qxd S d S )N r   *r   )r   optionsline_refinditergroup
_prompt_rematchr   appendlenr   Promptr   get_tokens_unprocessed
startswithstart	TracebackOutput)
selftexterlexercurcode
insertionsr   linemr   itemr   r   r   r      s<   

z'ErlangShellLexer.get_tokens_unprocessedN)r   r   r   r   r   r   r   r   recompiler   r   r   r   r   r   r      s    
r   c                 C   sD   i }d|f |ft dd|fd|f t|dft dg|d|  < |S )N	[^#%s\\]+escapes\\.z(%s)r   interpolstring_)r   r   )r   symboltokenstatesr   r   r   gen_elixir_string_rules   s   r  Tc                 C   sX   |rd| f |ft dd|fd| f |dft dgS d| f |fd|fd| f |dfgS )Nr  r  r  z%s[a-zA-Z]*r   r  z[^%s\\]+)r   )termr  r  r   r   r   gen_elixir_sigstr_rules   s   	r  c                   @   s  e Zd ZdZdZg dZddgZdgZdZdZ	d	Z
d
ZdZdZdZdZdZdZdZdd Zdd Zddd eD Zddd eD Zddd eD Zdeeef Zddd eD ZdZde Zdd ei Zdeeef Zd!Zd"Z d#Z!d$Z"g d%e#fd&e$j%fd'e  e&e'j(e'j)e*j+e'j)fd'e! e&e'j(e'j)fd'e" e&e'j(e'j)fd(e'j(fd)e'j,fd*e-fd+e e'j,fd+e e'j,fd,e'j,d-fd.e'j,d/fd0eef e&e'j,e.fd1e e/j0fee/fd2ef e&e.e/j1fee-fee-fee.fd3e/j2fee-fd4e*j3fd5e*j4fd6e*j+fd7e*j5fd8e*j6fd9e'j7d:fd;e'j7d<fd=e'j8d>fd?e'j%d@fe9dAdBe.dCfdDe.dEfdFe'j7dGfe9dHgdIe'j7dGfe9dHgdJe'j7fe9dKdLe'j7fdMe'j7fe9dNgdOe'j7fdLe'j7fdMe'j7fge e&e'j)e*j+e'j)fe!e'j)fe"e'j)fgdPe'j:dQfgdRe'j:dGfe9dSge9dSd+e.dTfdUe.dTfdRe.dGfge9dSdVe.dGfdWe.dGfge9dSdRe.dGfgdXZ;e;<e=dYd=e'j8 e;<e=dZd?e'j% e;<e=d[d=e'j, e;<e=d\d?e'j, e;<e  d]S )^r   zY
    For the `Elixir language <http://elixir-lang.org>`_.

    .. versionadded:: 1.5
    Elixir)elixirexexsz*.exz*.exsztext/x-elixir)fndor   r   elserescuer   )r   r   r   r%   in)r   r   forr   unlessr$   r#   raisequoteunquoteunquote_splicingthrowsuper)defdefp	defmoduledefprotocoldefmacro	defmacropdefdelegatedefexception	defstructdefimpldefcallback)importrequireusealias)niltruefalse)_
__MODULE____DIR____ENV__
__CALLER__)z<<<z>>>z|||z&&&z^^^z~~~z===z!==z~>>z<~>z|~>z<|>)z==z!=z<=z>=z&&z||z<>z++z--z|>z=~z->z<-r   .=z~>z<~)	<>+-r   /!^&)z\\r   r   r   r   r   :;r   []c                 c   s    t | |D ]p\}}}|tu rq|| jv r|t|fV  q|| jv r)|tj|fV  q|| jv r5|t|fV  q|| j	v rB|tj
|fV  q|| jv rO|tj|fV  q|| jv r\|tj|fV  q|| jv rj|tjj|fV  q|||fV  q|||fV  qd S N)r   r   r   KEYWORDr   KEYWORD_OPERATORr   r   BUILTINBUILTIN_DECLARATIONDeclarationBUILTIN_NAMESPACEr   CONSTANTr   
PSEUDO_VARr   Pseudo)r   r   indexr  valuer   r   r   r     s(   






z"ElixirLexer.get_tokens_unprocessedc               
   C   sF  g d} ddg}t j}dg i}|D ][\}}|d  d|f t|t j|d |d ffd|f t|t j|d |d	 ffg7  < d
|dftdg||d < d| t jdftdg||d < d| t jdftdg||d	 < q| D ]1\}}}|d  d| ||d fd| ||d	 fg7  < t||||d < t||dd||d	 < qo|S )N))\{r   cb)z\[z\]sb)z\(z\)pa)r:  r;  ab)r>  r>  slas)\|rX  pipe)r   r   quot)'r[  apos)z"""triquot)z'''triapossigilsz(~[a-z])(%s)z-endz-intpz(~[A-Z])(%s)z-no-intpz	[a-zA-Z]+r   z^\s*heredoc_interpolheredoc_no_interpolz~[a-z]z~[A-Z]F)r  )r   Otherr   Heredocr   r   r  )terminators	triquotesr  r  r  r   ltermrtermr   r   r   gen_elixir_sigil_rules#  s>   z"ElixirLexer.gen_elixir_sigil_rulesr   c                 c       | ]}t |V  qd S rF  r  escape.0sr   r   r   	<genexpr>V      zElixirLexer.<genexpr>c                 c   ri  rF  rj  rl  r   r   r   ro  W  rp  c                 c   ri  rF  rj  rl  r   r   r   ro  X  rp  z(?:%s|%s|%s)c                 c   ri  rF  rj  rl  r   r   r   ro  Z  rp  z\wz(?:\.\.\.|[a-z_]%s*[!?]?)z%[A-Z]%(alnum)s*(?:\.[A-Z]%(alnum)s*)*alnumz(?:\.\.\.|<<>>|%\{\}|%|\{\})z(\\x\{)([\da-fA-F]+)(\})z(\\x[\da-fA-F]{1,2})z(\\[abdefnrstv])r   z#.*$z(\?)z\?\\?.z:::z::rB  z:"string_double_atomz:'string_single_atomz(%s|%s)(:)(?=\s|\n)@z	(%%?)(%s)z&\dz0b[01]+z0o[0-7]+z0x[\da-fA-F]+z)\d(_?\d)*\.\d(_?\d)*([eE][-+]?\d(_?\d)*)?z	\d(_?\d)*z"""\s*heredoc_doublez'''\s*$heredoc_singler   string_doubler[  string_singler_  z%\{r   rR  tuplez^\s*"""r   r`  z^\s*'''z	[^#\\\n]+r  r  z\n+r  z[^\\\n]+r   interpol_stringr   r   r   r   r   r   )r   ru  rv  r`  ra  r  r  rz  r   r   ry  doublesingledouble_atomsingle_atomN)>r   r   r   r   r   r   r   r   rG  rH  rI  rJ  rL  rM  rN  
OPERATORS3
OPERATORS2
OPERATORS1PUNCTUATIONr   rh  joinop3_reop2_reop1_reops_repunctuation_rerq  name_re
modname_recomplex_name_respecial_atom_relong_hex_char_rehex_char_reescape_char_rer	   r
   Singler   r   r   r   r   HexSymbolr   r   r   	AttributeClassr   BinOctr   r   rc  Doubler   r   r   updater  r   r   r   r   r      s4   3




 !$%&'(+,-./
2
3
4
579:
=


nr   c                   @   s2   e Zd ZdZdZdgZdgZedZ	dd Z
dS )	r   a8  
    For Elixir interactive console (iex) output like:

    .. sourcecode:: iex

        iex> [head | tail] = [1,2,3]
        [1,2,3]
        iex> head
        1
        iex> tail
        [2,3]
        iex> [head | tail]
        [1,2,3]
        iex> length [head | tail]
        3

    .. versionadded:: 1.5
    zElixir iex sessioniexztext/x-elixir-shellsessionz(iex|\.{3})(\(\d+\))?> c              	   c   s@   t di | j}d}d}g }t|D ]w}| }|dr<d}|t|dtj	|d d fgf ||dd  7 }q| j
|}|d urgd}| }	|t|dtj|d |	 fgf |||	d  7 }q|r{t|||D ]}
|
V  qqd}g }|rtj	ntj}| ||fV  q|rt|||D ]}
|
V  qd S d S )Nr   Fz** Tr   r   )r   r   r   r   r   r   r   r   r   Errorr   r   r   r   r   r   r   r   )r   r   exlexerr   in_errorr   r   r   r  r   r  r  r   r   r   r     sJ   




z)ElixirConsoleLexer.get_tokens_unprocessedN)r   r   r   r   r   r   r   r  r  r   r   r   r   r   r   r     s    
r   )T)r   r  pygments.lexerr   r   r   r   r   r   r   pygments.tokenr	   r
   r   r   r   r   r   r   r   __all__r  r   r   r   r  r  r   r   r   r   r   r   <module>   s   
$,
 +
 x