o
    ;h>                     @   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 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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g dZddgZdZdZ	h d	Z
h d
Zh dZdZdZdd Zdd Zdd Zdd Zi ddefdejdfgddedfdedfdejd fd!ejdfd"ejdfgd#d$d%d&d' eD efd(ejd)fd*ejd+fd,ejfd-ejfd.ej fd/ej!fd0ej!fd1ej!fd2ej fd3e"j#fd4e d5e"j#fd6e d5e"j#fd7ejd8fd9ejd:fd;ejd<fd=ejd>fd?e"j$fd@e dAedBfd@e d5efd@e d5efgdBd@e dAefd@e d5edfd@e d5edfde%fdCe%fgdDe&dgde'ddEejdFfdGejdHfe'de'd#dCe%fgdIe'ddJefdejdfdKejdLfdMejdNfdOedLfdPejdQfe'de'd#dCe%fg
d)eejd+eejdRdSd%e
edfgd<e'de'dRd@e d5e"j(fe&dgdLe'dd?e"j$fdTedUfd@e d5e"j)dfd@e d5e"j)dfe&dgdFe'dd?e"j$fdTedUfd@e dVe dWe*e"j+eedfd@e dVe dWe*e"j+eedfd@e d5e"j+dfd@e d5e"j+dfe&dgd>e'de'dRd?e"j$fdTedUfdXe d5edYfd@e d5ej,fd@e d5ej,fdCe%dfgdZe'dd[ejd\fe'dRe'd#dCe%dfgd8e'de'dRd?e"j$fdTedUfd]e*eeejdfdXe d5ed^fd@e d5ej,fd@e d5ej,fdCe%dfg	d_e'dd[ejd`fdaejd\fdbejfdce d5e*eee"j-fdde d5e*eee"j-fe'dRe'd#dCe%fg	e'ddee d5e*ejee"j-fdfe d5e*ejee"j-fdbejfd@e dge d5e"j-fe&dge'dd@e d5e"j-dfd@e d5e"j-dfdCe%dfgdJefdejdfd?e"j$fee"fdhefdiedfee"fgdjejfdejdkfdlejdfdmejfgdnZ.doS )pr   z'
    For the Standard ML language.
    zStandard MLsml)z*.smlz*.sigz*.funztext/x-standardmlzapplication/x-standardmlz)https://en.wikipedia.org/wiki/Standard_ML1.5>)   funhandleifopZandalsorecendtypeZinfixrwhilewithfunctorsigdoZ	structureasZinfixand	signatureZwithtypecasedatatypeletwhere	exceptionvalorelseZeqtypeZnonfixraisestructelser   inZsharinglocalthenopenZabstypeoffn>   #::>==>\|->>
   ()_][;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   EscapeInterpol)Zwhatkind rK   E/var/www/html/venv/lib/python3.10/site-packages/pygments/lexers/ml.pystringy<   s   zSMLLexer.stringyc                 c   sR    | d| jv 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tokenrK   rK   rL   long_id_callbackK   s   zSMLLexer.long_id_callbackc                 c   sN    | d| jv rt}n| d| jv rt}nt}|d|| dfV  d S NrN   )rP   rQ   r   symbolicid_reservedr   rS   rT   rK   rK   rL   end_id_callbackS   s   zSMLLexer.end_id_callbackc                 c   sH    | d}|| jv rtj}n
|| jv rt}nt}|d||fV  d S rY   )rP   rQ   r
   ReservedrZ   r   r   rS   )rU   rV   strrW   rK   rK   rL   id_callback\   s   


