
    |e                     n   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mZ ddlmZ g dZ G d de      Z G d	 d
e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z  G d de      Z! G d de      Z" G d de      Z# G d de      Z$y)z
    pygments.lexers.haskell
    ~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for Haskell and related languages.

    :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)Lexer
RegexLexerbygroupsdo_insertionsdefaultincludeinheritline_re)
TextCommentOperatorKeywordNameStringNumberPunctuationGeneric
Whitespace)	unistring)
HaskellLexer
HspecLexer
IdrisLexer	AgdaLexerCryptolLexerLiterateHaskellLexerLiterateIdrisLexerLiterateAgdaLexerLiterateCryptolLexer	KokaLexerc                      e Zd ZdZdZdZddgZdgZdgZdZ	d	Z
g d
efdej                  fdej                  dfdej                   dfdej                   dfdej$                  fddj'                  e	      z  ej                   fdej*                  fdej.                  z   dz   ej0                  fdej.                  z   dz   efdej2                  z   dz   ej4                  fdej2                  z   dz   ej4                  fdej4                  fdej4                  fdej4                  fdej0                  fd ej8                  fd!ej4                  fd"efd#ej<                  fd$ej<                  fd%ej<                  fd&ej<                  fd'ej>                  fd(ej@                  fd)ejB                  fd*ejD                  fd+ej*                  d,fd-ed.fd/ej4                  fd0ejF                  fd1e$fd
efd-ed.fd2e$d3fd4efd5ej2                  z   d6z   ej2                  z   d7z    e%ejL                  eeee      d3fd5ej2                  z   d8z    e%ejL                  eeee$      d9fd5ej2                  z   d:z    e%ejL                  ee$      d9fd;ejL                  d3fgd
efd5ej2                  z   d:z    e%ejL                  ee$      d9fd<ej2                  z   d=z   ejL                  d3fgd
efd<ej2                  z   d>z   ej4                  fd?ej.                  z   d@z   ej0                  fdej                  fdej                  dfdAe$fd"efdBe$dCfd2e$dDfg	dEej                  fdej                  dFfdGej                  d3fdHej                  fgdIej*                  d3fdJejN                  dKfd+ej*                  d3fgdLefdJejN                  dKfd-ed3fgdMejN                  d3fdNej2                  z   dOz   ejN                  d3fdj'                  e
      ejN                  d3fdPejN                  d3fdQejN                  d3fdRejN                  d3fdS e%eejN                        d3fgdTZ(yU)Vr   zk
    A Haskell lexer based on the lexemes defined in the Haskell 98 Report.

    .. versionadded:: 0.8
    Haskellzhttps://www.haskell.org/haskellhsz*.hsztext/x-haskell)caseclassdatar   derivingdoelsefamilyifin
