
    |e                         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e      Z G d d	e      Z G d
 de      Z G d de      Z G d de      Zy)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                      e Zd ZdZdZdgZg dZddgZh dZh dZ	h d	Z
d
ZdZd Zd Zd Z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j/                  d  e
D              z  efd!ej2                  d"fd#ej4                  d$fd%ej8                  fd&ej8                  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z  ej@                  fd.ez  ej@                  fd/ej,                  d0fd1ej,                  d2fd3ej,                  d4fd5ej,                  d6fd7ejB                  fd8ez  ed9fdez  efdez  efgd9d8ez  efdez  edfdez  edfde"fd:e"fgd; e#d      gd e$d      d<ej,                  d=fd>ej,                  d?f e$d       e$d      d:e"fgd@ e$d      dAefdej&                  dfdBej,                  dCfdDej,                  dEfdFedCfdGej,                  dHf e$d       e$d      d:e"fg
d" eej2                        d$ eej4                        dIdJdj/                  e      z  edfgd4 e$d       e$dI      dez  ejJ                  f e#d      gdC e$d      d7ejB                  fdKedLfdez  ejL                  dfdez  ejL                  df e#d      gd= e$d      d7ejB                  fdKedLfdMedNedO e'ejP                  ee      dfdMedNedO e'ejP                  ee      dfdez  ejP                  dfdez  ejP                  df e#d      gd6 e$d       e$dI      d7ejB                  fdKedLfdPez  edQfdez  ejR                  fdez  ejR                  fd:e"dfgdR e$d      dSej,                  dTf e$dI       e$d      d:e"dfgd0 e$d       e$dI      d7ejB                  fdKedLfdU e'eeej,                        dfdPez  edVfdez  ejR                  fdez  ejR                  fd:e"dfg	dW e$d      dSej,                  dXfdYej,                  dTfdZej,                  fd[ez   e'eeejT                        fd\ez   e'eeejT                        f e$dI       e$d      d:e"fg	 e$d      d]ez   e'ej,                  eejT                        fd^ez   e'ej,                  eejT                        fdZej,                  fdMed_ed`ejT                  f e#d      g e$d      dez  ejT                  dfdez  ejT                  dfd:e"dfgdAefdej&                  dfd7ejB                  feefdaefdbedfeefgdcej&                  fdej&                  ddfdeej&                  dfdfej&                  fgdgZ+yh)ir   zB
    For the Standard ML language.

    .. versionadded:: 1.5
    zStandard MLsml)z*.smlz*.sigz*.funztext/x-standardmlzapplication/x-standardml>)   asdofnifinofopandendfunletrecsigvalcaseelseopenthentypewithinfixlocalraisewherewhileeqtypehandleinfixrnonfixorelsestructabstypeandalsofunctorr   sharingdatatypewithtype	exception	signature	structure>   #:=->:>=>\|>
   ..._(),;[]{}z[a-zA-Z][\w']*z[!%&$#+\-/:<=>?@\\~`^|*]+c           	          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)whatkinds    4/usr/lib/python3/dist-packages/pygments/lexers/ml.pystringyzSMLLexer.stringy<   s\    !.  /FMM*!6==1)8V$
 	
    c              #     K   |j                  d      | j                  v rt        }nt        j                  }|j                  d      ||j                  d      f |j                  d      t        |j                  d      f y w)N      )groupalphanumid_reservedr   r   	Namespacestartr   selfmatchtokens      rX   long_id_callbackzSMLLexer.long_id_callbackK   sd     ;;q>T555ENNEkk!neU[[^33kk!nk5;;q>99s   BBc              #      K   |j                  d      | j                  v rt        }n*|j                  d      | j                  v rt        }nt        }|j                  d      ||j                  d      f y wNr\   )r^   r_   r   symbolicid_reservedr   ra   rb   s      rX   end_id_callbackzSMLLexer.end_id_callbackS   s^     ;;q>T555E[[^t777EEkk!neU[[^33s   A5A7c              #      K   |j                  d      }|| j                  v rt        j                  }n|| j                  v rt
        }nt        }|j                  d      ||f y wrh   )r^   r_   r   Reservedri   r   r   ra   )rc   rd   strre   s       rX   id_callbackzSMLLexer.id_callback\   sY     kk!n$***$$ED,,,EEkk!neS((s   A#A%
whitespace\s+\(\*comment
delimitersz\(|\[|\{mainz\)|\]|\}rT   z\b(let|if|local)\b(?!\'))rt   rt   z\b(struct|sig|while)\b(?!\')z\b(do|else|end|in|then)\b(?!\')core(%s)|c              #   F   K   | ]  }t        j                  |        y w)N)reescape).0zs     rX   	<genexpr>zSMLLexer.<genexpr>|   s     E		!Es   !z#"charrS   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+rootz\b(val|and)\b(?!\')vnamez\b(fun)\b(?!\'))rT   main-funfnamer   z\sz\b(fun|and)\b(?!\')r   z\b(val)\b(?!\'))rT   rt   r   rF   z\b(case|handle)\b(?!\'))rT   rt   breakoutz(?=\b(%s)\b(?!\'))\(tyvarseqrI   z)(\s*)(=(?!z))z=(?!%s))rT   typbindr   z\b(and)\b(?!\'))rT   r   z(=)(\s*)(datatype))rT   datbinddatconr   )rT   r   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)|(rJ   rK   \)z[^(*)]#push\*\)[(*)])r   r   r   rr   N),__name__
__module____qualname____doc__namealiases	filenames	mimetypesr_   ri   nonid_reservedalphanumid_resymbolicid_rerY   rf   rj   rn   r   r	   	Multiliner   r   rl   joinr   CharDoubler   HexIntegerFloatr   Label	Decoratorr   r   r   r`   Functionr   VariableTypeClasstokens rZ   rX   r   r      sA    DgG+I$&@AI	 JN%M0M
:4)zTNg''3
z 	 +v.+v.('*:*:<LM,g.>.>G/1A1A6J
z( 	sxxEnEEE FKK(6==(+ &**-,v~~&#V\\2FLL)-v~~&  ,=($**5=($**5,g.>.>H%w'7'7ADw(')9)97C 4>>*=(*:HE}$k2}$k2? 
)zj 	=(*:;}$ov>}$ov>UOUO
kz~ 	FO
zJ 	L! $W%5%5w?!1!1*, L!FOUO
Kzf 	L!DMg''3 $W%5%5w?!1!1&( K)')9)9 L!FOUO%
gzR 	$SzT 	'&--(UzX 	"SXX.A%BBD&Q
Yzb 	L!J}$dnn5FO
czt 	L!4>>*K,}$dmmV<}$dmmV< FO

uzN 	L!4>>*K,&3]CdmmT;7A&3]CdmmT;7A}$dmmV<}$dmmV< FO
Ozp 	L!J4>>*K,-'6IJ}$gll3}$gll3UF#
qzL 	L!!1!13DEJFOUF#
Mzb 	L!J4>>*K,"k4)9)9:FD-'*, }$gll3}$gll3UF#
czD 	L!!1!13DE$g&6&68IJ 0 01-k446-k446 JFOUO
Ezj L! =0g&&djj9; =0g&&djj9; 0 01*M:DJJGFO
 L!}$djj&9}$djj&9UF#	
 DMg''34>>*D!;K(D!	
 ))*g''1g''0w(()	
izFrZ   r   c                      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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j3                  e	      z  efddj3                  e
ddd         z  efdededeefddj3                  e      z  ej8                  fddj3                  e      z  ej:                  fdefd ej>                  fd!ej@                  fd"ejB                  fd#ejD                  fd$ejF                  fd%ejH                  fd&ejH                  fd'efd(ejJ                  d)fd*ejL                  fgd+efd,ed-fd.ed/fd0efgd1ejJ                  f e'd2      d3ejJ                  fd(ejJ                  d/fgdefd4e(fd5ej,                  fd6ej.                  d/fd7ed/f e)d/      gd8Z*y)9r   z<
    For the OCaml language.

    .. versionadded:: 0.7
    OCamlzhttps://ocaml.org/ocaml)z*.mlz*.mliz*.mllz*.mlyztext/x-ocaml)0r   r   assertbeginclass
constraintr   donedowntor'   r    r=   externalfalseforr!   functionr9   r   r   r   inheritinitializerlazyr"   rd   methodmodulemutablenewobjectr   r(   privater.   r#   r$   r6   r)   totruetryr*   r%   virtualwhenr0   r+   ))!=r@   &&&r   r   \*\+rK   --\.rC   \.\.\.rA   :::=rD   rL   ;;<<-rB   >>]>\}\?\?\?\[\[<\[>\[\|rN   rH   `\{\{<rF   \|]\}~[!$%&*+\./:<=>?@^|~-])asrlandlorlsllxormodor[!?~][=<>@^|&+\*/$%-]unitintfloatboolr   r~   listarray\\[\\"\'ntbr]rR   \\x[0-9a-fA-F]{2}rp   false|true|\(\)|\[\]\b([A-Z][\w\']*)(?=\s*\.)r   \b([A-Z][\w\']*)\(\*(?![)])rr   \b(%s)\brw   rv   NrI   )?[^\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}))''.''rS   r   [~?][a-z][\w\']*:[^(*)]+rq   r   r   rT   r   [^\\"]+escape-sequence\\\nr   [A-Z][\w\']*(?=\s*\.)[A-Z][\w\']*[a-z_][\w\']*r  r   rr   r   r   )+r   r   r   r   r   urlr   r   r   keywordskeyopts	operatorsword_operatorsprefix_syms
infix_syms
primitivesr   rU   r   r   BuiltinPseudor`   r   r	   r   r   r
   Wordr   r   r   r   OctBinr   r   r   r   r   r   r   r   r   rZ   rX   r   r   c  s`    D
CiG3I IHG )IGNK$JTJ v}}-FMM*!6==1
 TN$dll&9&9:)4>>8D $**-Wi0388H--w7sxx"..9(+yA8L388N33X]]C388J//>t$8&,,G+VZZ8!6::.,&..)G[[V[[!7O6==(+!4==17
