U
    luf                     @   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-2023 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	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.d/d0d1h)Zd2d3d4d5d6d7d8hZ	d9d:d;d<d=d>d?d@dAdBh
Z
dCZdDZdEdF ZdGdH ZdIdJ ZdKdL ZdMefdNejdOfgdPedQfdRedSfdTejdUfdVejdQfdWejdSfgdXdYdZd[ e
D  efd\ejd]fd^ejd_fd`ejfdaejfdbejfdcejfddejfdeejfdfejfdgej fdhe ej fdie ej fdjejdkfdlejdmfdnejdofdpejdqfdrej!fdse edtfdXe efdXe efgdse efdXe edSfdXe edSfdMe"fdue"fge#dQge$dvdwejdxfdyejdzfe$d{e$d|due"fge$dvd}efdNejdOfd~ejdfdejdfd3edfdejdfe$d{e$d|due"fg
eejeejddYe edSfge$dve$ddXe ej%fe#dSge$dvdrej!fdedfdXe ej&dSfdXe ej&dSfe#dSge$dvdrej!fdedfdeef e'ej(eedSfdeef e'ej(eedSfdXe ej(dSfdXe ej(dSfe#dSge$dve$ddrej!fdedfde edfdXe ej)fdXe ej)fdue"dSfge$dvdejdfe$de$d|due"dSfge$dve$ddrej!fdedfde'eeejdSfde edfdXe ej)fdXe ej)fdue"dSfg	e$dvdejdfdejdfdejfde e'eeej*fde e'eeej*fe$de$d|due"fg	e$dvde e'ejeej*fde e'ejeej*fdejfdeef ej*fe#dSge$dvdXe ej*dSfdXe ej*dSfdue"dSfgd}efdNejdOfdrej!feefd?efdedSfeefgdejfdNejdfdejdSfdejfgdZ+dS )r   zB
    For the Standard ML language.

    .. versionadded:: 1.5
    zStandard MLZsmlz*.smlz*.sigz*.funztext/x-standardmlzapplication/x-standardmlZ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 rG   6/tmp/pip-unpacked-wheel-7eq1ciah/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tokenrG   rG   rH   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 NrJ   )rL   rM   r   symbolicid_reservedr   rO   rP   rG   rG   rH   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 rU   )rL   rM   r
   ReservedrV   r   r   rO   )rQ   rR   strrS   rG   rG   rH   id_callback\   s    


zSMLLexer.id_callback\s+\(\*commentz\(|\[|\{mainz\)|\]|\}rE   z\b(let|if|local)\b(?!\'))r^   r^   z\b(struct|sig|while)\b(?!\')z\b(do|else|end|in|then)\b(?!\')(%s)|c                 c   s   | ]}t |V  qd S )N)reescape).0zrG   rG   rH   	<genexpr>|   s     zSMLLexer.<genexpr>z#"charrD   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*(%s)z#\s+(%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(%s)(\.)dottedz\S+
whitespacez\b(val|and)\b(?!\')vnamez\b(fun)\b(?!\'))rE   main-funfname
delimiterscorez\sz\b(fun|and)\b(?!\')rp   z\b(val)\b(?!\'))rE   r^   rn   z\b(case|handle)\b(?!\'))rE   r^   z(?=\b(%s)\b(?!\'))breakout\(tyvarseqz(%s)(\s*)(=(?!%s))z=(?!%s))rE   typbindz\b(and)\b(?!\'))rE   rk   z(=)(\s*)(datatype))rE   datbinddatcon)rE   rh   z\b(withtype)\b(?!\')z\b(of)\b(?!\')z(\|)(\s*)(%s)z(\|)(\s+)(%s)z(and\b)(\s+)(%s)z(and\b)(\s*)(%s)z	(%s)|(%s)\)z[^(*)]#push\*\)[(*)])rm   rq   rr   rl   rootr^   ro   rf   rg   rs   rj   rp   rn   rk   rv   rh   rw   ri   rx   ru   r]   N),__name__
__module____qualname____doc__namealiases	filenames	mimetypesrM   rV   Znonid_reservedZalphanumid_reZsymbolicid_rerI   rT   rW   rZ   r   r   	Multiliner   r
   rX   joinr   CharDoubler   HexIntegerFloatr   ZLabelZ	Decoratorr   r   r   rN   ZFunctionr   VariableTypeClasstokensrG   rG   rG   rH   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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eef 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d.ed/fd0ed1fd2efgd3ej%fe'd4d5ej%fd*ej%d1fgdefd6e(fd7ejfd8ejd1fd9ed1fe)d1gd:Z*dS );r   z<
    For the OCaml language.

    .. versionadded:: 0.7
    ZOCamlzhttps://ocaml.org/Zocamlz*.mlz*.mliz*.mllz*.mlyztext/x-ocaml)0r   r   assertbeginclass
constraintr   donedowntor   r   r   externalfalseforr   functionr.   r    r!   r   inheritinitializerlazyr"   rR   methodmodulemutablenewobjectr$   r&   privater'   r(   r/   r1   r)   totruetryr*   r+   virtualwhenr-   r,   ))!=r8   &&&rt   ry   \*\+r@   --\.r7   \.\.\.r3   :::=r9   rA   ;;<<-r5   >>]>\}\?\?\?\[\[<\[>\[\|r=   rB   `\{\{<r4   \|]\}~[!$%&*+\./:<=>?@^|~-])asrlandlorlsllxormodor[!?~][=<>@^|&+\*/$%-]unitintfloatboolrg   rf   listarray\\[\\"\'ntbr]rC   \\x[0-9a-fA-F]{2}r[   false|true|\(\)|\[\]\b([A-Z][\w\']*)(?=\s*\.)rl   \b([A-Z][\w\']*)\(\*(?![)])r]   \b(%s)\br`   r_   N
(%s|%s)?%s[^\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}))''.''rD   rg   [~?][a-z][\w\']*:[^(*)]+r\   rz   r{   rE   r|   [^\\"]+escape-sequence\\\nr   [A-Z][\w\']*(?=\s*\.)[A-Z][\w\']*[a-z_][\w\']*r   r}   r]   rg   rl   )+r~   r   r   r   r   urlr   r   r   keywordskeyopts	operatorsword_operatorsprefix_syms
infix_syms
primitivesr   rF   r   r   BuiltinPseudorN   r   r   r   r
   r	   Wordr   r   r   r   OctBinr   r   r   r   r   r   r   r   rG   rG   rG   rH   r   c  sv   	




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
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
 efd,e efd-ed.fd/e	 ej"fd0e	 ejfd1ejfe	efgedd2ej"fe#d3gedd4ej"d5fd6ej"d7fe	d4 ej"d5fe	ej"d$fd/e	 ej"fe#d$gede#d8gedd9ej"d:fe#d$gedd2ej"d;fd<ej"d=fe#d$gedd>ej"d?fd2ej"d;fe#d$gedd@ej"fdAej"fd4ej"d"fdBej"d$fgeddCej"fdAej"fd!ej"d"fd#ej"d$fgdDefded"fdEed$fdAefgdFejfdejd$fd!edGfedHgdIejfdJejd$fd!edGfedHgdKejdLfdMejdNfgdOejd$fgdefdPejdQfdRejd$fdMejdNfgd/ejdSfdejdTfd0e	 ejd$fd1ejdUfdVejd$fd!edUfgdWedXfdYejdZfd[ejd&fd!edGfd\ejfgd]ed$fd^efgd_Z$d`S )ar   z@
    Lexer for the Opa language.

    .. versionadded:: 1.5
    ZOpaZopaz*.opaz
text/x-opa)r   r   r   r   clientcssZdatabasedbr   r   r   r   forallr   r    importrR   r   r   packageparserr(   serverr)   r*   r+   r,   Z
xml_parserz(([a-zA-Z_]\w*)|(`[^`]*`))z[.=\-<>,@~%/+?*&^!]z[()\[\],;|]z\\[\\"\'ntr}]rC   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}rD   rg   z9'(?:(\\[\\\"'ntbr ])|(\\[0-9]{3})|(\\x[0-9a-fA-F]{2})|.)'r   rz   r   rE   z<(?=[a-zA-Z>])html-open-tagz[@?!]?(/\w+)+(\[_\])?z<-(?!r;   z\b([A-Z]\w*)(?=\.)z=(?!z(%s)+r3   r*   r   r8   z#(?=\{)r7   )rE   
type-lhs-1type-with-slashrt   )rE   
type-tuplez~?\{)rE   type-record)rE   slash-type-1type-1/)rE   r  )rE   r*   z(?=,))rE   
type-arrowz,(?=[^:]*?->)r  z[^()/*]+z[/*]ry   z[^{}/*]+[^/*]+z\*/z[^\\"{]+r}   r   z	[^\\\'{]+z\'z[\w\-:]+)rE   	html-attrr   )rE   html-contentz	[\w\-:]*>z	[\w\-:]+=html-attr-valuez/>)rE   single-string)rE   rg   )rE   r}   z[^"\'{`=<>]+z<!--html-commentz</)rE   html-end-tagr   z[^<{]+z-->z[^\-]+|-)r   r  r	  r}   r*   r  r  r  r  r  r  r  r  rg   r  r  r  r  r  r  r  N)%r~   r   r   r   r   r   r   r   r   Zident_reZop_reZpunc_rer   rF   r   r   r   r   r
   r   r   r   r   r   r   r   r   r   r   r   r	   Singler   rN   r   r   r   rG   rG   rG   rH   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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eef 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d.ejd/fd0ejd1fd2ejfgd3ej'fe)d4d5ej'fd*ej'd1fgdefd6e*fd7ejfd8ejd1fd9ed1fe+d1gd:Z,dS );r   z?
    For the ReasonML language.

    .. versionadded:: 2.6
    ZReasonMLzhttps://reasonml.github.io/Zreasonmlreasonz*.rez*.reiztext/x-reasonml)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   Zpubr   r   Znonrecr   r$   r&   prir(   r/   r1   r)   r   r   r   r*   r+   r   r   r-   r,   )+r   r8   r   r   rt   ry   r   r   r@   r   r   r6   r   r   z\.\.\.r3   r   r   r9   rA   r   r   r   r5   r   r   r   r   r   r   r   r   r   r=   rB   r   r   r   r4   z\|\|r   r   r   r   )	r   r   r   r   r   Zlsrr   r   r   r   r   r   r   rC   r   r[   r   r   rl   r   z//.*?\nz	\/\*(?!/)r]   r   r`   r_   Nr   r   r   r   r   r   r   r   r   r   r   rD   rg   r   r  z\/\*rz   z\*\/rE   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   rF   r   r   r   r   rN   r   r   r  r   r   r
   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rG   rG   rG   rH   r     sx   







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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eef 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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   z8
    For the F* language.
    .. versionadded:: 2.7
    ZFStarzhttps://www.fstar-lang.org/Zfstarz*.fstz*.fstiztext/x-fstar)5Zabstract
