U
    ]g>                     @   s   d Z ddlZddl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d	g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.ml
    ~~~~~~~~~~~~~~~~~~

    Lexers for ML family languages.

    :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)
RegexLexerincludebygroupsdefaultwords)	TextCommentOperatorKeywordNameStringNumberPunctuationErrorSMLLexer
OcamlLexerOpaLexerReasonLexer
FStarLexerc                )   @   s  e Zd ZdZdZdgZdddgZddgZd	Zd
Z	dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3h)Z
d4d5d6d7d8d9d:hZd;d<d=d>d?d@dAdBdCdDh
ZdEZdFZdGdH ZdIdJ ZdKdL ZdMdN ZdOefdPejdQfgdRedSfdTedUfdVejdWfdXejdSfdYejdUfgdZd[d\d] eD efd^ejd_fd`ejdafdbejfdcejfddej fdeej!fdfej!fdgej!fdhej fdie"j#fdje d<e"j#fdke d<e"j#fdlejdmfdnejdofdpejdqfdrejdsfdte"j$fd;e duedvfd;e d<efd;e d<efgd;e duefd;e d<edUfd;e d<edUfdOe%fdwe%fge&dSge'dxdyejdzfd{ejd|fe'd}e'd~dwe%fge'dxdefdPejdQfdejdfdejdfd5edfdejdfe'd}e'd~dwe%fg
eejeejdd[e
edUfge'dxe'dd;e d<e"j(fe&dUge'dxdte"j$fdedfd;e d<e"j)dUfd;e d<e"j)dUfe&dUge'dxdte"j$fdedfd;e de de*e"j+eedUfd;e de de*e"j+eedUfd;e d<e"j+dUfd;e d<e"j+dUfe&dUge'dxe'ddte"j$fdedfde d<edfd;e d<ej,fd;e d<ej,fdwe%dUfge'dxdejdfe'de'd~dwe%dUfge'dxe'ddte"j$fdedfde*eeejdUfde d<edfd;e d<ej,fd;e d<ej,fdwe%dUfg	e'dxdejdfdejdfdejfde d<e*eee"j-fde d<e*eee"j-fe'de'd~dwe%fg	e'dxde d<e*ejee"j-fde d<e*ejee"j-fdejfd;e de d<e"j-fe&dUge'dxd;e d<e"j-dUfd;e d<e"j-dUfdwe%dUfgdefdPejdQfdte"j$fee"fdAefdedUfee"fgdejfdPejdfdejdUfdejfgdZ.dS )r   z'
    For the Standard ML language.
    zStandard MLZsmlz*.smlz*.sigz*.funztext/x-standardmlzapplication/x-standardmlz)https://en.wikipedia.org/wiki/Standard_ML1.5ZabstypeandZandalsoascasedatatypedoelseend	exceptionfnfunhandleifinZinfixZinfixrletlocalZnonfixofopopenZorelseraiserecthentypevalwithZwithtypewhileZeqtypefunctorr   Zsharingsig	signaturestructZ	structurewhere:\|==>->#:>()[]{},;z..._z[a-zA-Z][\w']*z[!%&$#+\-/:<=>?@\\~`^|*]+c              	   C   s:   d| fdt jfdt jfdt jfdt jfdt jfd| dfgS )	Nz[^"\\]z\\[\\"abtnvfr]z\\\^[\x40-\x5e]
\\[0-9]{3}z\\u[0-9a-fA-F]{4}z\\\s+\\"#pop)r   EscapeZInterpol)Zwhatkind rH   6/tmp/pip-unpacked-wheel-zak7uw41/pygments/lexers/ml.pystringy<   s    zSMLLexer.stringyc                 c   sP   | d| jkrt}ntj}|d|| dfV  |dt| dfV  d S )N      )groupalphanumid_reservedr   r   	Namespacestartr   selfmatchtokenrH   rH   rI   long_id_callbackK   s
    zSMLLexer.long_id_callbackc                 c   sL   | d| jkrt}n| d| jkr,t}nt}|d|| dfV  d S NrK   )rM   rN   r   symbolicid_reservedr   rP   rQ   rH   rH   rI   end_id_callbackS   s    zSMLLexer.end_id_callbackc                 c   sF   | d}|| jkrtj}n|| jkr,t}nt}|d||fV  d S rV   )rM   rN   r
   ReservedrW   r   r   rP   )rR   rS   strrT   rH   rH   rI   id_callback\   s    