< !gw'gv&w	
 '%&fmm$6==&)	
 TNK %t~~6djj&1tV,FO
_7FrZ   r   c                      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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      efde	z   dz   ej(                  j*                  fdej.                  fdej.                  fdej.                  fdej0                  fdej2                  fdej4                  fdej6                  fdej6                  fd ej8                  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
z   d+z   ej@                  fd,ejB                  fd-e
z   d+z   efd.e
z  efd.ez  efd/ed0fd1e	z   ejD                  fd2e	z   ej>                  fd3ej>                  fe	efgd0 ed      d4ejD                  f e#d5      gd6 ed      d7ejD                  d8fd9ejD                  d:fe	d7z   ejD                  d8fe	ejD                  d&fd1e	z   ejD                  f e#d&      gd; ed       e#d<      gd= ed      d>ejD                  d?f e#d&      gd@ ed      d4ejD                  dAfdBejD                  dCf e#d&      gdD ed      dEejD                  d;fd4ejD                  dAf e#d&      gdF ed      dGejD                  fdHejD                  fd7ejD                  d$fdIejD                  d&fgdJ ed      dKejD                  fdHejD                  fd#ejD                  d$fd%ejD                  d&fgddLefded$fdMed&fdHefgd!dNej8                  fd ej8                  d&fd#edf ed
      gdOdPej8                  fdQej8                  d&fd#edf ed
      gd(dRej>                  dSfdTej>                  dUfgdVdWej>                  d&fgdefdXej>                  dYfdZej>                  d&fdTej>                  dUfgd1ej>                  d[fd ej>                  d\fd2e	z   ej>                  d&fd3ej>                  d]fd^ej>                  d&fd#ed]fgd_ed`fdaej>                  dbfdcej>                  d(fd#edfddej>                  fgdeed&fdfefgdgZ$yh)ir   z@
    Lexer for the Opa language.

    .. versionadded:: 1.5
    Opaopaz*.opaz
text/x-opa)r   r   r   r&   clientcssdatabasedbr   r'   r    r   forallr   r   importrd   r   r   packageparserr#   serverr)   r*   r%   r+   
xml_parserz(([a-zA-Z_]\w*)|(`[^`]*`))z[.=\-<>,@~%/+?*&^!]z[()\[\],;|]r  z\\[\\"\'ntr}]rR   r   commentsz/\*znested-commentz//.*?$zcomments-and-spacesrp   r   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}rS   r   z9'(?:(\\[\\\"'ntbr ])|(\\[0-9]{3})|(\\x[0-9a-fA-F]{2})|.)'r   r   r   rT   z<(?=[a-zA-Z>])zhtml-open-tagz[@?!]?(/\w+)+(\[_\])?z<-(?!rJ   z\b([A-Z]\w*)(?=\.)z=(?!z(%s)+rA   r*   r  r@   z#(?=\{)rC   )rT   
type-lhs-1type-with-slashtype-1r   )rT   
type-tuplez~?\{)rT   type-recordr0  )rT   slash-type-1r1  r4  /)rT   r1  r/  )rT   r*   z(?=,))rT   
type-arrowr6  z,(?=[^:]*?->)r2  z[^()/*]+z[/*]r   r3  z[^{}/*]+[^/*]+z\*/z[^\\"{]+single-stringz	[^\\\'{]+z\'z[\w\-:]+)rT   	html-attrr   )rT   html-contenthtml-end-tagz	[\w\-:]*>z	[\w\-:]+=html-attr-valuez/>)rT   r8  )rT   r   )rT   r   z[^"\'{`=<>]+z<!--html-commentz</)rT   r;  r   z[^<{]+z-->z[^\-]+|-)r9  r<  r:  r=  N)%r   r   r   r   r   r   r   r   r  ident_reop_repunc_rer   rU   r	   r   r   r   r   r   r  r  r   r   r   r  r  r   r   r   r
   Singler   r`   r   r   r   r   rZ   rX   r   r     sj    DgG	II
H -H"EGcv}}-FMM*!6==1
c 	W./ 
c 	JTN 
c$ 	)*8E%8'B H_u$dll&9&9: (6(&,,7"FLL1 &**-VZZ(FJJ'V^^$ &..1 6==(+ J[[ Hg&Hf% ? &t}}5 e^D $--0 #DNN3 U]4)x(* 8V$ \7<<( (]FMM*' tcU
%ct 	)*GLL!=>
ucF 	)*GLL"89gll$;<e^W\\+ABw||V,\7<<(
 FO
Gch 	)*67
icp 	)*',, 23FO	
qcH 	)*GLL"23w||%;<FO	
IcT 	)* w||->?GLL"23FO
Uct 	)*',,'gll#GLL'*GLL&)
ucB 	)*',,'gll#GLL'*GLL&)
Ccx 	 Wg&Wf%g	
ycJ 	&--(6==&)Hf%%&	
KcV 	6==)FMM6*Hf%%&	
Wcp 	&--)>?6==":;
qc~ 	6==&1
cN TN6==*;<FMM6*6==":;	
 6==";<6=="45(]FMM62(89fmmV4H./
 g~.FMM#;<6==/2Hf%&
 Wf%'"
cFrZ   r   c                   j   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j2                  fdej4                  dfddj7                  e	      z  efddj7                  e
ddd         z  ej<                  fd eded!eefddj7                  e      z  ej<                  fddj7                  e      z  ej>                  fd"efd#e jB                  fd$e jD                  fd%e jF                  fd&e jH                  fd'e jJ                  fd(ejL                  fd)ejL                  fd*efd+ejN                  d,fd-ejP                  fgd.ej4                  fd/ej4                  d0fd1ej4                  d2fd3ej4                  fgd4ejN                  f e)d5      d6ejN                  fd+ejN                  d2fgdefd7e*fd8ej,                  fd9ej.                  d2fd:ed2f e+d2      gd;Z,y)<r   z?
    For the ReasonML language.

    .. versionadded:: 2.6
    ReasonMLzhttps://reasonml.github.io/reasonmlreasonz*.rez*.reiztext/x-reasonml)0r   r   r   r   r   r   r   r   r'   r    r=   r   r   r   r!   esfunr   r9   r   r   r   r   r   r   r"   switchr   pubr   r   nonrecr   r   r(   prir#   r$   r6   r)   r   r   r   r*   r%   r   r   r0   r+   )+r   r@   r   r   r   r   r   r   rK   r   r   rE   r   r   z\.\.\.rA   r   r   rD   rL   r   r   r   rB   r   r   r   r   r   r   r   r   r   rN   rH   r   r   r   rF   z\|\|r   r   r   r   )	r   r   r   r   r   lsrr   r   r   r   r   r   r   rR   r   rp   r   r   r   r   z//.*?\nz	\/\*(?!/)rr   r   rw   rv   Nr   rI   r   r   r   r  r  r  r  r  r  r  rS   r   r  r7  z\/\*r   z\*\/rT   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   rU   r   r   r  r  r`   r   r	   rA  r   r   r   r
   r  r   r   r   r   r  r  r   r   r   r   r   r   r   r   r   rZ   rX   r   r     s    D
