o
    	ȷe                     @   s2  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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$G dd deZ%dS )z
    pygments.lexers.haskell
    ~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for Haskell and related languages.

    :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)Lexer
RegexLexerbygroupsdo_insertionsdefaultincludeinherit)
TextCommentOperatorKeywordNameStringNumberPunctuationGeneric
Whitespace)	unistring)
HaskellLexer
HspecLexer
IdrisLexer	AgdaLexerCryptolLexerLiterateHaskellLexerLiterateIdrisLexerLiterateAgdaLexerLiterateCryptolLexer	KokaLexerz.*?
c                   @   s  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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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!fd*ej"fd+ejd,fd-ed.fd/ejfd0ej#fd1e$fd
efd-ed.fd2e$d3fd4efd5ej d6 ej d7 e%ej&eeeed3fd5ej d8 e%ej&eeee$d9fd5ej d: e%ej&ee$d9fd;ej&d3fgd
efd5ej d: e%ej&ee$d9fd<ej d= ej&d3fgd
efd<ej d> ejfd?ej d@ ej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j'dKfd+ejd3fgdLefdJej'dKfd-ed3fgdMej'd3fdNej dO ej'd3fde
ej'd3fdPej'd3fdQej'd3fdRej'd3fdSe%eej'd3fgdTZ(dUS )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\']*),\(rc   rc   #pop:2[^-{}]+#push-\}[-{}][^\\']'\\escape[^\\"]+[abfnrtv"\'&\\]z\^[][z@^_]o[0-7]+x[\da-fA-F]+\d+	(\s+)(\\)rootrO   rQ   rc   rM   rZ   r\   rp   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 r   r   N/var/www/ideatree/venv/lib/python3.10/site-packages/pygments/lexers/haskell.pyr      s   


	
 !"
$%'()-




	







r   c                   @   s\   e Zd ZdZdZdgZ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dS )	r   zY
    A Haskell lexer with support for Hspec constructs.

    .. versionadded:: 2.4.0
    Hspechspecrx   z(it)(\s*)("[^"]*")z(describe)(\s*)("[^"]*")z(context)(\s*)("[^"]*")N)ry   rz   r{   r|   r}   r   r   r   r   r	   r   r   Docr   r   r   r   r   r   r      s    r   c                   @   s4  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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d0e!d1fg	d2ejfd+ejd3fd4ejd'fd5ejfgd6ejfd7ej"d8fdejd'fgd9efd7ej"d8f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d=ej"d'fdej"d'fd>eeej"d'fgd?Z#d@S )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,   proofr.   r/   staticr1   r2   withpatterntermsyntaxprefix	postulate
