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

    Lexers for Haskell and related languages.

    :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)Lexer
RegexLexerbygroupsdo_insertionsdefaultinclude)	TextCommentOperatorKeywordNameStringNumberPunctuationGeneric)	unistring)	HaskellLexer
IdrisLexer	AgdaLexerCryptolLexerLiterateHaskellLexerLiterateIdrisLexerLiterateAgdaLexerLiterateCryptolLexer	KokaLexerz.*?
c                   @   s.  e Zd ZdZdZddgZdgZdgZej	ej
B 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e ejfdejfdej d ejfdej d efdej d ejfdej 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fd!e j!fd"e j!fd#e j"fd$e j#fd%e j$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d0ej d1 ej d2 e'ej(eeeed.fd0ej d3 e'ej(eeee&d4fd0ej d5 e'ej(ee&d4fd6ej(d.fgd	efd0ej d5 e'ej(ee&d4fd7ej d8 ej(d.fgd	efd7ej d9 ejfd:ej d; ejfd
ejfdejdfd<e&fd efd=e&d>fd-e&d?fg	d@ejfdejdAfdBejd.fdCejfgdDejd.fdEej)dFfd&ejd.fgdGefdEej)dFfd(ed.fgdHej)d.fdIej dJ ej)d.fdeej)d.fdKej)d.fdLej)d.fd%ej)d.fdMej)d.fgdNZ*dOS )Pr   zk
    A Haskell lexer based on the lexemes defined in the Haskell 98 Report.

    .. versionadded:: 0.8
    Haskell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(')\([^)]*\)\\(?![:!#$%&*+.\\/<=>?@^|~-]+)+(<-|::|->|=>|=)(?![:!#$%&*+.\\/<=>?@^|~-]+):[:!#$%&*+.\\/<=>?@^|~-]*[:!#$%&*+.\\/<=>?@^|~-]+\d+[eE][+-]?\d+\d+\.\d+([eE][+-]?\d+)?0[oO][0-7]+0[xX][\da-fA-F]+\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\']*),\(re   re   #pop:2[^-{}]+#push-\}[-{}][^\\']'\\escape[^\\"]+[abfnrtv"\'&\\]z\^[][z@^_]o[0-7]+x[\da-fA-F]+\s+\\rootrL   rN   re   rJ   r\   r^   rr   N)+__name__
__module____qualname____doc__namealiases	filenames	mimetypesre	MULTILINEUNICODEflagsreservedasciir   r	   Single	Multiliner   Reservedr   	Exceptionjoinr   CharuniLlFunctionLuTyper
   Wordr   FloatOctHexIntegerBuiltinr   r   	NamespaceEscapetokens r   r   X/home/ubuntu/.local/lib/python3.10/site-packages/wandb/vendor/pygments/lexers/haskell.pyr      s    



(




	








r   c                   @   s*  e 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e
 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e ejfdeejed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j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jfd(ejfd)ejfd*ejdfd+efd,efd-ed.fd/ed0fg	d1ejfd*ejd2fd3ejd&fd4ejfgd5ejfd6ej d7fdejd&fgd8efd6ej d7fded&fgd9ej d&fd:ej d&fde	ej d&fd;ej d&fd<ej d&fdej d&fd=ej d&fgd>Z!d?S )@r   z
    A lexer for the dependently typed programming language Idris.

    Based on the Haskell and Agda Lexer.

    .. versionadded:: 2.0
    Idrisidrisidrz*.idrztext/x-idris).r   r   r    r   usingr"   r#   r%   r&   r'   r(   rewriteauto	namespacecodatamutualprivatepublicabstracttotalpartialr)   proofr+   r,   staticr.   r/   withpatterntermsyntaxprefix	postulate