infix[lr]?instanceletnewtypeofthentypewhere_NULSOHz[SE]TXEOTENQACKBELBSHTLFVTFFCRzS[OI]DLEzDC[1-4]NAKSYNETBCANEMSUBESCz[FGRU]SSPDEL\s+!--(?![!#$%&*+./<=>?@^|_~:\\]).*?$\{-comment
\bimport\bimport
\bmodule\bmodule	\berror\b\b(%s)(?!\')\b|z'[^\\]'z^[_z][\w\']*z'?[_z][\w']*z('')?[z(')[z(')\[[^\]]*\]z(')\([^)]*\)z(')[:!#$%&*+.\\/<=>?@^|~-]+\\(?![:!#$%&*+.\\/<=>?@^|~-]+)+(<-|::|->|=>|=)(?![:!#$%&*+.\\/<=>?@^|~-]+):[:!#$%&*+.\\/<=>?@^|~-]*[:!#$%&*+.\\/<=>?@^|~-]+z40[xX]_*[\da-fA-F](_*[\da-fA-F])*_*[pP][+-]?\d(_*\d)*zR0[xX]_*[\da-fA-F](_*[\da-fA-F])*\.[\da-fA-F](_*[\da-fA-F])*(_*[pP][+-]?\d(_*\d)*)?z\d(_*\d)*_*[eE][+-]?\d(_*\d)*z+\d(_*\d)*\.\d(_*\d)*(_*[eE][+-]?\d(_*\d)*)?z0[bB]_*[01](_*[01])*z0[oO]_*[0-7](_*[0-7])*z 0[xX]_*[\da-fA-F](_*[\da-fA-F])*z	\d(_*\d)*'	character"string\[\]\(\)[][(),;`{}]\)#popqualified\bz([z][\w.]*)(\s+)(as)(\s+)([z][\w.]*)z][\w.]*)(\s+)(hiding)(\s+)(\()funclistz][\w.]*)(\s+)(\()[\w.]+[z][\w.]*z]\w*z(_[\w\']+|[z	][\w\']*),\(rf   rf   #pop:2[^-{}]+#push-\}[-{}][^\\']'\\escape[^\\"]+[abfnrtv"\'&\\]z\^[][z@^_]o[0-7]+x[\da-fA-F]+\d+	(\s+)(\\)rootrR   rT   rf   rP   r]   r_   rs   N))__name__
__module____qualname____doc__nameurlaliases	filenames	mimetypesreservedasciir   r   Single	Multiliner   Reservedr   	Exceptionjoinr   CharuniLlFunctionLuTyper   Wordr   FloatBinOctHexIntegerBuiltinr   r   	NamespaceEscapetokens     9/usr/lib/python3/dist-packages/pygments/lexers/haskell.pyr   r      s   
 D
$C$GI!"IFH9E*
Z *
 27>>B	*

 W&&	2*
 G,,h7*
 G,,h7*
 4>>**
 (!33W5E5EF*
 %*
 cff_{*DMM:*
 svv
*D1*
 +-w||<*
  svv+W\\:!*
" w||,#*
$ gll+%*
& ,W\\:'*
* />+*
, <X]]K-*
. *7<<8/*
0 )(31*
4 EfllS5*
6()/77*
: .v||<;*
< <V\\J=*
> %fjj1?*
@ '

3A*
B 1&**=C*
D 6>>*E*
H 6;;,I*
J 68$K*
N gll#O*
P dll#Q*
R [)S*
Z Z 68$K(W%SVV^99CFFB[Pdnnj':tLfV SVV^??dnnj':{SU_a SVV^22dnnj+>
L /#
( Z SVV^22dnnj+>
LCFF]Z'@	
 Z CFF]W$gll3cff$|3T]]C17>>BW&&	2;((3K!9:K*
  **+W&&0W&&/w(()
 f-FMM8,&++v&	
  FMM8,&&!
  7(&--@XXe_fmmV4/fmmV4V]]F+8J>G
KnFr   r   c            	           e Zd ZdZdZdgZdgZg Zdd ee	e
ej                        fd ee	e
ej                        fd ee	e
ej                        fegiZy	)
r   zY
    A Haskell lexer with support for Hspec constructs.

    .. versionadded:: 2.4.0
    Hspechspecz*Spec.hsr{   z(it)(\s*)("[^"]*")z(describe)(\s*)("[^"]*")z(context)(\s*)("[^"]*")N)r|   r}   r~   r   r   r   r   r   r   r   r   r   Docr	   r   r   r   r   r   r      st     DiGII 	"HT:vzz$JK((4VZZ*PQ'$
FJJ)OP	
Fr   r   c                   Z   e Zd ZdZdZdZddgZdgZdgZdZ	d	Z
d
Zddj                  e      z   eeej                         fd eeej$                        fd eeej$                        fd eeej&                        dfd eeej*                  eej.                  e      fddj                  e	      z  ej                   fd eej                   e      dfdej0                  fdefdej.                  fdej.                  fdej6                  fdej6                  fdej8                  fdej:                  fdej>                  dfded fd!efd"efgd#efd$ eej@                  ee!      d%fd&ej@                  d'fgd#efd(ej0                  fd)ej*                  fd*ej$                  fd+ej&                  dfd,e!fd-efd.e!d/fd0e!d1fg	d2ej&                  fd+ej&                  d3fd4ej&                  d'fd5ej&                  fgd6ej>                  fd7ejD                  d8fdej>                  d'fgd9efd7ejD                  d8fded'fgd:ejD                  d'fd;ejD                  d'fdj                  e
      ejD                  d'fd<ejD                  d'fd=ejD                  d'fdejD                  d'fd> eeejD                        d'fgd?Z#y@)Ar   z
    A lexer for the dependently typed programming language Idris.

    Based on the Haskell and Agda Lexer.

    .. versionadded:: 2.0
    Idriszhttps://www.idris-lang.org/idrisidrz*.idrztext/x-idris)3r$   r%   r&   r   usingr(   r)   r+   r,   r-   r.   rewriteauto	namespacecodatamutualprivatepublicabstracttotalpartial	interfaceimplementationexportcoveringconstructorr/   proofr1   r2   staticr4   r5   withpatterntermsyntaxprefix	postulate
parametersrecorddsl
impossibleimplicittacticsintrosintrocomputerefineexacttrivialr6   )liblinkflagr   hidefreezeaccessr   loggingdynamicr   error_handlerslanguagez^(\s*)(%%(%s))rW   z((\s*)(--(?![!#$%&*+./<=>?@^|_~:\\]).*?)$z(\s*)(\|{3}.*?)$z
(\s*)(\{-)rP   ^(\s*)([^\s(){}]+)(\s*)(:)(\s*)rV   (import|module)(\s+)rT   ('')?[A-Z][\w\']*z[a-z][\w\']*z(<-|::|->|=>|=)z"([(){}\[\]:!#$%&*+.\\/<=>?@^|~-]+)\d+[eE][+-]?\d+\d+\.\d+([eE][+-]?\d+)?0[xX][\da-fA-F]+rx   r\   r]   r^   r_   
[^\s(){}]+\s+?rM   ([A-Z][\w.]*)(\s+)(\()rf   [A-Z][\w.]*rd   [A-Z]\w*(_[\w\']+|[a-z][\w\']*)z--.*$rO   ri   r[   rj   rk   rc   rl   rm   rn   ro   rp   z[^\\']rr   rs   rt   ru   \^[][A-Z@^_]rv   rw   ry   )r{   rT   rf   rP   r]   r_   rs   N)$r|   r}   r~   r   r   r   r   r   r   r   r   
directivesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      sA    D
'CG	I IWH9E
YJ *!55j'"2"2358(:w~~:^_ (:w~~"FGHZ1B1BCYO/j$--X]]JWY (!33W5E5EF$hw/?/?&LhW!7<<0d#/2HMMB.'6 &**-V^^$6;;,68$D!j!7
< Z &dnnj+>
LT^^V4	
 Z ',,''7w~~&W&&	2;((3K!9:K*
  **+W&&0W&&/w(()
 $FMM8,&++v&	
  FMM8,&&!
  7fmmV4XXe_fmmV4/fmmV4V]]F+8J>G
IMFr   r   c                      e Zd ZdZdZdZdgZdgZdgZdZ	d e
eej                  eej                  e      fd	ej"                  fd
ej$                  dfdej&                  dfddj)                  e	      z  ej,                  fd e
ej,                  e      dfdej.                  fdefdej                  fdej2                  fdej2                  fdej4                  fdej6                  fdej:                  dfdedfdefdefgdej&                  fdej&                  d fd!ej&                  d"fd#ej&                  fgd
ej$                  dfd$ed"fd%efgej@                  d   ej@                  d   ej@                  d   ej@                  d&   d'Z y())r   z|
    For the Agda dependently typed functional programming language and
    proof assistant.

    .. versionadded:: 2.0
    Agdaz.http://wiki.portal.chalmers.se/agda/pmwiki.phpagdaz*.agdaztext/x-agda))r   r   coinductiver   r&   r(   zeta-equalityfieldforallhidingr,   	inductiveinfixinfixlinfixrr.   interleavedr/   macror   zno-eta-equalityopenoverlapr   r   	primitiver   quote	quoteTermr   renamingr   r   tacticunquoteunquoteDecl
unquoteDefr   variabler4   r   r   rN   rO   rP   z\{!holerV   rW   r   rT   z\b(Set|Prop)[\u2080-\u2089]*\bz(\(|\)|\{|\})z((\.{1,3}|\||\u03BB|\u2200|\u2192|:|=|->)r   r   r   rx   r\   r]   r^   r_   r   r   z[^!{}]+rn   z!\}rd   z[!{}]z[a-zA-Z][\w.\']*z	[\W0-9_]+rs   )r{   r   rT   rP   r]   r_   rs   N)!r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	Directiver   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   #  s    D
:ChG
IIH 0j$--mmZ12 27>>BW&&	2W&&/ (!33W5E5EF$hw/?/?&L.=x(8(--H.'6 &**-V^^$6;;,68$D!j!9
@ **+W&&0W&&/w(()
 W&&	2 $/4 

  &&y1!((5%%h/%%h/]/Fr   r   c                      e Zd ZdZdZddgZdgZdgZdZdZ	d	e
fd
ej                  fdej                  dfdej                  dfdej                  dfdej"                  fddj%                  e      z  ej                  fdej&                  fdefdej(                  fdej&                  fdej,                  fdej(                  fdefdej0                  fdej0                  fdej2                  fdej4                  fdej6                  fd ej:                  d!fd"ed#fd$ej(                  fd%ej<                  fd&efgd	e
fd"ed#fd'ed(fd)efd* e ejB                  e
ee
e      d(fd+ e ejB                  e
ee
e      d,fd- e ejB                  e
e      d,fd.ejB                  d(fgd	e
fd- e ejB                  e
e      d,fd/ejB                  d(fgd	e
fd0ej(                  fd1ej&                  fd2efdefd3ed4fd'ed5fgd6ej                  fdej                  d7fd8ej                  d(fd9ej                  fgd:ej:                  d(fd;ejD                  d<fd ej:                  d(fgd=efd;ejD                  d<fd"ed(fgd>ejD                  d(fd?ejD                  d(fdj%                  e	      ejD                  d(fd@ejD                  d(fdAejD                  d(fdejD                  d(fdB e e
ejD                        d(fgdCZ#h dDZ$dE Z%yF)Gr   zs
    FIXME: A Cryptol2 lexer based on the lexemes defined in the Haskell 98 Report.

    .. versionadded:: 2.0
    Cryptolcryptolcryz*.cryztext/x-cryptol)ArithBitCmpFalseInfTruer)   r   externfinr+   rR   inflg2maxminrT   r0   pragmapropertyr2   r3   r4   widthr6   rM   //.*$/\*rP   rQ   rR   rS   rT   rU   rV   rW   z^[_a-z][\w\']*z'?[_a-z][\w']*r   rX   rY   rZ   r[   r   r   z0[oO][0-7]+r   rx   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   z(([A-Z][\w.]*)(\s+)(as)(\s+)([A-Z][\w.]*)z#([A-Z][\w.]*)(\s+)(hiding)(\s+)(\()rf   r   rg   r   r   r   ri   rj   rk   rl   [^/*]+rn   \*/[*/]rq   rr   rs   rt   ru   r   rv   rw   ry   rz   >   <<>><<<>>>parregseqr   tailconsterrorsplittracer  ASSERTlengthreverse	transpose	undefinedc              #      K   dg}t        j                  | ||      D ]9  \  }}}|t        u r$|| j                  v r|t        j                  |f 3|||f ; y w)Nr{   )r   get_tokens_unprocessedr   EXTRA_KEYWORDSr   )selftextstackindextokenvalues         r   r'  z#CryptolLexer.get_tokens_unprocessed  sd     11$eD	*E5%}$*=*=!=T\\500UE))	*s   AAN)&r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r(  r'  r   r   r   r   r   m  s   
 D% G	I!"I2H9E Z w~~&W&&	2 G,,h7G,,h74>>*(!33W5E5EF.%!7<<0.>;X]]K)7<<8((3.'6VZZ( &**-V^^$6;;,68$gll#dll#[)A!
H Z 68$K(W%8dnnj':tLfV 4dnnj':{SU_a 'dnnj+>
L /#
( Z &dnnj+>
LT^^V4	
 Z ',,''7 ;((3K!9:K*
 ))*W&&0W&&/g''(
 f-FMM8,&++v&	
  FMM8,&&!
  7fmmV4XXe_fmmV4/fmmV4V]]F+8J>G
wdFLN
*r   r   c                   @    e Zd ZdZ ej
                  d      Zd Zd Zy)LiterateLexera  
    Base class for lexers of literate file formats based on LaTeX or Bird-style
    (prefixing each code line with ">").

    Additional options accepted:

    `litstyle`
        If given, must be ``"bird"`` or ``"latex"``.  If not given, the style
        is autodetected: if the first non-whitespace character in the source
        is a backslash or percent character, LaTeX is assumed, else Bird.
    z(>[ \t]*)(.*\n)c                 >    || _         t        j                  | fi | y )N)	baselexerr   __init__)r)  r2  optionss      r   r3  zLiterateLexer.__init__  s    "t'w'r   c           	   #     K   | j                   j                  d      }||j                         dd dv xr dxs d}d}g }|dk(  rt        j                  |      D ]  }|j                         }| j                  j                  |      }|rR|j                  t        |      dt        j                  |j                  d      fgf       ||j                  d      z  }|j                  t        |      dt        |fgf        ndd	lm}  |di | j                   }	d}