zSMLLexer.id_callback\s+\(\*commentz\(|\[|\{mainz\)|\]|\}rF   z\b(let|if|local)\b(?!\'))r_   r_   z\b(struct|sig|while)\b(?!\')z\b(do|else|end|in|then)\b(?!\')({})|c                 c   s   | ]}t |V  qd S )N)reescape).0zrH   rH   rI   	<genexpr>|   s     zSMLLexer.<genexpr>z#"charrE   stringz~?0x[0-9a-fA-F]+z0wx[0-9a-fA-F]+z0w\d+z~?\d+\.\d+[eE]~?\d+z
~?\d+\.\d+z~?\d+[eE]~?\d+z~?\d+z#\s*[1-9][0-9]*z#\s*(z#\s+(z\b(datatype|abstype)\b(?!\')dnamez\b(exception)\b(?!\')enamez4\b(functor|include|open|signature|structure)\b(?!\')snamez\b(type|eqtype)\b(?!\')tnamez	\'[\w\']*z)(\.)dottedz\S+
whitespacez\b(val|and)\b(?!\')vnamez\b(fun)\b(?!\'))rF   main-funfname
delimiterscorez\sz\b(fun|and)\b(?!\')rq   z\b(val)\b(?!\'))rF   r_   ro   z\b(case|handle)\b(?!\'))rF   r_   z(?=\b({})\b(?!\'))breakout\(tyvarseqz)(\s*)(=(?!z))=(?!)rF   typbindz\b(and)\b(?!\'))rF   rl   z(=)(\s*)(datatype))rF   datbinddatcon)rF   ri   z\b(withtype)\b(?!\')z\b(of)\b(?!\')z
(\|)(\s*)(z
(\|)(\s+)(z(and\b)(\s+)(z(and\b)(\s*)(z)|(\)z[^(*)]#push\*\)[(*)])rn   rr   rs   rm   rootr_   rp   rg   rh   rt   rk   rq   ro   rl   rx   ri   ry   rj   rz   rv   r^   N)/__name__
__module____qualname____doc__namealiases	filenames	mimetypesurlversion_addedrN   rW   Znonid_reservedZalphanumid_reZsymbolicid_rerJ   rU   rX   r[   r   r   	Multiliner   r
   rY   formatjoinr   CharDoubler   HexIntegerFloatr   ZLabelZ	Decoratorr   r   r   rO   ZFunctionr   VariableTypeClasstokensrH   rH   rH   rI   r      s  
                                        	







 
"



  
 





	


 c                   @   s  e Zd Zd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Zdejfdejfdejfgdefdejjfdejdfdejfdedfdde
efddeddd  efd!e de d"e efddeejfdde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fd,ej'd-fd.ej(fgd/efd0ed1fd2ed3fd4efgd5ej'fe)d6d7ej'fd,ej'd3fgdefd8e*fd9ejfd:ejd3fd;ed3fe+d3gd<Z,dS )=r   z!
    For the OCaml language.
    ZOCamlzhttps://ocaml.org/Zocamlz*.mlz*.mliz*.mllz*.mlyztext/x-ocamlz0.7)0r   r   assertbeginclass
constraintr   donedowntor   r   r   externalfalseforr   functionr/   r!   r"   r   inheritinitializerlazyr#   rS   methodmodulemutablenewobjectr%   r'   privater(   r)   r0   r2   r*   totruetryr+   r,   virtualwhenr.   r-   ))!=r9   &&&ru   r{   \*\+rA   --\.r8   \.\.\.r4   :::=r:   rB   ;;<<-r6   >>]>\}\?\?\?\[\[<\[>\[\|r>   rC   `\{\{<r5   \|]\}~[!$%&*+\./:<=>?@^|~-])asrlandlorlsllxormodor[!?~][=<>@^|&+\*/$%-]unitintfloatboolrh   rg   listarray\\[\\"\'ntbr]rD   \\x[0-9a-fA-F]{2}r\   false|true|\(\)|\[\]\b([A-Z][\w\']*)(?=\s*\.)rm   \b([A-Z][\w\']*)\(\*(?![)])r^   \b({})\bra   r`   Nr;   )?[^\W\d][\w']*(-?\d[\d_]*(.[\d_]*)?([eE][+\-]?\d[\d_]*)0[xX][\da-fA-F][\da-fA-F_]*0[oO][0-7][0-7_]*0[bB][01][01_]*\d[\d_]*7'(?:(\\[\\\"'ntbr ])|(\\[0-9]{3})|(\\x[0-9a-fA-F]{2}))''.''rE   rh   [~?][a-z][\w\']*:[^(*)]+r]   r|   r}   rF   r~   [^\\"]+escape-sequence\\\nr   [A-Z][\w\']*(?=\s*\.)[A-Z][\w\']*[a-z_][\w\']*r   r   r^   rh   rm   )-r   r   r   r   r   r   r   r   r   r   keywordskeyopts	operatorsword_operatorsprefix_syms
infix_syms
primitivesr   rG   r   r   BuiltinPseudorO   r   r   r   r   r
   r	   Wordr   r   r   r   OctBinr   r   r   r   r   r   r   r   rH   rH   rH   rI   r   c  sx   	




c                   @   s  e Zd ZdZdZdgZdgZdgZdZdZ	dZ
d	Zd
ZdZdejfdejfdejfgdedfdefgeddefgedee
dddefde d ej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fd ejd!fd"ejfd#e d$fd%e d&fd'ej!d(fd)ej"fd*e d+ ej"fd,ej#fd-e d+ efd.e d/e fd.e d/e fd0e d1fd2e ej$fd3e ej!fd4ej!feefgedd5ej$fe%d6gedd7ej$d8fd9ej$d:fed7 ej$d8feej$d&fd2e ej$fe%d&gede%d;gedd<ej$d=fe%d&gedd5ej$d>fd?ej$d@fe%d&geddAej$dBfd5ej$d>fe%d&geddCej$fdDej$fd7ej$d$fdEej$d&fgeddFej$fdDej$fd#ej$d$fd%ej$d&fgdGefded$fdHed&fdDefgdIejfd ejd&fd#e dJfedKgdLejfdMejd&fd#e dJfedKgdNej!dOfdPej!dQfgdRej!d&fgdefdSej!dTfdUej!d&fdPej!dQfgd2ej!dVfd ej!dWfd3e ej!d&fd4ej!dXfdYej!d&fd#e dXfgdZed[fd\ej!d]fd^ej!d(fd#e dJfd_ej!fgd`ed&fdaefgdbZ&dcS )dr   z%
    Lexer for the Opa language.
    ZOpaZopaz*.opaz
text/x-opazhttp://opalang.orgr   )r   r   r   r   clientcssZdatabasedbr   r   r   r   forallr   r!   importrS   r   r   packageparserr)   serverr*   r+   r,   r-   Z
xml_parserz(([a-zA-Z_]\w*)|(`[^`]*`))z[.=\-<>,@~%/+?*&^!]z[()\[\],;|]z\\[\\"\'ntr}]rD   r   z/\*nested-commentz//.*?$commentsr\   comments-and-spacesz\b)prefixsuffix@z-?.[\d]+([eE][+\-]?\d+)z-?\d+.\d*([eE][+\-]?\d+)z-?\d+[eE][+\-]?\d+z0[xX][\da-fA-F]+z0[oO][0-7]+z
0[bB][01]+z\d+z#[\da-fA-F]{3,6}rE   rh   z9'(?:(\\[\\\"'ntbr ])|(\\[0-9]{3})|(\\x[0-9a-fA-F]{2})|.)'r   r|   r   rF   z<(?=[a-zA-Z>])html-open-tagz[@?!]?(/\w+)+(\[_\])?z<-(?!r<   z\b([A-Z]\w*)(?=\.)rw   r;   z)+r4   r+   r   r9   z#(?=\{)r8   )rF   
type-lhs-1type-with-slashru   )rF   
type-tuplez~?\{)rF   type-record)rF   slash-type-1type-1/)rF   r  )rF   r+   z(?=,))rF   
type-arrowz,(?=[^:]*?->)r  z[^()/*]+z[/*]r{   z[^{}/*]+[^/*]+z\*/z[^\\"{]+r   r   z	[^\\\'{]+z\'z[\w\-:]+)rF   	html-attrr   )rF   html-contentz	[\w\-:]*>z	[\w\-:]+=html-attr-valuez/>)rF   single-string)rF   rh   )rF   r   z[^"\'{`=<>]+z<!--html-commentz</)rF   html-end-tagr   z[^<{]+z-->z[^\-]+|-)r   r  r  r   r+   r  r  r  r  r  r  r  r  rh   r  r  r   r  r  r  r  N)'r   r   r   r   r   r   r   r   r   r   r   Zident_reZop_reZpunc_rer   rG   r   r   r   r   r
   r   r   r   r   r   r   r  r  r   r   r   r	   Singler   rO   r   r   r   rH   rH   rH   rI   r     s  

i

















	









	  c                   @   s  e Zd ZdZdZdZ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ejfdejfdejfgdefdejjfdejdfdejfdejfdejdfdde
efddeddd  ej fd!e de d"e efddeej fdde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fd,ej)d-fd.ej*fgd/ejfd0ejd1fd2ejd3fd4ejfgd5ej)fe+d6d7ej)fd,ej)d3fgdefd8e,fd9ejfd:ejd3fd;ed3fe-d3gd<Z.dS )=r   z$
    For the ReasonML language.
    ZReasonMLzhttps://reasonml.github.io/Zreasonmlreasonz*.rez*.reiztext/x-reasonmlz2.6)0r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zesfunr   r/   r!   r"   r   r   r   r   r#   switchr   pubr   r   Znonrecr   r%   r'   prir)   r0   r2   r*   r   r   r   r+   r,   r   r   r.   r-   )+r   r9   r   r   ru   r{   r   r   rA   r   r   r7   r   r   z\.\.\.r4   r   r   r:   rB   r   r   r   r6   r   r   r   r   r   r   r   r   r   r>   rC   r   r   r   r5   z\|\|r   r   r   r   )	r   r   r   r   r   Zlsrr   r   r   r   r   r   r   rD   r   r\   r   r   rm   r   z//.*?\nz	\/\*(?!/)r^   r   ra   r`   Nr   r;   r   r   r   r   r   r   r   r   r   r   rE   rh   r   r  z\/\*r|   z\*\/rF   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   rG   r   r   r   r   rO   r   r   r!  r   r   r   r
   r	   r   r   r   r   r   r  r  r   r   r   r   r   r   r   r   rH   rH   rH   rI   r     sz   







c                   @   s  e Zd ZdZdZdZ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ejfdejfdejfgdefdejjfdejdfdejfdedfdefdde
efddeejfddeejfddeddd  e fd!e de d"e e fdde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fd,e j)fd-efd.ej*d/fd0ej+fgd1efd2ed3fd4ed5fd6efgd7ej*fe,d8d9ej*fd.ej*d5fgdefd:e-fd;ejfd<ejd5fd=ed5fe.d5gd>Z/dS )?r   z
    For the F* language.
    ZFStarzhttps://www.fstar-lang.org/Zfstarz*.fstz*.fstiztext/x-fstarz2.7)5Zabstract
attributesZnoeqZunopteqZandbeginZbyr   Zeffectr   r   Zensuresr   existsr   r  r   r   r!   r"   r   inlineZinline_for_extractionZirreducibleZlogicrS   r   r   r   Z
new_effectZ	noextractr%   r'   opaquer   Zrange_ofZ	reifiableZreifyZreflectablerequiresZset_range_ofZ
sub_effectZsynthr*   totalr   r   r+   ZunfoldZ
unfoldabler,   r   r-   not)r#   r)   )ZassumeZadmitr   Zcalc)/r   r   z/\\z\\/z<:z<@z\(\|z\|\)r9   zu#r   ru   r{   z\(\)rA   z~>r8   r   z<--z<==>z==>r   r   z\?\.z\.\[z\.\(z\.\(\|z\.\[\|z
\{:patternr4   r   r   rB   r   r6   z%\[z!\{r   z\[@r   z\|>z\]z\|\]r   r5   r   z\$r   r   r   r   r   rD   r   r\   zfalse|true|False|True|\(\)|\[\]r   rm   r   r   r^   z\/\/.+$r   ra   r`   Nr   r;   r   r   r   r   r   r   r   r   r   r   z\`([\w\'.]+)\`z\`rE   rh   r   r   r]   r|   r}   rF   r~   r   r   r   r   r   r   r   r   )0r   r   r   r   r   r   r   r   r   r   r   Zdecl_keywordsZassume_keywordsr   r   r   r   r   r   rG   r   r   r   r   rO   r   r   r   r   r
   	ExceptionZDeclarationr	   r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   rH   rH   rH   rI   r   ^  s   


!

)r   rb   Zpygments.lexerr   r   r   r   r   Zpygments.tokenr   r   r	   r
   r   r   r   r   r   __all__r   r   r   r   r   rH   rH   rH   rI   <module>   s   
,  Q\  E\