parametersrecorddsl
impossibleimplicittacticsintrosintrocomputerefineexacttrivialr3   )liblinkflagr   hidefreezeaccessr   loggingdynamicr}   error_handlerslanguagez^(\s*)(%%(%s))rT   z((\s*)(--(?![!#$%&*+./<=>?@^|_~:\\]).*?)$z(\s*)(\|{3}.*?)$z
(\s*)(\{-)rM   ^(\s*)([^\s(){}]+)(\s*)(:)(\s*)rS   (import|module)(\s+)rQ   ('')?[A-Z][\w\']*z[a-z][\w\']*z(<-|::|->|=>|=)z"([(){}\[\]:!#$%&*+.\\/<=>?@^|~-]+)\d+[eE][+-]?\d+\d+\.\d+([eE][+-]?\d+)?0[xX][\da-fA-F]+ru   rY   rZ   r[   r\   
[^\s(){}]+\s+?rJ   ([A-Z][\w.]*)(\s+)(\()rc   [A-Z][\w.]*ra   [A-Z]\w*(_[\w\']+|[a-z][\w\']*)z--.*$rL   rf   rX   rg   rh   r`   ri   rj   rk   rl   rm   z[^\\']ro   rp   rq   rr   \^[][A-Z@^_]rs   rt   rv   )rx   rQ   rc   rM   rZ   r\   rp   N)$ry   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   r      s    






	








r   c                   @   s>  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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 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   variabler1   r   r   rK   rL   rM   z\{!holerS   rT   r   rQ   z\b(Set|Prop)[\u2080-\u2089]*\bz(\(|\)|\{|\})z((\.{1,3}|\||\u03BB|\u2200|\u2192|:|=|->)r   r   r   ru   rY   rZ   r[   r\   r   r   z[^!{}]+rk   z!\}ra   z[!{}]z[a-zA-Z][\w.\']*z	[\W0-9_]+rp   )rx   r   rQ   rM   rZ   r\   rp   N)!ry   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   r   &  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	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 e
ej"d(fgdCZ#h 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&   r   externfinr(   rO   inflg2maxminrQ   r-   pragmapropertyr/   r0   r1   widthr3   rJ   //.*$/\*rM   rN   rO   rP   rQ   rR   rS   rT   z^[_a-z][\w\']*z'?[_a-z][\w']*r   rU   rV   rW   rX   r   r   z0[oO][0-7]+r   ru   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   z(([A-Z][\w.]*)(\s+)(as)(\s+)([A-Z][\w.]*)z#([A-Z][\w.]*)(\s+)(hiding)(\s+)(\()rc   r   rd   r   r   r   rf   rg   rh   ri   [^/*]+rk   \*/[*/]rn   ro   rp   rq   rr   r   rs   rt   rv   rw   >   <<>><<<>>>parregseqr   tailconsterrorsplittracer  ASSERTlengthreverse	transpose	undefinedc                 c   sT    dg}t | ||D ]\}}}|tu r!|| jv r!|tj|fV  q|||fV  qd S )Nrx   )r   get_tokens_unprocessedr   EXTRA_KEYWORDSr   )selftextstackindextokenvaluer   r   r   r    s   z#CryptolLexer.get_tokens_unprocessedN)&ry   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  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|E d H  d 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.markupr0  
startswithlistr  r   r'  )r   r!  stylecode
insertionsr7  linemr0  lxlexer	codelinesr,  r   r   r   r    sP   





z$LiterateLexer.get_tokens_unprocessedN)	ry   rz   r{   r|   recompiler6  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)zliterate-haskelllhaskelllhsz*.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(  K     zLiterateHaskellLexer.__init__N	ry   rz   r{   r|   r}   r   r   r   r(  r   r   r   r   r   9      r   c                   @   rG  )	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                 K   rJ  rK  )r   r&  r(  rL  r   r   r   r(  b  rN  zLiterateIdrisLexer.__init__NrO  r   r   r   r   r   P  rP  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 Agdazliterate-agdalagdaz*.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(  y  s   zLiterateAgdaLexer.__init__NrO  r   r   r   r   r   g  rP  r   c                   @   rG  )	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                 K   rJ  rK  )r   r&  r(  )r   r)  crylexerr   r   r   r(    rN  zLiterateCryptolLexer.__init__NrO  r   r   r   r   r   ~  rP  r   c                   @   s  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 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ejfdeeeejeeeeeej	fde d eeeeeejfde d eee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d0efedgd1e%d2fedgd3ed4fed5gd6ed2fd3ed4fd7efd8eeeefed5geddde e efd9de	 e d: ed2f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+d2g
d?eee,j-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"j#fdIe"j0fd.e"j#d2fgdJe"j#fedKdLe"j#d2fgdMe"j*fedKdNe"j*d2fgdOe"j0fdPe"j0fdQe"j0fdRe"j0fgdSZ1dTS )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   r0   cotyperectypealiasstructconfunfunctionvalvarexternalr(   r/   r&   elifreturnr7  r   r   r   rQ   rO   asr   inlinerectryyieldenumr   r+   )r0   rZ  r[  r\  r]  rk  )r   existssomer   )forwhilerepeatforeachzforeach-indexedr  catchfinallycsjsfilerefassignedz[$%&*+@!/\\^~=.:\-?|<>]+z(?!)z	(?![\w/])
whitespacez::?r0   z(alias)(\s+)([a-z]\w*)?
alias-typez(struct)(\s+)([a-z]\w*)?struct-typez(%s)rT   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]+rY   charr[   r\   =z(?=\((?!,*\)))ra   z[(\[<]type-nestedtype-contentz[)\]>]rf   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*)(#.*)$rJ   r	  rM   r  r
  rk   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})rx   r{  r|  r0   r  r  rz  rM   r}  r\   r  r  N)2ry   rz   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     s   








?









 
r   )&r|   rE  pygments.lexerr   r   r   r   r   r   r   pygments.tokenr	   r
   r   r   r   r   r   r   r   r   pygmentsr   r   __all__rF  r3  r   r   r   r   r   r&  r   r   r   r   r   r   r   r   r   <module>   s(    
$0
 pJ 
@