d}t        j                  |      D ]  }|j                         }|
r-|j                         j                  d
      rd}
||z  }<||z  }B|j                         j                  d      r>d}
||z  }|j                  t        |      t!        |	j#                  |            f       d}||z  } |j                  t        |      t!        |	j#                  |            f       t%        || j&                  j#                  |            E d {    y 7 w)Nlitstyler      z%\latexbird    )TexLexerz
\end{code}z\begin{code}r   )r4  getlstripr
   finditergroupbird_rematchappendlenr   Specialr   pygments.lexers.markupr<  
startswithlistr'  r   r2  )r)  r*  stylecode
insertionsrB  linemr<  lxlexer	codelinesr8  s               r   r'  z$LiterateLexer.get_tokens_unprocessed	  s      ,=[[]1Q'50=gGE
F? ))$/ F{{}LL&&t,%%s4y)*GOOQWWQZ(H'I'K LAGGAJ&D%%s4yAtT?2C&DEF 8..GIE ))$/ "{{}{{}//>$%	[[]--o> !ITME%%s4y'+G,J,J5,Q'R'T UETME"  s4y#G$B$B5$IJL M T^^-R-RSW-XYYYs   H6I 8H>9I N)	r|   r}   r~   r   recompilerA  r3  r'  r   r   r   r0  r0    s%    
 bjj+,G(*Zr   r0  c                   .    e Zd ZdZdZg dZdgZdgZd Zy)r   an  
    For Literate Haskell (Bird-style or LaTeX) source.

    Additional options accepted:

    `litstyle`
        If given, must be ``"bird"`` or ``"latex"``.  If not given, the style
        is autodetected: if the first non-whitespace character in the source
        is a backslash or percent character, LaTeX is assumed, else Bird.

    .. versionadded:: 0.9
    zLiterate Haskell)zliterate-haskelllhaskelllhsz*.lhsztext/x-literate-haskellc                 H    t        di |}t        j                  | |fi | y Nr   )r   r0  r3  r)  r4  hslexers      r   r3  zLiterateHaskellLexer.__init__H  s$    ))tW88r   N	r|   r}   r~   r   r   r   r   r   r3  r   r   r   r   r   6  s'     D5G	I*+I9r   r   c                   .    e Zd ZdZdZg dZdgZdgZd Zy)r   al  
    For Literate Idris (Bird-style or LaTeX) source.

    Additional options accepted:

    `litstyle`
        If given, must be ``"bird"`` or ``"latex"``.  If not given, the style
        is autodetected: if the first non-whitespace character in the source
        is a backslash or percent character, LaTeX is assumed, else Bird.

    .. versionadded:: 2.0
    zLiterate Idris)zliterate-idrislidrislidrz*.lidrztext/x-literate-idrisc                 H    t        di |}t        j                  | |fi | y rV  )r   r0  r3  rW  s      r   r3  zLiterateIdrisLexer.__init___  s$    'w'tW88r   NrY  r   r   r   r   r   M  s'     D2G
