
m[Tc           @   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 d d d d g Z e j d	  Z d e f d
     YZ d e f d     YZ d   Z e d  Z d e f d     YZ d e f d     YZ d S(   s   
    pygments.lexers.erlang
    ~~~~~~~~~~~~~~~~~~~~~~

    Lexers for Erlang.

    :copyright: Copyright 2006-2014 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
iN(   t   Lexert
   RegexLexert   bygroupst   wordst   do_insertionst   includet   default(	   t   Textt   Commentt   Operatort   Keywordt   Namet   Stringt   Numbert   Punctuationt   Generict   ErlangLexert   ErlangShellLexert   ElixirConsoleLexert   ElixirLexers   .*?
c        {   B   s  e  Z d  Z d Z d g Z d d d d g Z d g Z d Z d Z d Z	 d Z
 d Z d Z d Z d e d e d Z d Z i 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 g d 6e e j$ f d e d f d e j% f d e f d e f g d 6d e d e e j& e e e j"  d f d e d e e j& e e e j  d f e e j& d f g d 6Z' RS(   s   
    For the Erlang functional programming language.

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

    .. versionadded:: 0.9
    t   Erlangt   erlangs   *.erls   *.hrls   *.ess	   *.escripts   text/x-erlangt   aftert   begint   caset   catcht   condt   endt   funt   ift   lett   oft   queryt   receivet   tryt   whent   abst   append_elementt   applyt   atom_to_listt   binary_to_listt   bitstring_to_listt   binary_to_termt   bit_sizet   bump_reductionst	   byte_sizet   cancel_timert   check_process_codet   delete_modulet	   demonitort   disconnect_nodet   displayt   elementt   eraset   exitt   floatt   float_to_listt   fun_infot   fun_to_listt   function_exportedt   garbage_collectt   gett   get_keyst   group_leadert   hasht   hdt   integer_to_listt   iolist_to_binaryt   iolist_sizet   is_atomt	   is_binaryt   is_bitstringt
   is_booleant
   is_builtint   is_floatt   is_functiont
   is_integert   is_listt	   is_numbert   is_pidt   is_portt   is_process_alivet	   is_recordt   is_referencet   is_tuplet   lengtht   linkt   list_to_atomt   list_to_binaryt   list_to_bitstringt   list_to_existing_atomt   list_to_floatt   list_to_integert   list_to_pidt   list_to_tuplet   load_modulet   localtime_to_universaltimet
   make_tuplet   md5t	   md5_finalt
   md5_updatet   memoryt   module_loadedt   monitort   monitor_nodet   nodet   nodest	   open_portt   phasht   phash2t   pid_to_listt
   port_closet   port_commandt   port_connectt   port_controlt	   port_callt	   port_infot   port_to_listt   process_displayt   process_flagt   process_infot   purge_modulet   putt
   read_timert   ref_to_listt   registert   resume_processt   roundt   sendt
   send_aftert   send_nosuspendt
   set_cookiet
   setelementt   sizet   spawnt
   spawn_linkt   spawn_monitort	   spawn_optt   split_binaryt   start_timert
   statisticst   suspend_processt   system_flagt   system_infot   system_monitort   system_profilet   term_to_binaryt   tlt   tracet   trace_deliveredt
   trace_infot   trace_patternt   trunct
   tuple_sizet   tuple_to_listt   universaltime_to_localtimet   unlinkt
   unregistert   whereiss1   (\+\+?|--?|\*|/|<|>|/=|=:=|=/=|=<|>=|==?|<-|!|\?)t   andt   andalsot   bandt   bnott   bort   bslt   bsrt   bxort   divt   nott   ort   orelset   remt   xors   (?:[a-z]\w*|'[^\n']*[^\\]')s   (?:[A-Z_]\w*)s8   (?:\\(?:[bdefnrstv\'"\\/]|[0-7][0-7]?[0-7]?|\^[a-zA-Z]))s   (?:t   |t   )s   (?:[2-9]|[12][0-9]|3[0-6])s   \s+s   %.*\nt   suffixs   \bs   ^-t	   directivet   "t   strings   <<s   >>t   (s   )(:)s   (?:^|(?<=:))(s
   )(\s*)(\()s   [+-]?s   #[0-9a-zA-Z]+s   [+-]?\d+s   [+-]?\d+.\d+s   []\[:_@\".{}()|;,]s   \?s   \$(?:s   |\\[ %]|[^\\])t   #s   (:?\.s   )?t   roots   #pops   ~[0-9.*]*[~#+bBcdefginpPswWxX]s   [^"\\~]+t   ~s   (define)(\s*)(\()(s   (record)(\s*)(\()((   s   afterR   R   R   R   s   endR   R   R   R   R    R!   R"   R#   ({   s   absR%   s   applyR'   R(   R)   R*   R+   R,   R-   R.   R/   R0   R1   R2   R3   s   elementR5   s   exits   floatR8   R9   R:   R;   R<   s   getR>   R?   s   hashRA   RB   RC   RD   RE   RF   RG   RH   s
   is_builtinRJ   RK   s
   is_integerRM   RN   RO   RP   RQ   RR   RS   RT   RU   s   linkRW   RX   RY   RZ   R[   R\   R]   R^   s   load_moduleR`   Ra   Rb   Rc   Rd   Re   Rf   Rg   Rh   Ri   Rj   Rk   Rl   Rm   Rn   Ro   Rp   Rq   Rr   Rs   Rt   Ru   Rv   Rw   Rx   Ry   Rz   R{   R|   s   registerR~   s   rounds   sendR   R   R   R   s   sizeR   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   s   unlinkR   R   (   R   R   R   R   R   R   R   R   R   R   s   orR   R   R   ((   t   __name__t
   __module__t   __doc__t   namet   aliasest	   filenamest	   mimetypest   keywordst   builtinst	   operatorst   word_operatorst   atom_ret   variable_ret	   escape_ret   macro_ret   base_reR   R   R   R
   R   t   BuiltinR	   t   WordR   R   t   LabelR   t	   Namespacet   FunctionR   t   Integert   Floatt   Variablet   Constantt   Chart   Escapet   Interpolt   Entityt   tokens(    (    (    s:   /usr/lib/python2.7/dist-packages/pygments/lexers/erlang.pyR      s   		                            					#	c           B   sG   e  Z d  Z d Z d g Z d g Z d g Z e j d  Z	 d   Z
 RS(   sM   
    Shell sessions in erl (for Erlang code).

    .. versionadded:: 1.1
    s   Erlang erl sessiont   erls   *.erl-shs   text/x-erl-shellsessions   \d+>(?=\s|\Z)c   
      c   sZ  t  |  j   } d } g  } xt j |  D] } | j   } |  j j |  } | d  k	 r | j   } | j	 t
 |  d t j | |  f g f  | | | 7} q+ | r x% t | | j |   D] }	 |	 Vq Wd } g  } n  | j d  r
| j   t j | f Vq+ | j   t j | f Vq+ W| rVx( t | | j |   D] }	 |	 VqDWn  d  S(   Nt    i    t   *(   R   t   optionst   line_ret   finditert   groupt
   _prompt_ret   matcht   NoneR   t   appendt   lenR   t   PromptR   t   get_tokens_unprocessedt
   startswitht   startt	   Tracebackt   Output(
   t   selft   textt   erlexert   curcodet
   insertionsR   t   linet   mR   t   item(    (    s:   /usr/lib/python2.7/dist-packages/pygments/lexers/erlang.pyR      s0    				(   R   R   R   R   R   R   R   t   ret   compileR   R   (    (    (    s:   /usr/lib/python2.7/dist-packages/pygments/lexers/erlang.pyR      s   			c         C   s\   i  } d | f | f t  d  d | f d | f t |  d f t  d  g | d |  <| S(   Ns	   [^#%s\\]+t   escapess   \\.s   (%s)s   #popt   interpolt   string_(   R   R   (   R   t   symbolt   tokent   states(    (    s:   /usr/lib/python2.7/dist-packages/pygments/lexers/erlang.pyt   gen_elixir_string_rules   s    		c         C   s|   | rH d |  f | f t  d  d | f d |  f | d f t  d  g Sd |  f | f d | f d |  f | d f g Sd  S(   Ns	   [^#%s\\]+R   s   \\.s   %s[a-zA-Z]*s   #popR   s   [^%s\\]+(   R   (   t   termR   R   (    (    s:   /usr/lib/python2.7/dist-packages/pygments/lexers/erlang.pyt   gen_elixir_sigstr_rules   s    			c        $   B   s]  e  Z d  Z d Z d d d g 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 dj   Z dk   Z dQ j dl   e D  Z dQ j dm   e D  Z dQ j dn   e D  Z do e e e f Z dQ j dp   e D  Z dq Z dr e Z ds i e dt 6Z do e e e f Z du Z dv Z dw Z  dx Z! i dy e" f dz 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 de e e& j+ f de e e& j+ f d e& j+ d f d e& j+ d f d e e f e% e& j+ e-  f d e e. j/ f e e. f d e f e% e- e. j0  f e e, f e e, f e e- f d e. j1 f e e, f d e) j2 f d e) j3 f d e) j* f d e) j4 f d e) j5 f d e& j6 d f d e& j6 d f d e& j7 d f d e& j$ d f e8 d  d e- d f d e- d f g! d 6d e& j6 d f e8 d  g d 6d e& j6 d f e8 d  g d 6d e& j6 f e8 d  d e& j6 f d e& j6 f e8 d  g d 6d e& j6 f d e& j6 f d e& j6 f g d 6e e% e& j( e) j* e& j(  f e  e& j( f e! e& j( f g d 6d e& j9 d f g d 6d e& j9 d f e8 d  g d 6e8 d  de e- d f db e- d f d e- d f g d 6e8 d  dg e- d f d e- d f g d 6e8 d  d e- d f g d 6Z: e: j; e< d d e& j7   e: j; e< d d e& j$   e: j; e< d d e& j+   e: j; e< d d e& j+   e: j; e    RS(   sY   
    For the `Elixir language <http://elixir-lang.org>`_.

    .. versionadded:: 1.5
    t   Elixirt   elixirt   ext   exss   *.exs   *.exss   text/x-elixirt   fnt   doR   R   t   elset   rescueR   R   R   R   R#   t   inR   R   t   forR   t   unlessR"   R!   t   raiset   quotet   unquotet   unquote_splicingt   throwt   supert   deft   defpt	   defmodulet   defprotocolt   defmacrot	   defmacropt   defdelegatet   defexceptiont	   defstructt   defimplt   defcallbackt   importt   requiret   uset   aliast   nilt   truet   falset   _t
   __MODULE__t   __DIR__t   __ENV__t
   __CALLER__s   <<<s   >>>s   |||s   &&&s   ^^^s   ~~~s   ===s   !==s   ~>>s   <~>s   |~>s   <|>s   ==s   !=s   <=s   >=s   &&s   ||s   <>s   ++s   --s   |>s   =~s   ->s   <-R   t   .t   =s   ~>s   <~t   <t   >t   +t   -R   t   /t   !t   ^t   &s   \\s   <<s   >>s   =>R   R   t   :t   ;t   ,t   [t   ]c         c   sG  x@t  j |  |  D],\ } } } | t k r1| |  j k rN | t | f Vq?| |  j k rq | t j | f Vq?| |  j k r | t | f Vq?| |  j	 k r | t j
 | f Vq?| |  j k r | t j | f Vq?| |  j k r | t j | f Vq?| |  j k r | t j j | f Vq?| | | f Vq | | | f Vq Wd  S(   N(   R   R   R   t   KEYWORDR
   t   KEYWORD_OPERATORR	   R   t   BUILTINt   BUILTIN_DECLARATIONt   Declarationt   BUILTIN_NAMESPACER   t   CONSTANTR   t
   PSEUDO_VARR   t   Pseudo(   R   R   t   indexR   t   value(    (    s:   /usr/lib/python2.7/dist-packages/pygments/lexers/erlang.pyR      s$    "c       
   C   s  d' d( d) d* d+ d, d- d. g }  d/ d0 g } t  j } i g  d 6} x | D] \ } } | d c 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 <qG Wx |  D]{ \ } } } | d c d$ | | | d f d% | | | d f g 7<t | |  | | d <t | | d& t | | d <q?W| S(1   Ns   \{s   \}t   cbs   \[s   \]t   sbs   \(s   \)t   paR$  R%  t   abR(  t   slass   \|t   pipeR   t   quott   't   aposs   """t   triquots   '''t   triapost   sigilss   (~[a-z])(%s)s   -ends   -intps   (~[A-Z])(%s)s   -no-intps	   [a-zA-Z]+s   #pops   ^\s*t   heredoc_interpolt   heredoc_no_interpols   ~[a-z]s   ~[A-Z]R   (   s   \{s   \}R<  (   s   \[s   \]R=  (   s   \(s   \)R>  (   R$  R%  R?  (   R(  R(  R@  (   s   \|s   \|s   pipe(   R   R   RB  (   RC  RC  RD  (   s   """RE  (   s   '''RF  (   R   t   OtherR   t   HeredocR   R   R   t   False(   t   terminatorst	   triquotesR   R   R   R   t   ltermt   rterm(    (    s:   /usr/lib/python2.7/dist-packages/pygments/lexers/erlang.pyt   gen_elixir_sigil_rules  s<    		

!c         c   s   |  ] } t  j |  Vq d  S(   N(   R   t   escape(   t   .0t   s(    (    s:   /usr/lib/python2.7/dist-packages/pygments/lexers/erlang.pys	   <genexpr>@  s    c         c   s   |  ] } t  j |  Vq d  S(   N(   R   RR  (   RS  RT  (    (    s:   /usr/lib/python2.7/dist-packages/pygments/lexers/erlang.pys	   <genexpr>A  s    c         c   s   |  ] } t  j |  Vq d  S(   N(   R   RR  (   RS  RT  (    (    s:   /usr/lib/python2.7/dist-packages/pygments/lexers/erlang.pys	   <genexpr>B  s    s   (?:%s|%s|%s)c         c   s   |  ] } t  j |  Vq d  S(   N(   R   RR  (   RS  RT  (    (    s:   /usr/lib/python2.7/dist-packages/pygments/lexers/erlang.pys	   <genexpr>D  s    s   \ws   (?:\.\.\.|[a-z_]%s*[!?]?)s%   [A-Z]%(alnum)s*(?:\.[A-Z]%(alnum)s*)*t   alnums   (?:\.\.\.|<<>>|%\{\}|%|\{\})s   (\\x\{)([\da-fA-F]+)(\})s   (\\x[\da-fA-F]{1,2})s   (\\[abdefnrstv])s   \s+s   #.*$s   (\?)s   \?\\?.s   :::s   ::s   :"t   string_double_atoms   :'t   string_single_atoms   (%s|%s)(:)(?=\s|\n)t   @s	   (%%?)(%s)s   &\ds   0b[01]+s   0o[0-7]+s   0x[\da-fA-F]+s)   \d(_?\d)*\.\d(_?\d)*([eE][-+]?\d(_?\d)*)?s	   \d(_?\d)*s   """\s*t   heredoc_doubles   '''\s*$t   heredoc_singleR   t   string_doubleRC  t   string_singleRG  s   %\{t   map_keys   \{t   tupleR   s   ^\s*"""s   #popRH  s   ^\s*'''s	   [^#\\\n]+R   s   \\.s   \n+R   s   [^\\\n]+RI  s   #\{t   interpol_strings   \}t   map_vals   (?=\})t   doublet   singlet   double_atomt   single_atom(   s   fnR   s   ends   afters   elseR  s   catch(   s   nots   ands   ors   whens   in(   s   cases   condR  s   ifR  s   trys   receiveR  R  R  R  s   throws   super(   R  R  R  R  R  R  R  R  R  R  R  (   R  R  R  s   alias(   R  R  R  (   R  R  R  R   R!  (   s   <<<s   >>>s   |||s   &&&s   ^^^s   ~~~s   ===s   !==s   ~>>s   <~>s   |~>s   <|>(   s   ==s   !=s   <=s   >=s   &&s   ||s   <>s   ++s   --s   |>s   =~s   ->s   <-R   R"  R#  s   ~>s   <~(	   R$  R%  R&  R'  R   R(  R)  R*  R+  (   s   \\s   <<s   >>s   =>R   R   R,  R-  R.  R/  R0  (=   R   R   R   R   R   R   R   R1  R2  R3  R4  R6  R7  R8  t
   OPERATORS3t
   OPERATORS2t
   OPERATORS1t   PUNCTUATIONR   RQ  t   joint   op3_ret   op2_ret   op1_ret   ops_ret   punctuation_reRU  t   name_ret
   modname_ret   complex_name_ret   special_atom_ret   long_hex_char_ret   hex_char_ret   escape_char_reR   R   t   SingleR   R   R   R   R   t   Hext   SymbolR	   R   R   t	   Attributet   ClassR   t   Bint   OctR   R   RK  t   DoubleR   R   R   t   updateR   (    (    (    s:   /usr/lib/python2.7/dist-packages/pygments/lexers/erlang.pyR      s   	    		3
													c           B   s>   e  Z d  Z d Z d g Z d g Z e j d  Z d   Z	 RS(   s8  
    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
    s   Elixir iex sessiont   iexs   text/x-elixir-shellsessions   (iex|\.{3})(\(\d+\))?> c         c   s  t  |  j   } d } t } g  } xKt j |  D]:} | j   } | j d  r t } | j t	 |  d t
 j | d  f g f  | | d 7} q1 |  j j |  } | d  k	 rt } | j   }	 | j t	 |  d t
 j | |	  f g f  | | |	 7} q1 | r?x% t | | j |   D] }
 |
 Vq!Wd } g  } n  | rNt
 j n t
 j } | j   | | f Vq1 W| rx( t | | j |   D] }
 |
 VqWn  d  S(   NR   u   ** i    i(   R   R   RL  R   R   R   R   t   TrueR   R   R   t   ErrorR   R   R   R   R   R   R   R   R   (   R   R   t   exlexerR   t   in_errorR   R   R   R   R   R   R   (    (    s:   /usr/lib/python2.7/dist-packages/pygments/lexers/erlang.pyR     s<    		(
   R   R   R   R   R   R   R   R   R   R   (    (    (    s:   /usr/lib/python2.7/dist-packages/pygments/lexers/erlang.pyR     s   		(   R   R   t   pygments.lexerR    R   R   R   R   R   R   t   pygments.tokenR   R   R	   R
   R   R   R   R   R   t   __all__R   R   R   R   R   R  R   R   R   (    (    (    s:   /usr/lib/python2.7/dist-packages/pygments/lexers/erlang.pyt   <module>
   s   4@		k+	