parametersrecorddsl
impossibleimplicittacticsintrosintrocomputerefineexacttrivialr0   )liblinkflagr   hidefreezeaccessr   loggingdynamicr~   error_handlerslanguagez^(\s*)(%%%s)rQ   z((\s*)(--(?![!#$%&*+./<=>?@^|_~:\\]).*?)$z(\s*)(\|{3}.*?)$z
(\s*)(\{-)rJ   ^(\s*)([^\s(){}]+)(\s*)(:)(\s*)rP   (import|module)(\s+)rN   ('')?[A-Z][\w\']*z[a-z][\w\']*z(<-|::|->|=>|=)z"([(){}\[\]:!#$%&*+.\\/<=>?@^|~-]+)rV   rW   rY   rZ   r[   r\   r]   r^   
[^\s(){}]+\s+?rG   ([A-Z][\w.]*)(\s+)(\()re   [A-Z][\w.]*rc   [A-Z]\w*(_[\w\']+|[a-z][\w\']*)z--.*$rI   rh   rU   ri   rj   rb   rk   rl   rm   rn   ro   z[^\\']rq   rr   rs   rt   \^[][A-Z@^_]ru   rv   rw   )ry   rN   re   rJ   r\   r^   rr   N)"rz   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      s    	





	









r   c                   @   s>  e Zd ZdZdZdgZdgZdgZg 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e ejfde	eje
d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j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d'S )(r   z
    For the `Agda <http://wiki.portal.chalmers.se/agda/pmwiki.php>`_
    dependently typed functional programming language and proof assistant.

    .. versionadded:: 2.0
    Agdaagdaz*.agdaztext/x-agda)"r   r   coinductiveconstructorr    fieldforallhidingr&   	inductiveinfixinfixlinfixrr(   r)   r   openr   r   	primitiver   quote	quoteGoal	quoteTermr   renamingr   r   tacticunquoteunquoteDeclr   r.   r   r   rH   rI   rJ   z\{!holerP   rQ   r   rN   z\b(Set|Prop)\bz(\(|\)|\{|\})u   (\.{1,3}|\||Λ|∀|→|:|=|->)rV   rW   rY   rZ   r[   r\   r]   r^   r   r   z[^!{}]+rm   z!\}rc   z[!{}]z[a-zA-Z][\w.]*z	[\W0-9_]+rr   )ry   r   rN   rJ   r\   r^   rr   N)rz   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     sR    






r   c                   @   s~  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e 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jfdejfdejfdejfdej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j!e
ee
ed(fd+e ej!e
ee
ed,fd-e ej!e
ed,fd.ej!d(fgd	e
fd-e ej!e
ed,fd/ej!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j"d<fd ejd(fgd=efd;ej"d<fd"ed(fgd>ej"d(fd?ej"d(fde	ej"d(fd@ej"d(fdAej"d(fdej"d(fdBej"d(fgdCZ#e$dDZ%dEdF Z&dGS )Hr   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#   exportexternfinr%   rL   inflg2maxminrN   r*   pragmapropertyr,   r-   r.   widthr0   rG   //.*$/\*rJ   rK   rL   rM   rN   rO   rP   rQ   z^[_a-z][\w\']*z'?[_a-z][\w']*r   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   z(([A-Z][\w.]*)(\s+)(as)(\s+)([A-Z][\w.]*)z#([A-Z][\w.]*)(\s+)(hiding)(\s+)(\()re   r   rf   r   r   r   rh   ri   rj   rk   [^/*]+rm   \*/[*/]rp   rq   rr   rs   rt   r   ru   rv   rw   rx   )r   splitreverse	transposer   lengthtailz<<z>>z<<<z>>>constregparseqASSERT	undefinederrortracec                 c   sT    dg}t | ||D ]\}}}|tu r!|| jv r!|tj|fV  q|||fV  qd S )Nry   )r   get_tokens_unprocessedr   EXTRA_KEYWORDSr   )selftextstackindextokenvaluer   r   r   r    s   z#CryptolLexer.get_tokens_unprocessedN)'rz   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   setr  r  r   r   r   r   r   P  s    



$




	








fr   c                   @   s*   e Zd ZdZedZdd Zdd ZdS )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                 K   s   || _ tj| fi | d S )N)	baselexerr   __init__)r  r  optionsr   r   r   r    s   zLiterateLexer.__init__c              	   c   s   | j d}|d u r| dd dv rdpd}d}g }|dkr\t|D ]4}| }| j|}|rM|t	|dt
j|dfgf ||d7 }q&|t	|dt|fgf q&ncdd	lm} |di | j }	d}
d}t|D ]=}| }|
r| d
rd}
||7 }qs||7 }qs| drd}
||7 }|t	|t|	|f d}qs||7 }qs|t	|t|	|f t|| j|D ]}|V  qd S )Nlitstyler      z%\latexbird    )TexLexerz
\end{code}z\begin{code}r   )r  getlstripline_refinditergroupbird_rematchappendlenr	   Specialr   pygments.lexers.markupr#  
startswithlistr  r   r  )r  r  stylecode
insertionsr*  linemr#  lxlexer	codelinesr  itemr   r   r   r    sT   





z$LiterateLexer.get_tokens_unprocessedN)	rz   r{   r|   r}   r   compiler)  r  r  r   r   r   r   r    s
    
