o
    Rh                     @   s,  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 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-2025 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                   @   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
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d0ejfd1ej%fd2e&fdefd.ed/fd3e&d4fd5efd6ej d7 ej d8 e'ej(eeeed4fd6ej d9 e'ej(eeee&d:fd6ej d; e'ej(ee&d:fd<ej(d4fgdefd6ej d; e'ej(ee&d:fd=ej d> ej(d4fgdefd=ej d? ejfd@ej dA ejfdejfdejdfdBe&fd#efdCe&dDfd3e&dEfg	dFejfdejdGfdHejd4fdIejfgdJejd4fdKej)dLfd,ejd4fgdMefdKej)dLfd.ed4fgdNej)d4fdOej dP ej)d4fdeej)d4fdQej)d4fdRej)d4fdSej)d4fdTe'eej)d4fgdUZ*dVS )Wr   zP
    A Haskell lexer based on the lexemes defined in the Haskell 98 Report.
    Haskellzhttps://www.haskell.org/haskellhsz*.hsztext/x-haskellz0.8)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({})(?!\')\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\']*),\(rd   rd   #pop:2[^-{}]+#push-\}[-{}][^\\']'\\escape[^\\"]+[abfnrtv"\'&\\]z\^[][z@^_]o[0-7]+x[\da-fA-F]+\d+	(\s+)(\\)rootrP   rR   rd   rN   r[   r]   rq   N)+__name__
__module____qualname____doc__nameurlaliases	filenames	mimetypesversion_addedreservedasciir   r   Single	Multiliner   Reservedr   	Exceptionformatjoinr   CharuniLlFunctionLuTyper   Wordr   FloatBinOctHexIntegerBuiltinr   r   	NamespaceEscapetokens r   r   Y/home/air/sanwanet/backup_V2/venv/lib/python3.10/site-packages/pygments/lexers/haskell.pyr      s   


	
 !"
$%'()-




	







r   c                   @   sb   e Zd ZdZdZdgZdgZg Zd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   z<
    A Haskell lexer with support for Hspec constructs.
    Hspechspecz*Spec.hsz2.4ry   z(it)(\s*)("[^"]*")z(describe)(\s*)("[^"]*")z(context)(\s*)("[^"]*")N)rz   r{   r|   r}   r~   r   r   r   r   r   r
   r   r   Docr   r   r   r   r   r   r      s    r   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
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#d0fd1e#d2fg	d3ejfd,ejd4fd5ejd(fd6ejfgd7e j!fd8e j$d9fde j!d(fgd:e fd8e j$d9f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%dAS )Br   zq
    A lexer for the dependently typed programming language Idris.

    Based on the Haskell and Agda Lexer.
    Idriszhttps://www.idris-lang.org/idrisidrz*.idrztext/x-idris2.0)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/   r0   staticr2   r3   withpatterntermsyntaxprefix	postulate
parametersrecorddsl
impossibleimplicittacticsintrosintrocomputerefineexacttrivialr4   )liblinkflagr   hidefreezeaccessr   loggingdynamicr~   error_handlerslanguagez^(\s*)(%({}))rU   z((\s*)(--(?![!#$%&*+./<=>?@^|_~:\\]).*?)$z(\s*)(\|{3}.*?)$z
(\s*)(\{-)rN   ^(\s*)([^\s(){}]+)(\s*)(:)(\s*)rT   (import|module)(\s+)rR   ('')?[A-Z][\w\']*z[a-z][\w\']*z(<-|::|->|=>|=)z"([(){}\[\]:!#$%&*+.\\/<=>?@^|~-]+)\d+[eE][+-]?\d+\d+\.\d+([eE][+-]?\d+)?0[xX][\da-fA-F]+rv   rZ   r[   r\   r]   
[^\s(){}]+\s+?rK   ([A-Z][\w.]*)(\s+)(\()rd   [A-Z][\w.]*rb   [A-Z]\w*(_[\w\']+|[a-z][\w\']*)z--.*$rM   rg   rY   rh   ri   ra   rj   rk   rl   rm   rn   z[^\\']rp   rq   rr   rs   \^[][A-Z@^_]rt   ru   rw   )ry   rR   rd   rN   r[   r]   rq   N)&rz   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   r      s    






	








r   c                   @   sD  e Zd ZdZdZdZdgZdgZdgZd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   za
    For the Agda dependently typed functional programming language and
    proof assistant.
    Agdaz.http://wiki.portal.chalmers.se/agda/pmwiki.phpagdaz*.agdaztext/x-agdar   )+r   r   coinductiver   r$   r&   zeta-equalityfieldforallhidingr*   	inductiveinfixinfixlinfixrr,   interleavedr-   macror   zno-eta-equalityopaqueopenoverlapr   r   	primitiver   quote	quoteTermr   renamingr   r   tactic	unfoldingunquoteunquoteDecl
unquoteDefr   variabler2   r   r   rL   rM   rN   z\{!holerT   rU   r   rR   z\b(Set|Prop)[\u2080-\u2089]*\bz(\(|\)|\{|\})z((\.{1,3}|\||\u03BB|\u2200|\u2192|:|=|->)r   r   r   rv   rZ   r[   r\   r]   r   r   z[^!{}]+rl   z!\}rb   z[!{}]z[a-zA-Z][\w.\']*z	[\W0-9_]+rq   )ry   r   rR   rN   r[   r]   rq   N)#rz   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   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	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d0ej$d*fgdefd/e#ej$ee"d.fd1ej$d*fgdefd2ejfd3ejfd4e"fdefd5e"d6fd)e"d7fgd8ejfdejd9fd:ejd*fd;e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dAej%d*fdeej%d*fdBej%d*fdCej%d*fd!ej%d*fdDe#eej%d*fgdEZ&h dFZ'dGdH Z(dIS )Jr   zX
    FIXME: A Cryptol2 lexer based on the lexemes defined in the Haskell 98 Report.
    Cryptolcryptolcryz*.cryztext/x-cryptolhttps://www.cryptol.netr   )ArithBitCmpFalseInfTruer'   r   externfinr)   rP   inflg2maxminrR   r.   pragmapropertyr0   r1   r2   widthr4   rK   //.*$/\*rN   rO   rP   rQ   rR   rS   rT   rU   z^[_a-z][\w\']*z'?[_a-z][\w']*r   rV   rW   rX   rY   r   r   z0[oO][0-7]+r   rv   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   z(([A-Z][\w.]*)(\s+)(as)(\s+)([A-Z][\w.]*)z#([A-Z][\w.]*)(\s+)(hiding)(\s+)(\()rd   r   re   r   r   r   rg   rh   ri   rj   [^/*]+rl   \*/[*/]ro   rp   rq   rr   rs   r   rt   ru   rw   rx   >   <<>><<<>>>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 )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   r   r   r   r&  r%  r   r   r   r   r   i  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   )r0  getlstripr	   finditergroupbird_rematchappendlenr   Specialr
   pygments.lexers.markupr7  
startswithlistr%  r   r.  )r'  r(  stylecode
insertionsr=  linemr7  lxlexer	codelinesr3  r   r   r   r%    sP   





z$LiterateLexer.get_tokens_unprocessedN)	rz   r{   r|   r}   recompiler<  r/  r%  r   r   r   r   r-    s
    
r-  c                   @   8   e Zd ZdZdZg dZdgZdgZdZdZ	dd	 Z
d
S )r   aS  
    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.
    zLiterate Haskell)zliterate-haskelllhaskelllhsz*.lhsztext/x-literate-haskellz-https://wiki.haskell.org/Literate_programmingz0.9c                 K   &   t di |}tj| |fi | d S Nr   )r   r-  r/  r'  r0  hslexerr   r   r   r/  D     zLiterateHaskellLexer.__init__Nrz   r{   r|   r}   r~   r   r   r   r   r   r/  r   r   r   r   r   2      
r   c                   @   rM  )r   aQ  
    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.
    zLiterate Idris)zliterate-idrislidrislidrz*.lidrztext/x-literate-idrisz?https://idris2.readthedocs.io/en/latest/reference/literate.htmlr   c                 K   rP  rQ  )r   r-  r/  rR  r   r   r   r/  [  rT  zLiterateIdrisLexer.__init__NrU  r   r   r   r   r   I  rV  r   c                   @   s8   e Zd ZdZdZddgZdgZdgZdZdZ	d	d
 Z
dS )r   a:  
    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.
    zLiterate Agdazliterate-agdalagdaz*.lagdaztext/x-literate-agdazEhttps://agda.readthedocs.io/en/latest/tools/literate-programming.htmlr   c                 K   s*   t di |}tj| |fddi| d S )Nr1  r3  r   )r   r-  r/  )r'  r0  	agdalexerr   r   r   r/  r  s   zLiterateAgdaLexer.__init__NrU  r   r   r   r   r   `  rV  r   c                   @   rM  )r   aS  
    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.
    zLiterate Cryptol)zliterate-cryptollcryptollcryz*.lcryztext/x-literate-cryptolr   r   c                 K   rP  rQ  )r   r-  r/  )r'  r0  crylexerr   r   r   r/    rT  zLiterateCryptolLexer.__init__NrU  r   r   r   r   r   w  rV  r   c                   @   s  e Zd ZdZdZdZdgZddgZdgZd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%d0fgd1efedgd2e'd3fedgd4ed5fed6gd7ed3fd4ed5fd8efd9eeeefed6gedddee efd:de
