
    |eJ                         d Z ddlZddlmZ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 G d de      Z G d d	e      Zd
 ZddZ G d de      Z G d de      Zy)z
    pygments.lexers.erlang
    ~~~~~~~~~~~~~~~~~~~~~~

    Lexers for Erlang.

    :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)Lexer
RegexLexerbygroupswordsdo_insertionsincludedefaultline_re)	CommentOperatorKeywordNameStringNumberPunctuationGeneric
Whitespace)ErlangLexerErlangShellLexerElixirConsoleLexerElixirLexerc                   N   e Zd 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z   dz   ez   dz   ez   dz   ez   dz   Zdez   dz   ez   dz   ZdZdefd eee      f ee	d      ef ee
d      ej8                  f eed      ej<                  fdedfeefde dfdejB                  fd ejB                  fd!ez   d"z    eejD                  e      fd#ez   d$z    eejF                  ee      fd%ez   d&z   e$jJ                  fd'e$jJ                  fd(e$jL                  fd)efeejN                  feefd*ez   ejP                  fd+ez   d,z   e jR                  fd-ez   d.z   ez   d/z   ejB                  fd0ejT                  fd1ed2fgee jV                  fde d3fd4e jX                  fd5e fd6e fgd7ez   dz    eejZ                  eeejP                        d3fd8ez   dz    eejZ                  eeejB                        d3feejZ                  d3fg e.d9      d:ed;fd<ed;fd=ed3fg e.d9      d>ed3fd?ed3fgd@Z/yA)Br   zT
    For the Erlang functional programming language.

    .. versionadded:: 0.9
    Erlangzhttps://www.erlang.org/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(?:[2-9]|[12][0-9]|3[0-6])\s+z	(%.*)(\n)z\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)0__name__
__module____qualname____doc__nameurl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   r   Builtinr   Wordr   r   Label	NamespaceFunctionr   IntegerFloatVariableConstantCharHashbangEscapeInterpolEntityr   tokens     8/usr/lib/python3/dist-packages/pygments/lexers/erlang.pyr   r      s    D
#CjG7I !IH
H< EIN
 -G"K%K'L9JKK',\9$>zI$N{Z[``Ik!$&w.t3H+G Z 8GZ898E*G48E*DLL9>%0(--@K-!68$DJJDJJ7]V#Xdnnk%JKw&6dmmZ=?"22FNNC&..)fll+"K0$--(dO8^T]]+i 116;;?'\("7*50$**= '**+ [),;
@ &66"+V__=&!6N
 #8+D0dkk:{DMMJFT"8+D0dkk:{DJJGQdkk6*
 FOK+K+K(	
 FO;'V,
i9Fr   r   c                   P    e Zd ZdZdZdgZdgZdgZ ej                  d      Z
d Zy)	r   zM
    Shell sessions in erl (for Erlang code).

    .. versionadded:: 1.1
    zErlang erl sessionerlz*.erl-shztext/x-erl-shellsessionz(?:\([\w@_.]+\))?\d+>(?=\s|\Z)c           	   #     K   t        di | j                  }d}g }t        j                  |      D ]  }|j	                         }| j
                  j                  |      }|J|j                         }|j                  t        |      dt        j                  |d | fgf       |||d  z  }z|r't        ||j                  |            E d {    d}g }|j                  d      r$|j                         t        j                   |f |j                         t        j"                  |f  |r$t        ||j                  |            E d {    y y 7 7 w)N r   *r   )r   optionsr
   finditergroup
_prompt_rematchr    appendlenr   Promptr   get_tokens_unprocessed
startswithstart	TracebackOutput)	selftexterlexercurcode
insertionsr   linemr    s	            r   r   z'ErlangShellLexer.get_tokens_unprocessed   sV    --
%%d+ 	>E;;=D%%d+A}eeg!!3w<%&Tc
$C#D#F G4:%,Z-4-K-KG-T V V V G!#J??3'++-):):D@@++-==#	>$ $Z%,%C%CG%LN N N VNs%   C	EEBEEEEN)r   r   r   r   r   r   r   r   recompiler   r   r   r   r   r   r      s;    
  DgGI*+I=>JNr   r   c                 x    i }d|d|ft        d      d|fd|dt        |      dft        d      g|d	| z   <   |S )