I()I9r   r   c                   .    e Zd ZdZdZddgZdgZdgZd Zy)	r   aU  
    For Literate Agda source.

    Additional options accepted:

    `litstyle`
        If given, must be ``"bird"`` or ``"latex"``.  If not given, the style
        is autodetected: if the first non-whitespace character in the source
        is a backslash or percent character, LaTeX is assumed, else Bird.

    .. versionadded:: 2.0
    zLiterate Agdazliterate-agdalagdaz*.lagdaztext/x-literate-agdac                 L    t        di |}t        j                  | |fddi| y )Nr6  r8  r   )r   r0  r3  )r)  r4  	agdalexers      r   r3  zLiterateAgdaLexer.__init__v  s)    ((	tYLLGLr   NrY  r   r   r   r   r   d  s-     D(GI'(IMr   r   c                   .    e Zd ZdZdZg dZdgZdgZd Zy)r   an  
    For Literate Cryptol (Bird-style or LaTeX) source.

    Additional options accepted:

    `litstyle`
        If given, must be ``"bird"`` or ``"latex"``.  If not given, the style
        is autodetected: if the first non-whitespace character in the source
        is a backslash or percent character, LaTeX is assumed, else Bird.

    .. versionadded:: 2.0
    zLiterate Cryptol)zliterate-cryptollcryptollcryz*.lcryztext/x-literate-cryptolc                 H    t        di |}t        j                  | |fi | y rV  )r   r0  r3  )r)  r4  crylexers      r   r3  zLiterateCryptolLexer.__init__  s$    *'*tX99r   NrY  r   r   r   r   r   {  s'     D6G