zSMLLexer.id_callback
whitespace\s+\(\*comment
delimitersz\(|\[|\{mainz\)|\]|\}rH   z\b(let|if|local)\b(?!\'))rd   rd   z\b(struct|sig|while)\b(?!\')z\b(do|else|end|in|then)\b(?!\')core({})|c                 c   s    | ]}t |V  qd S )N)reescape).0zrK   rK   rL   	<genexpr>|   s    zSMLLexer.<genexpr>z#"charrG   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*(r>   z#\s+(z\b(datatype|abstype)\b(?!\')dnamez\b(exception)\b(?!\')enamez4\b(functor|include|open|signature|structure)\b(?!\')Zsnamez\b(type|eqtype)\b(?!\')tnamez	\'[\w\']*r=   z)(\.)dottedz\S+rootz\b(val|and)\b(?!\')vnamez\b(fun)\b(?!\'))rH   main-funfnameru   z\sz\b(fun|and)\b(?!\')rv   z\b(val)\b(?!\'))rH   rd   rt   r;   z\b(case|handle)\b(?!\'))rH   rd   Zbreakoutz(?=\b({})\b(?!\'))\(tyvarseqz)(\s*)(=(?!z))=(?!)rH   typbindrz   z\b(and)\b(?!\'))rH   rq   z(=)(\s*)(datatype))rH   datbinddatconr{   )rH   ro   z\b(withtype)\b(?!\')z\b(of)\b(?!\')z
(\|)(\s*)(z
(\|)(\s+)(z(and\b)(\s+)(z(and\b)(\s*)(z)|(rE   \)z[^(*)]#push\*\)[(*)])rp   r|   rx   rb   N)/__name__
__module____qualname____doc__namealiases	filenames	mimetypesurlversion_addedrQ   rZ   Znonid_reservedZalphanumid_reZsymbolicid_rerM   rX   r[   r^   r   r   	Multiliner   r
   r\   formatjoinr   CharDoubler   HexIntegerFloatr   Label	Decoratorr   r   r   rR   Functionr   VariableTypeClasstokensrK   rK   rK   rL   r      s   	









5?E
S


i
jlqz     '
  2  C



  V

	


 r   c                   @   s  e Zd ZdZdZdZdgZg d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d-ed.fd/ed0fd1efgd2ej'fe)d3d4ej'fd)ej'd0fgdefd5e*fd6ejfd7ejd0fd8ed0fe+d0gd9Z,dS ):r   z!
    For the OCaml language.
    OCamlzhttps://ocaml.org/ocaml)z*.mlz*.mliz*.mllz*.mlyztext/x-ocamlz0.7)0r$   r#   assertbeginclass
constraintr"   donedowntor/   r   r*   externalfalseforr   functionr    r   r0   r   inheritinitializerlazyr(   rV   methodmodulemutablenewobjectr4   r3   privater-   r   r!   r.   r2   totruetryr   r+   virtualwhenr   r   ))!=r6   &&&rw   r}   \*\+rE   --\.r<   \.\.\.r7   :::=r8   rB   ;;<<-r9   >>]>\}\?\?\?\[\[<\[>\[\|r@   r?   `\{\{<r;   \|]\}~[!$%&*+\./:<=>?@^|~-])asrlandlorlsllxormodor[!?~][=<>@^|&+\*/$%-]unitintfloatboolrn   rm   listarray\\[\\"\'ntbr]rF   \\x[0-9a-fA-F]{2}r`   false|true|\(\)|\[\]\b([A-Z][\w\']*)(?=\s*\.)rr   \b([A-Z][\w\']*)\(\*(?![)])rb   \b({})\brg   rf   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}))''.''rG   rn   [~?][a-z][\w\']*:[^(*)]+ra   r~   r   rH   r   [^\\"]+escape-sequence\\\nr   [A-Z][\w\']*(?=\s*\.)[A-Z][\w\']*[a-z_][\w\']*r   rs   rb   rn   rr   )-r   r   r   r   r   r   r   r   r   r   keywordskeyopts	operatorsword_operatorsprefix_syms
infix_syms
primitivesr   rI   r   r   BuiltinPseudorR   r   r   r   r   r
   r	   Wordr   r   r   r   OctBinr   r   r   r   r   r   r   r   rK   rK   rK   rL   r   c  sz    	





r   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i ddejfdejfdejfgddedfdefgdeddefgd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d0e d1e fd0e d1e fd2e d3fd4e ej$fd5e ej!fd6ej!feefgd3edd7ej$fe%d8gd9edd:ej$d;fd<ej$d=fed: ej$d;feej$d(fd4e ej$fe%d(gd>ede%d?gd@eddAej$dBfe%d(gdCedd7ej$dDfdEej$dFfe%d(gdGeddHej$d>fd7ej$dDfe%d(gdIeddJej$fdKej$fd:ej$d&fdLej$d(fgdMeddNej$fdKej$fd%ej$d&fd'ej$d(fgddOefded&fdPed(fdKefgd#dQejfd"ejd(fd%e dfedgdRdSejfdTejd(fd%e dfedgd*dUej!dVfdWej!dXfgdYdZej!d(fgdefd[ej!d\fd]ej!d(fdWej!dXfgd4ej!d^fd"ej!d_fd5e ej!d(fd6ej!d`fdaej!d(fd%e d`fgdbedcfddej!defdfej!d*fd%e dfdgej!fgdhed(fdiefgdjZ&dkS )lr   z%
    Lexer for the Opa language.
    Opaopaz*.opaz
text/x-opazhttp://opalang.orgr   )r$   r#   r   r&   clientcssZdatabasedbr"   r/   r   r   forallr   r   importrV   r   r   packageparserr   serverr2   r   r+   r   Z
xml_parserz(([a-zA-Z_]\w*)|(`[^`]*`))z[.=\-<>,@~%/+?*&^!]z[()\[\],;|]r   z\\[\\"\'ntr}]rF   r   commentsz/\*znested-commentz//.*?$zcomments-and-spacesr`   rs   z\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}rG   rn   z9'(?:(\\[\\\"'ntbr ])|(\\[0-9]{3})|(\\x[0-9a-fA-F]{2})|.)'r   r~   r   rH   z<(?=[a-zA-Z>])zhtml-open-tagz[@?!]?(/\w+)+(\[_\])?z<-(?!r>   z\b([A-Z]\w*)(?=\.)ry   r=   z)+r7   r   r   r6   z#(?=\{)r<   )rH   
type-lhs-1type-with-slashtype-1rw   )rH   
type-tuplez~?\{)rH   type-recordr  )rH   slash-type-1r  r  /)rH   r  r  )rH   r   z(?=,))rH   
type-arrowr  z,(?=[^:]*?->)r  z[^()/*]+z[/*]r}   r  z[^{}/*]+[^/*]+z\*/z[^\\"{]+single-stringz	[^\\\'{]+z\'z[\w\-:]+)rH   	html-attrr   )rH   html-contenthtml-end-tagz	[\w\-:]*>z	[\w\-:]+=html-attr-valuez/>)rH   r   )rH   rn   )rH   rs   z[^"\'{`=<>]+z<!--html-commentz</)rH   r#  r   z[^<{]+z-->z[^\-]+|-)r!  r$  r"  r%  N)'r   r   r   r   r   r   r   r   r   r   r   Zident_reZop_reZpunc_rer   rI   r   r   r   r   r
   r   r  r  r   r   r   r  r  r   r   r   r	   Singler   rR   r   r   r   rK   rK   rK   rL   r     s   	

z 


    
  %

  +

  ;

  B

  ]  f
  l
  y

   
    	








	  r   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.
    ReasonMLzhttps://reasonml.github.io/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   r0   r   r   r   r   r(   switchr   Zpubr   r   Znonrecr   r4   r3   prir   r!   r.   r2   r   r   r   r   r+   r   r   r   r   )+r   r6   r   r   rw   r}   r   r   rE   r   r   r:   r   r   z\.\.\.r7   r   r   r8   rB   r   r   r   r9   r   r   r   r   r   r   r   r   r   r@   r?   r   r   r   r;   z\|\|r   r   r   r   )	r$   r   r   r   r   Zlsrr   r   r   r   r   r   r   rF   r   r`   r   r   rr   r   z//.*?\nz	\/\*(?!/)rb   r   rg   rf   Nr   r=   r   r   r   r   r   r   r   r   r   r   rG   rn   r   r  z\/\*r~   z\*\/rH   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   rI   r   r   r  r  rR   r   r   r&  r   r   r   r
   r	   r  r   r   r   r   r  r  r   r   r   r   r   r   r   r   rK   rK   rK   rL   r     s|    








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	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.
    FStarzhttps://www.fstar-lang.org/fstarz*.fstz*.fstiztext/x-fstarz2.7)5abstract
attributesZnoeqZunopteqZandbeginZbyr   Zeffectr/   r   Zensuresr*   existsr   r  r   r   r   r0   r   inlineZinline_for_extractionZirreducibleZlogicrV   r   r   r   Z
new_effectZ	noextractr4   r3   opaquer   Zrange_ofZ	reifiableZreifyZreflectablerequiresZset_range_ofZ
sub_effectZsynthr2   totalr   r   r   ZunfoldZ
unfoldabler+   r   r   not)r(   r   )ZassumeZadmitr   calc)/r   r   z/\\z\\/z<:z<@z\(\|z\|\)r6   zu#r   rw   r}   z\(\)rE   z~>r<   r   z<--z<==>z==>r   r   z\?\.z\.\[z\.\(z\.\(\|z\.\[\|z
\{:patternr7   r   r   rB   r   r9   z%\[z!\{r   z\[@r   z\|>z\]z\|\]r   r;   r   z\$r   r   r   r   r   rF   r   r`   zfalse|true|False|True|\(\)|\[\]r   rr   r   r   rb   z\/\/.+$r   rg   rf   Nr   r=   r   r   r   r   r   r   r   r   r   r   z\`([\w\'.]+)\`z\`rG   rn   r   r   ra   r~   r   rH   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   rI   r   r   r  r  rR   r   r   r   r   r
   	ExceptionDeclarationr	   r   r   r   r   r  r  r   r   r  r   r   r   r   r   r   rK   rK   rK   rL   r   ^  s    


!


r   )r   rh   Zpygments.lexerr   r   r   r   r   Zpygments.tokenr   r   r	   r
   r   r   r   r   r   __all__r   r   r   r   r   rK   rK   rK   rL   <module>   s    
,  Q\  E\