o aK@sdZddlZddlmZmZmZmZmZmZm Z ddl m Z m Z m Z mZmZmZmZmZmZmZgdZedZGdddeZGd d d eZd d ZdddZGdddeZGdddeZdS)z pygments.lexers.erlang ~~~~~~~~~~~~~~~~~~~~~~ Lexers for Erlang. :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. N)Lexer RegexLexerbygroupswords do_insertionsincludedefault) TextCommentOperatorKeywordNameStringNumber PunctuationGeneric Whitespace) ErlangLexerErlangShellLexerElixirConsoleLexer ElixirLexerz.*? c@sFeZdZdZdZdgZgdZdgZdZdZ dZ d Z d Z d Z d Zd ZdZdZdededededZde de dZdZdefdeeefeeddefee ddejfee ddejfdedfe efdedfdej fdej fd e d!eej!efd"e d#eej"eefd$ed%e#j$fd&e#j$fd'e#j%fd(efe ej&fe efd)eej'fd*ed+ej(fd,e d-e d.ej fd/ej)fd0ed1fgeej*fded2fd3ej+fd4efd5efgd6edeej,eeej'd2fd7edeej,eeej d2fe ej,d2fge-d8d9ed:fd;ed:fded2fgd?Z.d@S)Arz For the Erlang functional programming language. Blame Jeremy Thurgood (http://jerith.za.net/). .. versionadded:: 0.9 Erlangerlang)z*.erlz*.hrlz*.esz *.escriptz text/x-erlang)afterbegincasecatchcondendfunifletofqueryreceivetrywhen){absappend_elementapply atom_to_listbinary_to_listbitstring_to_listbinary_to_termbit_sizebump_reductions byte_size cancel_timercheck_process_code delete_module demonitordisconnect_nodedisplayelementeraseexitfloat float_to_listfun_info fun_to_listfunction_exportedgarbage_collectgetget_keys group_leaderhashhdinteger_to_listiolist_to_binary iolist_sizeis_atom is_binary is_bitstring is_boolean is_builtinis_float is_function is_integeris_list is_numberis_pidis_portis_process_alive is_record is_referenceis_tuplelengthlink list_to_atomlist_to_binarylist_to_bitstringlist_to_existing_atom list_to_floatlist_to_integer list_to_pid list_to_tuple load_modulelocaltime_to_universaltime make_tuplemd5 md5_final md5_updatememory module_loadedmonitor monitor_nodenodenodes open_portphashphash2 pid_to_list port_close port_command port_connect port_control port_call port_info port_to_listprocess_display process_flag process_info purge_moduleput read_timer ref_to_listregisterresume_processroundsend send_aftersend_nosuspend set_cookie setelementsizespawn spawn_link spawn_monitor spawn_opt split_binary start_timer statisticssuspend_process system_flag system_infosystem_monitorsystem_profileterm_to_binarytltracetrace_delivered trace_info trace_patterntrunc tuple_size tuple_to_listuniversaltime_to_localtimeunlink unregisterwhereisz1(\+\+?|--?|\*|/|<|>|/=|=:=|=/=|=<|>=|==?|<-|!|\?))andandalsobandbnotborbslbsrbxordivnotororelseremxorz(?:[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 (%.*)(\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:=\},(?=\}))rrrrrN)/__name__ __module__ __qualname____doc__namealiases filenames mimetypeskeywordsbuiltins operatorsword_operatorsatom_re variable_re esc_char_re esc_octal_re esc_hex_re esc_ctrl_re escape_remacro_rebase_rerrr rr r Builtinr WordrrLabel NamespaceFunctionrIntegerFloatVariableConstantCharHashbangEscapeInterpolEntityrtokensrr8/usr/lib/python3/dist-packages/pygments/lexers/erlang.pyrs$         rc@s8eZdZdZdZdgZdgZdgZe dZ ddZ d S) rzM Shell sessions in erl (for Erlang code). .. versionadded:: 1.1 zErlang erl sessionerlz*.erl-shztext/x-erl-shellsessionz(?:\([\w@_.]+\))?\d+>(?=\s|\Z)c cstdi|j}d}g}t|D]X}|}|j|}|durA|}|t |dt j |d|fgf|||d7}q|rRt || |EdHd}g}|dra|t j|fVq|t j|fVq|rzt || |EdHdSdS)Nr*r)roptionsline_refinditergroup _prompt_rematchrappendlenrPromptrget_tokens_unprocessed startswithstart TracebackOutput) selftexterlexercurcode insertionsrlinemrrrrrs6    z'ErlangShellLexer.get_tokens_unprocessedN) rrrrrrrrrecompilerrrrrrrs  rcCsDi}d|f|ftdd|fd|ft|dftdg|d|<|S)N [^#%s\\]+escapes\\.z(%s)rinterpolstring_)rr)rsymboltokenstatesrrrgen_elixir_string_ruless  r TcCsX|rd|f|ftdd|fd|f|dftdgSd|f|fd|fd|f|dfgS)Nrrrz %s[a-zA-Z]*rrz[^%s\\]+)r)term term_classr rrrrgen_elixir_sigstr_ruless  rc@seZdZdZdZgdZgdZdgZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZddZddZdddeDZdddeDZdddeDZdeeefZdddeDZdZdeZddeiZdeeefZd Zd!Z d"Z!d#Z"gd$e#fd%e$j%fd&e e&e'j(e'j)e*j+e'j)fd&e!e&e'j(e'j)fd&e"e&e'j(e'j)fd'e'j(fd(e'j,fd)e-fd*ee'j,fd*ee'j,fd+e'j,d,fd-e'j,d.fd/eefe&e'j,e.fd0ee/j0fee/fd1efe&e.e/j1fee-fee-fee.fd2e/j2fee-fd3e*j3fd4e*j4fd5e*j+fd6e*j5fd7e*j6fd8e&e'j7e#d9fd:e&e'j7e#d;fde'j%d?fe9d@dAe.dBfdCe.dDfdEe&e#e'j7dFfe9dGgdHe'j7dFfe9dGgdIe'j7fe9dJdKe'j7fdLe'j7fe9dMgdNe'j7fdKe'j7fdLe#fge e&e'j)e*j+e'j)fe!e'j)fe"e'j)fgdOe'j:dPfgdQe'j:dFfe9dRge9dRd*e.dSfdTe.dSfdQe.dFfge9dRdUe.dFfdVe.dFfge9dRdQe.dFfgdW Z;e;e'j%e;e'j,e;`_. .. versionadded:: 1.5 Elixir)elixirexexs)z*.exz*.eexz*.exsz*.leexz text/x-elixir)fndorrelserescuer)rrrr&in) rrforr unlessr%r$raisequoteunquoteunquote_splicingthrowsuper) defdefp defmodule defprotocoldefmacro defmacrop defdelegate defexception defstructdefimpl defcallback)importrequireusealias)niltruefalse)_ __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<-r.=z~>z<~) <>+-r/!^&) z\\rrrrr:;r[]ccst||D]p\}}}|turq||jvr|t|fVq||jvr)|tj|fVq||jvr5|t|fVq||j vrB|tj |fVq||j vrO|tj |fVq||j vr\|tj|fVq||jvrj|tjj|fVq|||fVq|||fVqdSN)rrr KEYWORDr KEYWORD_OPERATORr rBUILTINBUILTIN_DECLARATION DeclarationBUILTIN_NAMESPACErCONSTANTr PSEUDO_VARrPseudo)rrindexr valuerrrr s(       z"ElixirLexer.get_tokens_unprocessedc Cs`gd}ddg}tj}dgi}|D]e\}}|dd|ft|tj|d|dffd|ft|tj|d|d ffg7<d |d ftd g||d<d |d tttjd ftdg||d<d |d tttjd ftdg||d <q|D]4\}}}}|dd|||dfd|||d fg7<t|||||d<t|||dd||d <qy|S)N))\{r}cb)z\[\]rVsb)z\(z\)rpa)r;r<r<ab)r?r?r?slas)\|r[rpipe)rrrquot)'r^r^apos)z"""triquot)z'''triapossigilsz (~[a-z])(%s)z-endz-intpz (~[A-Z])(%s)z-no-intpz [a-zA-Z]+rz^(\s*)(rheredoc_interpolheredoc_no_interpolz~[a-z]z~[A-Z]F)r)rOtherrHeredocrrrr) terminators triquotesr r rrltermrterm rterm_classrrrgen_elixir_sigil_rules s@       z"ElixirLexer.gen_elixir_sigil_rulesrcc|]}t|VqdSrGrescape.0srrr TzElixirLexer.ccrmrGrnrprrrrsUrtccrmrGrnrprrrrsVrtz (?:%s|%s|%s)ccrmrGrnrprrrrsXrtz\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])rz#.*$z(\?)z\?\\?.z:::z::rCz:"string_double_atomz:'string_single_atomz(%s|%s)(:)(?=\s|\n)@z (%%?)(%s)z&\dz0b[01]+z0o[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_singlerbz%\{rrStuplez ^(\s*)(""")rrcz^\s*'''z [^#\\\n]+rrz\n+rz[^\\\n]+rinterpol_stringrrrrrr) rryrzrcrdrrr~rrr}doublesingle double_atom single_atomN)>rrrrrrrrrHrIrJrKrMrNrO OPERATORS3 OPERATORS2 OPERATORS1 PUNCTUATIONrrljoinop3_reop2_reop1_reops_repunctuation_reruname_re modname_recomplex_name_respecial_atom_relong_hex_char_re hex_char_reescape_char_rerr SinglerrrrrHexSymbolr rr AttributeClassrBinOctrrrfDoublerrrupdater rrrrrs<4             !$%&'(+,-./ 2 4 6 79;<?   prc@s2eZdZdZdZdgZdgZedZ ddZ dS) ra8 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 zElixir iex sessioniexztext/x-elixir-shellsessionz,(iex|\.{3})((?:\([\w@_.]+\))?\d+|\(\d+\))?> c cs4tdi|j}d}d}g}t|D]t}|}|drs $0 ) {