I*+I:r   r   c                      e Zd ZdZdZdZdgZddgZdgZg dZ	g d	Z
g d
Zg dZdZdez   dz   ZdZej"                  Zej&                  Zej,                  Z ed      dez   edfd eeee      dfd eeee      dfddj9                  e
      z  dz    eeee      dfd eeeeeej:                        fd eeeej:                  eeeeeej:                  	      fdez   dz    eeeeeej<                        fdez   dz    eeeeeeeej<                        fddj9                  e      z  ez   ej>                  fddj9                  e	      z  ez   efddj9                  e      z  ez   ej@                  fdez   efd  eej:                  e      fd! eej:                  e      fd"ez   dz    eej:                  e      fd#ejB                  fd$e"jF                  d%fed&z   e$fd'e$fd(e%fd)e&jN                  fd*e&jP                  fd+e&jR                  fd,e"jT                  d-fd.e"jF                  d/fgd0ef ed      gd1e%d2f ed      gd3ed4f ed5      gd6ed2fd3ed4fd7efd8 eeee      f ed5      g ed      ddj9                  e      z  ez   efd9dj9                  e	      z  ez   d:z   ed2fd;ez   efd<efd#ejB                  fd  eej:                  e      fd= eej:                  e      fd>ef e+d2      g
d? eee,jZ                        fd@efdAe,j\                  dBfdCe,j^                  fgdDe,j\                  fdAe,j\                  dEfdFe,j\                  d2fdGe,j\                  fgdHe"jF                  fdIe"j`                  fd.e"jF                  d2fgdJe"jF                  f edK      dLe"jF                  d2fgdMe"jT                  f edK      dNe"jT                  d2fgdOe"j`                  fdPe"j`                  fdQe"j`                  fdRe"j`                  fgdSZ1yT)Ur   zA
    Lexer for the Koka language.

    .. versionadded:: 1.6
    Kokaz/https://koka-lang.github.io/koka/doc/index.htmlkokaz*.kkz*.kkiztext/x-koka)"r   r   r   r3   cotyperectypealiasstructconfunfunctionvalvarexternalr+   r2   r)   elifreturnrB  r   r   r   rT   rR   asr   inlinerectryyieldenumr   r.   )r3   rj  rk  rl  rm  r{  )r   existssomer   )forwhilerepeatforeachzforeach-indexedr  catchfinallycsjsfilerefassignedz[$%&*+@!/\\^~=.:\-?|<>]+z(?!)z	(?![\w/])