attributesZnoeqZunopteqZandbeginZbyr   Zeffectr   r   Zensuresr   existsr   r  r   r   r    r!   r   inlineZinline_for_extractionZirreducibleZlogicrR   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\|\)r8   zu#r   rt   ry   z\(\)r@   z~>r7   r   z<--z<==>z==>r   r   z\?\.z\.\[z\.\(z\.\(\|z\.\[\|z
\{:patternr3   r   r   rA   r   r5   z%\[z!\{r   z\[@r   z\|>z\]z\|\]r   r4   r   z\$r   r   r   r   r   rC   r   r[   zfalse|true|False|True|\(\)|\[\]r   rl   r   r   r]   z\/\/.+$r   r`   r_   Nr   r   r   r   r   r   r   r   r   r   r   z\`([\w\'.]+)\`z\`rD   rg   r   r   r\   rz   r{   rE   r|   r   r   r   r   r   r   r   r   ).r~   r   r   r   r   r   r   r   r   r   Zdecl_keywordsZassume_keywordsr   r   r   r   r   r   rF   r   r   r   r   rN   r   r   r   r
   	ExceptionZDeclarationr	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rG   rG   rG   rH   r   `  s   


!

)r   ra   Zpygments.lexerr   r   r   r   r   Zpygments.tokenr   r   r	   r
   r   r   r   r   r   __all__r   r   r   r   r   rG   rG   rG   rH   <module>   s   
,  Q]  E]