'C8$G!I"#IHG )IUNK$JTJ v}}-FMM*!6==1
 TN$dll&9&9:)4>>8D $**-(7,,i8388H--w7sxx"..>(+yA8L388N33X]]C388J//>t$8&,,G+VZZ8!6::.,&..)G[[V[[!7O6==(+!4==19
> ))*g''1g''0G%%&	
 '%&fmm$6==&)	
 TNK %t~~6djj&1tV,FO
a8FrZ   r   c                   >   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j0                  fdedfdefddj5                  e	      z  efddj5                  e      z  ej8                  fddj5                  e
      z  ej:                  fddj5                  eddd         z  efd eded!eefddj5                  e      z  ej>                  fd"efd#e jB                  fd$e jD                  fd%e jF                  fd&e jH                  fd'e jJ                  fd(ejL                  fd)ejL                  fd*efd+ejN                  fd,efd-ejP                  d.fd/ejR                  fgd0efd1ed2fd3ed4fd5efgd6ejP                  f e*d7      d8ejP                  fd-ejP                  d4fgdefd9e+fd:ej.                  fd;ej0                  d4fd<ed4f e,d4      gd=Z-y)>r   z8
    For the F* language.
    .. versionadded:: 2.7
    FStarzhttps://www.fstar-lang.org/fstarz*.fstz*.fstiztext/x-fstar)5abstract