whitespacez::?r3   z(alias)(\s+)([a-z]\w*)?
alias-typez(struct)(\s+)([a-z]\w*)?struct-typez(%s)rW   z(\s+)([a-z]\w*)?z=(module)(\s+)(interface(?=\s))?(\s+)?((?:[a-z]\w*/)*[a-z]\w*)z`(import)(\s+)((?:[a-z]\w*/)*[a-z]\w*)(?:(\s*)(=)(\s*)(qualified)?(\s*)((?:[a-z]\w*/)*[a-z]\w*))?z>^(public|private)?(\s+)?(function|fun|val)(\s+)([a-z]\w*|\((?:z|/)\))zd^(?:(public|private)(?=\s+external))?((?<!^)\s+)?(external)(\s+)(inline(?=\s))?(\s+)?([a-z]\w*|\((?:z::?|:=|\->|[=.]z((?:[a-z]\w*/)*)([A-Z]\w*)z((?:[a-z]\w*/)*)([a-z]\w*)z((?:[a-z]\w*/)*)(\((?:z_\w*z@"	litstringz
|/(?![*/])`z[{}()\[\];,]z![0-9]+\.[0-9]+([eE][\-+]?[0-9]+)?z0[xX][0-9a-fA-F]+z[0-9]+r\   charr^   r_   =z(?=\((?!,*\)))rd   z[(\[<]type-nestedtype-contentz[)\]>]ri   z([a-z]\w*)(\s*)(:)(?!:)z(?=((%s)z))z[EPHVX]z[a-z][0-9]*(?![\w/])z((?:[a-z]\w*/)*)([a-z]\w+)z::|->|[.:|]z(\n\s*)(#.*)$rM   r  rP   r  r  rn   r  r  z[^"]+z""z	[^\\"\n]+escape-sequencez["\n]z
[^\\\'\n]+z[\'\n]z\\[nrt\\"\']z\\x[0-9a-fA-F]{2}z\\u[0-9a-fA-F]{4}z\\U[0-9a-fA-F]{6})r{   r  r  r3   r  r  r  rP   r  r_   r  r  N)2r|   r}   r~   r   r   r   r   r   r   keywordstypeStartKeywordstypekeywordsbuiltinsymbols	sboundaryboundaryr   	Attribute	tokenTypeClasstokenTypeDefr   EmphtokenConstructorr   r   r   r   r   r   r   r   PseudoVariabler   Doubler   r   r   r   r   r   r   r   r   Preprocr   r   r   r   r   r   r   r   r     sd    D
;ChG!IIH 
L
G *G #%I H I::L||
 L! iF3'':|)T((7J*U!233 !"*7J"M Ngz7JOQ+ gz4>>:wPZz4>>;<%'./1:;gz7JNP ")*,56gz7JUYUbUbce
 sxx--8',,Gsxx))H4g>sxx((83W^^D)+W5 +dnn&679*HT^^T,JK&09<dnnd+-dmm$ FMM;/ |#X.8k* 26<<@!6::.'6;;'6==(+u;
~ 7OFO
 V4FO
 	=1N#
 	6*	=19'dJ	24N#
 L! sxx--8'B388H--84?f ("I. %i0i(()*dnni02*dnni02 Y' FO/
8 x
GOODEZ W&&	2w~~&	
 ))*W&&0W&&/g''(	
 v}}%FMM"6==&)
 6==)%&v}}f-
 FKK(%&V,
 fmm,!6==1!6==1!6==1
cXFr   r   )%r   rP  pygments.lexerr   r   r   r   r   r   r	   r
   pygments.tokenr   r   r   r   r   r   r   r   r   r   pygmentsr   r   __all__r   r   r   r   r   r0  r   r   r   r   r   r   r   r   <module>r     s    
' ' '- - - %0
B: BJ ,m m`G
 GTF*: F*R=ZE =Z@9= 9.9 9.M M.:= :.U
 Ur   