r  c                   @   0   e Zd ZdZdZg dZdgZdgZdd ZdS )	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)lhszliterate-haskelllhaskellz*.lhsztext/x-literate-haskellc                 K   &   t di |}tj| |fi | d S Nr   )r   r  r  r  r  hslexerr   r   r   r  ,     zLiterateHaskellLexer.__init__N	rz   r{   r|   r}   r~   r   r   r   r  r   r   r   r   r         r   c                   @   r:  )	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)lidrzliterate-idrislidrisz*.lidrztext/x-literate-idrisc                 K   r=  r>  )r   r  r  r?  r   r   r   r  C  rA  zLiterateIdrisLexer.__init__NrB  r   r   r   r   r   1  rC  r   c                   @   s0   e Zd ZdZdZddgZdgZdgZdd Zd	S )
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 Agdalagdazliterate-agdaz*.lagdaztext/x-literate-agdac                 K   s*   t di |}tj| |fddi| d S )Nr  r  r   )r   r  r  )r  r  	agdalexerr   r   r   r  Z  s   zLiterateAgdaLexer.__init__NrB  r   r   r   r   r   H  rC  r   c                   @   r:  )	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)lcryzliterate-cryptollcryptolz*.lcryztext/x-literate-cryptolc                 K   r=  r>  )r   r  r  )r  r  crylexerr   r   r   r  q  rA  zLiterateCryptolLexer.__init__NrB  r   r   r   r   r   _  rC  r   c                   @   s  e 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 d ZdZejZejZejZedde edfdeeeedfdeeeedfdde	 d eeeedfdeeeeejfdeeeejeeeeejfde d eeeejfde d eeeeejfdde
 e ejfdde e efdde e ejfde efdeejefd eejefd!e d eejefd"ej fd#e!j"d$fed% e#fd&e#fd'e$fd(e%j&fd)e%j'fd*e%j(fd+e!j)d,fd-e!j"d.fgd/efedgd0e$d1fedgd2ed3fed4gd5ed1fd2ed3fd6efd7eeeefed4geddde
 e efd8de e d9 ed1fd:e efd;efd"ej fdeejefd<eejefd=efe*d1g
d>e+j,fd?efd@e+j-dAfdBe+j.fgdCe+j-fd@e+j-dDfdEe+j-d1fdFe+j-fgdGe!j"fdHe!j/fd-e!j"d1fgdIe!j"fedJdKe!j"d1fgdLe!j)fedJdMe!j)d1fgdNe!j/fdOe!j/fdPe!j/fdQe!j/fgdRZ0dSS )Tr   zc
    Lexer for the `Koka <http://koka.codeplex.com>`_
    language.

    .. versionadded:: 1.6
    Kokakokaz*.kkz*.kkiztext/x-koka)"r   r   r   r-   cotyperectypealiasstructconfunfunctionvalvarexternalr%   r,   r#   elifreturnr*  r   r   r   rN   rL   asr   inlinerectryyieldenum	interfacer(   )r-   rM  rN  rO  rP  r^  )r   existssomer   )forwhilerepeatforeachzforeach-indexedr  catchfinallycsjsfilerefassignedz[$%&*+@!/\\^~=.:\-?|<>]+z(?!)z	(?![\w/])
whitespacez::?r-   z(alias)(\s+)([a-z]\w*)?
alias-typez(struct)(\s+)([a-z]\w*)?struct-typez(%s)rQ   z(\s+)([a-z]\w*)?z4(module)(\s+)(interface\s+)?((?:[a-z]\w*/)*[a-z]\w*)zb(import)(\s+)((?:[a-z]\w*/)*[a-z]\w*)(?:(\s*)(=)(\s*)((?:qualified\s*)?)((?:[a-z]\w*/)*[a-z]\w*))?zE(^(?:(?:public|private)\s*)?(?:function|fun|val))(\s+)([a-z]\w*|\((?:z|/)\))zE(^(?:(?:public|private)\s*)?external)(\s+)(inline\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(?=\((?!,*\)))rc   z[(\[<]type-nestedtype-contentz[)\]>]rh   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*#.*$rG   r   rJ   r   r   rm   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})ry   ro  rp  r-   ru  rv  rn  rJ   rq  r^   rs  rw  N)1rz   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   v  s   








?









 
r   )#r}   r   pygments.lexerr   r   r   r   r   r   pygments.tokenr   r	   r
   r   r   r   r   r   r   pygmentsr   r   __all__r9  r&  r   r   r   r   r  r   r   r   r   r   r   r   r   r   <module>   s&   
 ,
 nE 
A