N[^#\\]+escapes\\.r   r   r   interpolstring_)r   r   )r   symboltokenstatess       r   gen_elixir_string_rulesr     sR    F	!5)			huov6
 F9t Mr   c                 z    |r'd|d|ft        d      d|f| d|dft        d      gS d|d|fd|f| d|dfgS )	Nr  r  r  r  z	[a-zA-Z]*r   r  z[^)r   )term
term_classr  r  s       r   gen_elixir_sigstr_rulesr     sn    ')51IUO#%uf5J
 	
  '(%0UO#%uf5
 	
r   c                      e Zd ZdZdZdZg d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Zd Zd Zdj-                  d eD              Zdj-                  d eD              Zdj-                  d eD              ZdedededZdj-                  d eD              ZdZdez  Zddeiz  ZdedededZdZ d Z!d!Z"d"Z#g d#e$fd$e%jL                  fd%e!z    e'e(jR                  e(jT                  e+jX                  e(jT                        fd%e"z    e'e(jR                  e(jT                        fd%e#z    e'e(jR                  e(jT                        fd&e(jR                  fd'e(jZ                  fd(e.fd)e z   e(jZ                  fd)ez   e(jZ                  fd*e(jZ                  d+fd,e(jZ                  d-fd.e ded/ e'e(jZ                  e/      fd0ez   e0jb                  fee0fd1ed e'e/e0jd                        fee.fee.fee/fd2e0jf                  fee.fd3e+jh                  fd4e+jj                  fd5e+jX                  fd6e+jl                  fd7e+jn                  fd8 e'e(jp                  e$      d9fd: e'e(jp                  e$      d;fd<e(jr                  d=fd>e(jL                  d?f e:d@      dAe/dBfdCe/dDfdE e'e$e(jp                        dFf e:dG      gdHe(jp                  dFf e:dG      gdIe(jp                  f e:dJ      dKe(jp                  fdLe(jp                  f e:dM      gdNe(jp                  fdKe(jp                  fdLe$fge! e'e(jT                  e+jX                  e(jT                        fe"e(jT                  fe#e(jT                  fgdOe(jv                  dPfgdQe(jv                  dFf e:dR      g e:dR      d)e/dSfdTe/dSfdQe/dFfg e:dR      dUe/dFfdVe/dFfg e:dR      dQe/dFfgdWZ<e<j{                   e>dXd<e(jr                               e<j{                   e>dYd>e(jL                               e<j{                   e>dZd<e(jZ                               e<j{                   e>d[d>e(jZ                               e<j{                   e              y\)]r   z=
    For the Elixir language.

    .. versionadded:: 1.5
    Elixirzhttp://elixir-lang.org)elixirexexs)z*.exz*.eexz*.exsz*.leexz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              #   d  K   t        j                  | |      D ]  \  }}}|t        u r|| j                  v r|t        |f *|| j
                  v r|t        j                  |f N|| j                  v r|t        |f h|| j                  v r|t        j                  |f || j                  v r|t        j                  |f || j                  v r|t        j                  |f || j                  v r!|t        j                   j"                  |f |||f |||f  y wN)r   r   r   KEYWORDr   KEYWORD_OPERATORr   r   BUILTINBUILTIN_DECLARATIONDeclarationBUILTIN_NAMESPACEr   CONSTANTr   
PSEUDO_VARr   Pseudo)r  r  indexr  values        r   r   z"ElixirLexer.get_tokens_unprocessed  s    #-#D#DT4#P 	*E5%}DLL(%//d33355dll*%//d666!4!4e;;d444!2!2E99dmm+55doo-!4!4e;;--UE))'	*s   D.D0c            
         g d} ddg}t         j                  }dg i}|D ]  \  }}|dxx   d|dt        |t         j                        |dz   |dz   ffd	|dt        |t         j                        |dz   |d
z   ffgz  cc<   d|dft	        d      g||dz   <   d|z   dz   t        t
        t         j                        dft        d      g||dz   <   d|z   dz   t        t
        t         j                        dft        d      g||d
