
    J                         S r SSKrSSKJrJrJrJrJrJrJ	r	J
r
  SSKJrJrJrJrJrJrJrJrJr  / SQr " S S\5      r " S S	\5      rS
 rSS jr " S S\5      r " S S\5      rg)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                   D   \ rS rSrSrSrSrS/r/ SQrS/r	Sr
S	rS
rSrSrSrSrSrSrSrS\-   S-   \-   S-   \-   S-   \-   S-   rS\-   S-   \-   S-   rSrS\4S\" \\5      4\" \
SS9\4\" \SS9\R:                  4\" \SS9\R>                  4S\ S4\\4S\!S4S \RD                  4S!\RD                  4S"\-   S#-   \" \RF                  \ 5      4S$\-   S%-   \" \RH                  \\ 5      4S&\-   S'-   \%RL                  4S(\%RL                  4S)\%RN                  4S*\ 4\\RP                  4\\4S+\-   \RR                  4S,\-   S--   \!RT                  4S.\-   S/-   \-   S0-   \RD                  4S1\RV                  4S2\ S34/\\!RX                  4S\!S44S5\!RZ                  4S6\!4S7\!4/S8\-   S-   \" \R\                  \\ \RR                  5      S44S9\-   S-   \" \R\                  \\ \RD                  5      S44\\R\                  S44/\/" S:5      S;\ S<4S=\ S<4S>\ S44/\/" S:5      S?\ S44S@\ S44/SA.r0SBr1gC)Dr      zH
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)2__name__
__module____qualname____firstlineno____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__static_attributes__r       )lib/third_party/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                   X    \ rS rSrSrSrS/rS/rS/r\	R                  " S5      rS rS	rg
)r      zA
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           	   #     #    [        S0 U R                  D6nSn/ n[        R                  " U5       GH  nUR	                  5       nU R
                  R                  U5      nUbJ  UR                  5       nUR                  [        U5      S[        R                  US U 4/45        X6US  -  nM|  U(       a'  [        UUR                  U5      5       S h  vN   Sn/ nUR                  S5      (       a%  UR                  5       [        R                   U4v   M  UR                  5       [        R"                  U4v   GM     U(       a$  [        UUR                  U5      5       S h  vN   g g  N N7f)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  'ErlangShellLexer.get_tokens_unprocessed   sP    --
%%d+E;;=D%%d+A}eeg!!3w<%&Tc
$C#D#F G:%,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/r   N)r   r   r   r   r   r   r   r   r   recompiler   r  r   r   r   r   r   r      s9    
  DgGI*+I=>JNr   r   c                 |    0 nSU< S3U4[        S5      SU4SU< S3[        U5      S4[        S5      /US	U -   '   U$ )
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                     U(       a)  SU< S3U4[        S5      SU4U < S3US4[        S5      /$ SU< S3U4SU4U < S3US4/$ )	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                   	   \ rS rSrSrSrSr/ SQr/ SQrS/r	Sr
S	rS
rSrSrSrSrSrSrSrSrS rS rSR/                  S \ 5       5      rSR/                  S \ 5       5      rSR/                  S \ 5       5      rS\< S\< S\< S3rSR/                  S \ 5       5      rSrS\-  rSS\0-  rS\< S\< S\< S3r S r!S!r"S"r#S#r$/ S$\%4PS%\&RN                  4PS&\"-   \(" \)RT                  \)RV                  \,RZ                  \)RV                  5      4PS&\#-   \(" \)RT                  \)RV                  5      4PS&\$-   \(" \)RT                  \)RV                  5      4PS'\)RT                  4PS(\)R\                  4PS)\/4PS*\!-   \)R\                  4PS*\ -   \)R\                  4PS+\)R\                  S,4PS-\)R\                  S.4PS/\!< S\ < S03\(" \)R\                  \05      4PS1\-   \1Rd                  4P\\14PS2\< S3\(" \0\1Rf                  5      4P\\/4P\\/4P\\04PS3\1Rh                  4P\\/4PS4\,Rj                  4PS5\,Rl                  4PS6\,RZ                  4PS7\,Rn                  4PS8\,Rp                  4PS9\(" \)Rr                  \%5      S:4PS;\(" \)Rr                  \%5      S<4PS=\)Rt                  S>4PS?\)RN                  S@4P\;" SA5      PSB\0SC4PSD\0SE4PSF\(" \%\)Rr                  5      SG4\;" SH5      /SI\)Rr                  SG4\;" SH5      /SJ\)Rr                  4\;" SK5      SL\)Rr                  4SM\)Rr                  4\;" SN5      /SO\)Rr                  4SL\)Rr                  4SM\%4/\"\(" \)RV                  \,RZ                  \)RV                  5      4\#\)RV                  4\$\)RV                  4/SP\)Rx                  SQ4/SR\)Rx                  SG4\;" SS5      /\;" SS5      S*\0ST4SU\0ST4SR\0SG4/\;" SS5      SV\0SG4SW\0SG4/\;" SS5      SR\0SG4/SX.r=\=R}                  \?" SYS=\)Rt                  5      5        \=R}                  \?" SZS?\)RN                  5      5        \=R}                  \?" S[S=\)R\                  5      5        \=R}                  \?" S\S?\)R\                  5      5        \=R}                  \" 5       5        S]r@g^)_r      z1
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              #     #    [         R                  " X5       GH!  u  p#nU[        L Ga
  X@R                  ;   a  U[        U4v   M-  X@R
                  ;   a  U[        R                  U4v   MS  X@R                  ;   a  U[        U4v   Mo  X@R                  ;   a  U[        R                  U4v   M  X@R                  ;   a  U[        R                  U4v   M  X@R                  ;   a  U[        R                  U4v   M  X@R                  ;   a"  U[        R                   R"                  U4v   GM  X#U4v   GM  X#U4v   GM$     g 7fN)r   r  r   KEYWORDr   KEYWORD_OPERATORr   r   BUILTINBUILTIN_DECLARATIONDeclarationBUILTIN_NAMESPACEr   CONSTANTr   
PSEUDO_VARr   Pseudo)r  r  indexr  values        r   r  "ElixirLexer.get_tokens_unprocessed  s    #-#D#DT#PE%}LL(%//33355ll*%//666!4!4e;;444!2!2E99mm+55oo-!4!4e;;--E))' $Qs   D>E c            
         / SQn SS/n[         R                  nS/ 0nU H  u  pEUS==   SU< S3[        U[         R                  5      US-   US-   44S	U< S3[        U[         R                  5      US-   US
-   44/-  ss'   SUS4[	        S5      /X5S-   '   SU-   S-   [        [
        [         R                  5      S4[        S5      /X5S-   '   SU-   S-   [        [
        [         R                  5      S4[        S5      /X5S
-   '   M     U  HF  u  pgpUS==   SU-   X%S-   4SU-   X%S
-   4/-  ss'   [        XxU5      X5S-   '   [        XxUSS9X5S
-   '   MH     U$ )N))\{r   }cb)z\[\]ri  sb)z\(z\)r   pa)rK  rL  rL  ab)rO  rO  rO  slas)\|rn  r   pipe)r   r   r   quot)'rq  rq  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_rules"ElixirLexer.gen_elixir_sigil_rules  s   	
 )*=>	B#JD8$(*HUFNN,KF]D7N35$(*HUFNN,KF]D:$568!  uf-%F&=!
 d"S((:v~~*NPVW*+&F'>"
 d"C'*fnn)MvV-.)F*$%! $* 0;+E+8U"E'>:U"E*+<=! 
 (EB '>" (EER *$% 0; r   r   c              #   N   #    U  H  n[         R                  " U5      v   M     g 7frX  r  escape.0ss     r   	<genexpr>ElixirLexer.<genexpr>Q       7JqbiillJ   #%c              #   N   #    U  H  n[         R                  " U5      v   M     g 7frX  r  r  s     r   r  r  R  r  r  c              #   N   #    U  H  n[         R                  " U5      v   M     g 7frX  r  r  s     r   r  r  S  r  r  r   r   c              #   N   #    U  H  n[         R                  " U5      v   M     g 7frX  r  r  s     r   r  r  U  s     @KqbiillKr  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::rS  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_doublerq  string_singleru  z%\{r   rf  tuplez^(\s*)(""")r   rv  z^\s*'''z	[^#\\\n]+r  r  z\n+r  z[^\\\n]+r   interpol_stringr   r   r   r   r   r   )r   r  r  rv  rw  r  r  r  r   r   r  doublesingledouble_atomsingle_atomr   N)Ar   r   r   r   r   r   r   r   r   r   rY  rZ  r[  r\  r^  r_  r`  
OPERATORS3
OPERATORS2
OPERATORS1PUNCTUATIONr  r  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   ry  Doubler   r   r   updater  r   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                   R    \ rS rSrSrSrS/rS/r\R                  " S5      r
S rSrg	)
r   i  a   
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           	   #   D  #    [        S0 U R                  D6nSnSn/ n[        R                  " U5       GH8  nUR	                  5       nUR                  S5      (       a<  SnUR                  [        U5      S[        R                  US S 4/45        X7SS  -  nMf  U R                  R                  U5      nUbL  SnUR                  5       n	UR                  [        U5      S[        R                  US U	 4/45        X7U	S  -  nM  U(       a&  [        XRR                  U5      5       S h  vN   Sn/ nU(       a  [        R                  O[        R                   n
UR#                  5       X4v   GM;     U(       a#  [        XRR                  U5      5       S h  vN   g g  Ns N7f)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  )ElixirConsoleLexer.get_tokens_unprocessed  s    --
%%d+E;;=Du%%!!3w<%&tCRy$A#B#D E9$OO))$/=$H%%'C%%s7|)*GNND#J(G'H'J KCDz)G#0&(F(Fw(O$Q Q Q"$%'
-5GMM7>>E++-44- ,. $::7CE E E QEs%   D&F (F)A,F FF F r   N)r   r   r   r   r   r   r   r   r  r  r   r  r   r   r   r   r   r     s2    &  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   