e d; ed3f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-d3g
d@eee.j/fdAefdBe.j0dCfdDe.j1fgdEe.j0fdBe.j0dFfdGe.j0d3fdHe.j0fgdIe$j%fdJe$j2fd/e$j%d3fgdKe$j%fedLdMe$j%d3fgdNe$j,fedLdOe$j,d3fgdPe$j2fdQe$j2fdRe$j2fdSe$j2fgdTZ3dUS )Vr   z&
    Lexer for the Koka language.
    Kokaz/https://koka-lang.github.io/koka/doc/index.htmlkokaz*.kkz*.kkiztext/x-kokaz1.6)"r   r   r   r1   cotyperectypealiasstructconfunfunctionvalvarexternalr)   r0   r'   elifreturnr=  r   r   r   rR   rP   asr   inlinerectryyieldenumr   r,   )r1   r`  ra  rb  rc  rq  )r   existssomer   )forwhilerepeatforeachzforeach-indexedr  catchfinallycsjsfilerefassignedz[$%&*+@!/\\^~=.:\-?|<>]+z(?!)z	(?![\w/])
whitespacez::?r1   z(alias)(\s+)([a-z]\w*)?
alias-typez(struct)(\s+)([a-z]\w*)?struct-typez({})rU   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]+rZ   charr\   r]   =z(?=\((?!,*\)))rb   z[(\[<]type-nestedtype-contentz[)\]>]rg   z([a-z]\w*)(\s*)(:)(?!:)z(?=(({})z))z[EPHVX]z[a-z][0-9]*(?![\w/])z((?:[a-z]\w*/)*)([a-z]\w+)z::|->|[.:|]z(\n\s*)(#.*)$rK   r  rN   r  r  rl   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   r  r  r1   r  r  r  rN   r  r]   r  r  N)4rz   r{   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   r   PseudoVariabler   Doubler   r   r   r   r   r   r   r   r   Preprocr   r   r   r   r   r   r   r   r     s   








?









 
r   )%r}   rK  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   r-  r   r   r   r   r   r   r   r   r   <module>   s&    
(0 oI 
@