z   <    | D ]P  \  }}}}|dxx   d|z   ||dz   fd|z   ||d
z   fgz  cc<   t        |||      ||dz   <   t        |||d      ||d
z   <   R |S )N))\{r   }cb)z\[\]rb  sb)z\(z\)r   pa)rE  rF  rF  ab)rI  rI  rI  slas)\|rg  r   pipe)r   r   r   quot)'rj  rj  apos)z"""triquot)z'''triapossigilsz	(~[a-z])(r   z-endz-intpz	(~[A-Z])(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   r  )	terminators	triquotesr  r  r  r   ltermrtermrterm_classs	            r   gen_elixir_sigil_rulesz"ElixirLexer.gen_elixir_sigil_rules  s   	
 )*=>	B# 	JD$8$(*HUFNN,KF]D7N35$(*HUFNN,KF]D:$568!  uf-%F4&=!
 d"S((:v~~*NPVW*+&F4'>"
 d"C'*fnn)MvV-.)F4*$%!	* 0; 	S+E5+t8U"E4'>:U"E4*+<=! 
 ({EB 4'>" ({EER 4*$%	S r   r   c              #   F   K   | ]  }t        j                  |        y wrR  r	  escape.0ss     r   	<genexpr>zElixirLexer.<genexpr>Q       7qbiil7   !c              #   F   K   | ]  }t        j                  |        y wrR  rz  r|  s     r   r  zElixirLexer.<genexpr>R  r  r  c              #   F   K   | ]  }t        j                  |        y wrR  rz  r|  s     r   r  zElixirLexer.<genexpr>S  r  r  r   r   c              #   F   K   | ]  }t        j                  |        y wrR  rz  r|  s     r   r  zElixirLexer.<genexpr>U  s     @qbiil@r  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::rM  z:"string_double_atomz:'string_single_atomr   z)(:)(?=\s|\n)@z(%?)(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_doublerj  string_singlern  z%\{r   r_  tuplez^(\s*)(""")r   ro  z^\s*'''z	[^#\\\n]+r  r  z\n+r  z[^\\\n]+r   interpol_stringr   r   r   r   r   r   )r   r  r  ro  rp  r  r  r  r   r   r  doublesingledouble_atomsingle_atomN)?r   r   r   r   r   r   r   r   r   rS  rT  rU  rV  rX  rY  rZ  
OPERATORS3
OPERATORS2
OPERATORS1PUNCTUATIONr   rx  joinop3_reop2_reop1_reops_repunctuation_rer  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   rr  Doubler   r   r   updater  r   r   r   r   r      s     D
"C%G4I !IEG9G
 >'HHJJJ ?JK*,2h XX7J77FXX7J77FXX7J77F &7FXX@K@@NE*U2G9We<LLJ)0*fEO5O2)K(N=
Z =
gnn%=

 ''

FMMCD=
 {"fmm46=
 ~%fmm46=
 $=
 V]]#=
  H!=
& O#V]]3'=
( O#V]]3)=
* FMM#78+=
, FMM#78-=
2 (7H463=
: G^T^^,;=
@ dOA=
B ()8K+LMC=
H XI=
J XK=
L [)M=
N T[[!O=
P XQ=
V $W=
X &**%Y=
Z vzz*[=
\ :6<<H]=
^ 6>>*_=
d HV^^Z@ "e=
h XfnnjA "i=
l 6==/2m=
n 6==/2o=
r Hs=
v [),w=
x K)y=
~ Xj&..A6J&'

 0&'

 6>>*IV^^$V^^$J
 &..)V^^$Z  
 

FMMBD&--(V]]+	
 V__&78
 FOOV,FO

 FO;	*K+K(	
 FO;'V,
 FOK(
WoF` MM)(CGH
MM)(CGH
MM)-fmmLM
MM)-fmmLM
MM(*+r   r   c                   J    e Zd ZdZdZdgZdgZ ej                  d      Z	d Z
y)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})((?:\([\w@_.]+\))?\d+|\(\d+\))?> c           	   #     K   t        di | j                  }d}d}g }t        j                  |      D ])  }|j	                         }|j                  d      r<d}|j                  t        |      dt        j                  |d d fgf       ||dd  z  }a| j                  j                  |      }|Ld}|j                         }	|j                  t        |      dt        j                  |d |	 fgf       |||	d  z  }|r't        ||j                  |            E d {    d}g }|rt        j                  nt        j                   }
|j#                         |
|f , |r$t        ||j                  |            E d {    y y 7 i7 w)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  s              r   r   z)ElixirConsoleLexer.get_tokens_unprocessed  s    --
%%d+ 	5E;;=Du%!!3w<%&tCRy$A#B#D E49$OO))$/=$H%%'C%%s7|)*GNND#J(G'H'J KtCDz)G#0&(F(Fw(O$Q Q Q"$%'
-5GMM7>>E++-44-	5. $G::7CE E E QEs%   DFFA"F F	F	FN)r   r   r   r   r   r   r   r	  r
  r   r   r   r   r   r   r     s4    &  DgG-.IKLJEr   r   )T)r   r	  pygments.lexerr   r   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   <module>r     sy    
  - - -}* }@&Nu &NR	
"x,* x,v9E 9Er   