attributesnoequnopteqandbeginbyr   effectr'   r    ensuresr=   existsr   r%  r!   r   r   r   r   inlineinline_for_extractionirreduciblelogicrd   r   r   r   
new_effect	noextractr   r(   opaquer   range_of	reifiablereifyreflectablerequiresset_range_of
sub_effectsynthr)   totalr   r   r*   unfold
unfoldabler%   r   r+   not)r"   r#   )assumeadmitr   calc)/r   r   z/\\z\\/z<:z<@z\(\|z\|\)r@   zu#r   r   r   z\(\)rK   z~>rC   r   z<--z<==>z==>r   r   z\?\.z\.\[z\.\(z\.\(\|z\.\[\|z
\{:patternrA   r   r   rL   r   rB   z%\[z!\{r   z\[@r   z\|>z\]z\|\]r   rF   r   z\$r   r   r   r   r   rR   r   rp   zfalse|true|False|True|\(\)|\[\]r   r   r   r   rr   z\/\/.+$r   rw   rv   Nr   rI   r   r   r   r  r  r  r  r  r  r  z\`([\w\'.]+)\`z\`rS   r   r  r	  rq   r   r   rT   r   r
  r  r  r   r  r  r  r  ).r   r   r   r   r   r  r   r   r   r  decl_keywordsassume_keywordsr  r  r  r  r  r   rU   r   r   r  r  r`   r   r	   r   r   	ExceptionDeclarationr
   r   r   r   r   r  r  r   r   r  r   r   r   r   r   r   r   rZ   rX   r   r   `  s   
 D
'CiG(#I I
H #M;OG )IK$JTJ v}}-FMM*!6==1
 TN/1D1DE)4>>8D $**-Wi0!388H--w7388O44dnnE388M22G4G4GHsxx"..9(+yA8L388J//>t$8&,,G+VZZ8!6::.,&..)G[[V[[!7O.G6==(+!4==1=
B !gw'gv&w	
 '%&fmm$6==&)	
 TNK %t~~6djj&1tV,FO
e:FrZ   r   )r   ry   pygments.lexerr   r   r   r   r   pygments.tokenr   r	   r
   r   r   r   r   r   r   __all__r   r   r   r   r   r   rZ   rX   <module>ru     sv    
 H H   NLz L^
Z Zz@z @F
Z* Zz` `rZ   