o
    Zh                     @   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-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                   @   sv  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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d.ejfd/ejfd0ejfd1ej fd2e ej fd3e ej fd4ejd5fd6ejd7fd8ejd9fd:ejd;fd<ej!fd=e ed>fd"e efd"e efgd>d=e efd"e edfd"e edfde"fd?e"fgd@e#dgde$ddAejdBfdCejdDfe$de$d!d?e"fgdEe$ddFefdejdfdGejdHfdIejdJfdKedHfdLejdMfe$de$d!d?e"fg
d'eejd)eejdNdOd#e edfgd9e$de$dNd"e ej%fe#dgdHe$dd<ej!fdPedQfd"e ej&dfd"e ej&dfe#dgdBe$dd<ej!fdPedQfdReef e'ej(eedfdReef e'ej(eedfd"e ej(dfd"e ej(dfe#dgd;e$de$dNd<ej!fdPedQfdSe edTfd"e ej)fd"e ej)fd?e"dfgdUe$ddVejdWfe$dNe$d!d?e"dfgd5e$de$dNd<ej!fdPedQfdXe'eeejdfdSe edYfd"e ej)fd"e ej)fd?e"dfg	dZe$ddVejd[fd\ejdWfd]ejfd^e e'eeej*fd_e e'eeej*fe$dNe$d!d?e"fg	e$dd`e e'ejeej*fdae e'ejeej*fd]ejfdbeef ej*fe#dge$dd"e ej*dfd"e ej*dfd?e"dfgdFefdejdfd<ej!feefdcefddedfeefgdeejfdejdffdgejdfdhejfgdiZ+djS )kr   zB
    For the Standard ML language.

    .. versionadded:: 1.5
    zStandard MLsml)z*.smlz*.sigz*.funztext/x-standardmlzapplication/x-standardml>)   val	exceptionstructZnonfix	signatureasZeqtypeZsharingfunZ	structureiftypedatatyperecopZinfixsighandleendZinfixrZabstypethenwhereorelser   fnlocalopenofandwhileZwithtypecasewithraiseZandalsodofunctorelseinlet>   =>#:>\|->:=>
   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 rJ   I/var/www/html/lang_env/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tokenrJ   rJ   rK   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 NrM   )rO   rP   r   symbolicid_reservedr   rR   rS   rJ   rJ   rK   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 rX   )rO   rP   r
   ReservedrY   r   r   rR   )rT   rU   strrV   rJ   rJ   rK   id_callback\   s   


zSMLLexer.id_callback
whitespace\s+\(\*comment
delimitersz\(|\[|\{mainz\)|\]|\}rG   z\b(let|if|local)\b(?!\'))rc   rc   z\b(struct|sig|while)\b(?!\')z\b(do|else|end|in|then)\b(?!\')core(%s)|c                 c   s    | ]}t |V  qd S )N)reescape).0zrJ   rJ   rK   	<genexpr>|   s    zSMLLexer.<genexpr>z#"charrF   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(?!\')Zsnamez\b(type|eqtype)\b(?!\')tnamez	\'[\w\']*z(%s)(\.)dottedz\S+rootz\b(val|and)\b(?!\')vnamez\b(fun)\b(?!\'))rG   main-funfnamert   z\sz\b(fun|and)\b(?!\')ru   z\b(val)\b(?!\'))rG   rc   rs   r8   z\b(case|handle)\b(?!\'))rG   rc   Zbreakoutz(?=\b(%s)\b(?!\'))\(tyvarseqz(%s)(\s*)(=(?!%s))z=(?!%s))rG   typbindrx   z\b(and)\b(?!\'))rG   rp   z(=)(\s*)(datatype))rG   datbinddatconry   )rG   rn   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)r@   \)z[^(*)]#push\*\)[(*)])ro   rz   rw   ra   N),__name__
__module____qualname____doc__namealiases	filenames	mimetypesrP   rY   Znonid_reservedZalphanumid_reZsymbolicid_rerL   rW   rZ   r]   r   r   	Multiliner   r
   r[   joinr   CharDoubler   HexIntegerFloatr   Label	Decoratorr   r   r   rQ   Functionr   VariableTypeClasstokensrJ   rJ   rJ   rK   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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d-ed.fd/efgd0ej%fe'd1d2ej%fd'ej%d.fgdefd3e(fd4ejfd5ejd.fd6ed.fe)d.gd7Z*dS )8r   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
constraintr0   donedowntor2   r#   r   externalfalseforr   functionr1   r   r3   r   inheritinitializerlazyr4   rU   methodmodulemutablenewobjectr*   r)   privater/   r   r!   r   r$   totruetryr   r   virtualwhenr,   r.   ))!=r6   &&&rv   r{   \*\+r@   --\.r9   \.\.\.r:   :::=r7   rA   ;;<<-r;   >>]>\}\?\?\?\[\[<\[>\[\|rD   rC   `\{\{<r8   \|]\}~[!$%&*+\./:<=>?@^|~-])asrlandlorlsllxormodor[!?~][=<>@^|&+\*/$%-]unitintfloatboolrm   rl   listarray\\[\\"\'ntbr]rE   \\x[0-9a-fA-F]{2}r_   false|true|\(\)|\[\]\b([A-Z][\w\']*)(?=\s*\.)rq   \b([A-Z][\w\']*)\(\*(?![)])ra   \b(%s)\brf   re   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}))''.''rF   rm   [~?][a-z][\w\']*:[^(*)]+r`   r|   r}   rG   r~   [^\\"]+escape-sequence\\\nr   [A-Z][\w\']*(?=\s*\.)[A-Z][\w\']*[a-z_][\w\']*r   rr   ra   rm   rq   )+r   r   r   r   r   urlr   r   r   keywordskeyopts	operatorsword_operatorsprefix_syms
infix_syms
primitivesr   rH   r   r   BuiltinPseudorQ   r   r   r   r
   r	   Wordr   r   r   r   OctBinr   r   r   r   r   r   r   r   rJ   rJ   rJ   rK   r   c  sx    	





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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d.e
 efd.e efd/ed0fd1e	 ej"fd2e	 ejfd3ejfe	efgd0edd4ej"fe#d5gd6edd7ej"d8fd9ej"d:fe	d7 ej"d8fe	ej"d&fd1e	 ej"fe#d&gd;ede#d<gd=edd>ej"d?fe#d&gd@edd4ej"dAfdBej"dCfe#d&gdDeddEej"d;fd4ej"dAfe#d&gdFeddGej"fdHej"fd7ej"d$fdIej"d&fgdJeddKej"fdHej"fd#ej"d$fd%ej"d&fgddLefded$fdMed&fdHefgd!dNejfd ejd&fd#edfed
gdOdPejfdQej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	 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$dhS )ir   z@
    Lexer for the Opa language.

    .. versionadded:: 1.5
    Opaopaz*.opaz
text/x-opa)r+   r   r   r-   clientcssZdatabasedbr0   r2   r#   r   forallr   r   importrU   r   r   packageparserr   serverr$   r   r   r.   Z
xml_parserz(([a-zA-Z_]\w*)|(`[^`]*`))z[.=\-<>,@~%/+?*&^!]z[()\[\],;|]r   z\\[\\"\'ntr}]rE   r   commentsz/\*znested-commentz//.*?$zcomments-and-spacesr_   rr   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}rF   rm   z9'(?:(\\[\\\"'ntbr ])|(\\[0-9]{3})|(\\x[0-9a-fA-F]{2})|.)'r   r|   r   rG   z<(?=[a-zA-Z>])zhtml-open-tagz[@?!]?(/\w+)+(\[_\])?z<-(?!r=   z\b([A-Z]\w*)(?=\.)z=(?!z(%s)+r:   r   r   r6   z#(?=\{)r9   )rG   
type-lhs-1type-with-slashtype-1rv   )rG   
type-tuplez~?\{)rG   type-recordr  )rG   slash-type-1r  r  /)rG   r  r  )rG   r   z(?=,))rG   
type-arrowr  z,(?=[^:]*?->)r  z[^()/*]+z[/*]r{   r  z[^{}/*]+[^/*]+z\*/z[^\\"{]+single-stringz	[^\\\'{]+z\'z[\w\-:]+)rG   	html-attrr   )rG   html-contenthtml-end-tagz	[\w\-:]*>z	[\w\-:]+=html-attr-valuez/>)rG   r  )rG   rm   )rG   rr   z[^"\'{`=<>]+z<!--html-commentz</)rG   r  r   z[^<{]+z-->z[^\-]+|-)r  r   r  r!  N)%r   r   r   r   r   r   r   r   r   Zident_reZop_reZpunc_rer   rH   r   r   r   r   r
   r   r   r  r   r   r   r  r  r   r   r   r	   Singler   rQ   r   r   r   rJ   rJ   rJ   rK   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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
    ReasonMLzhttps://reasonml.github.io/reasonmlreasonz*.rez*.reiztext/x-reasonml)0r   r   r   r   r   r0   r   r   r2   r#   r   r   r   r   r   Zesfunr   r1   r   r3   r   r   r   r   r4   switchr   Zpubr   r   Znonrecr   r*   r)   prir   r!   r   r$   r   r   r   r   r   r   r   r,   r.   )+r   r6   r   r   rv   r{   r   r   r@   r   r   r5   r   r   z\.\.\.r:   r   r   r7   rA   r   r   r   r;   r   r   r   r   r   r   r   r   r   rD   rC   r   r   r   r8   z\|\|r   r   r   r   )	r+   r   r   r   r   Zlsrr   r   r   r   r   r   r   rE   r   r_   r   r   rq   r   z//.*?\nz	\/\*(?!/)ra   r   rf   re   Nr   r   r   r   r   r   r   r   r   r   r   rF   rm   r   r  z\/\*r|   z\*\/rG   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   rH   r   r   r   r  rQ   r   r   r"  r   r   r
   r	   r  r   r   r   r   r  r  r   r   r   r   r   r   r   r   rJ   rJ   rJ   rK   r     sz    








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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
    FStarzhttps://www.fstar-lang.org/fstarz*.fstz*.fstiztext/x-fstar)5Zabstract
attributesZnoeqZunopteqZandbeginZbyr   Zeffectr2   r#   Zensuresr   existsr   r
  r   r   r   r3   r   inlineZinline_for_extractionZirreducibleZlogicrU   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)r4   r   )ZassumeZadmitr   calc)/r   r   z/\\z\\/z<:z<@z\(\|z\|\)r6   zu#r   rv   r{   z\(\)r@   z~>r9   r   z<--z<==>z==>r   r   z\?\.z\.\[z\.\(z\.\(\|z\.\[\|z
\{:patternr:   r   r   rA   r   r;   z%\[z!\{r   z\[@r   z\|>z\]z\|\]r   r8   r   z\$r   r   r   r   r   rE   r   r_   zfalse|true|False|True|\(\)|\[\]r   rq   r   r   ra   z\/\/.+$r   rf   re   Nr   r   r   r   r   r   r   r   r   r   r   z\`([\w\'.]+)\`z\`rF   rm   r   r   r`   r|   r}   rG   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   rH   r   r   r   r  rQ   r   r   r   r
   	ExceptionDeclarationr	   r   r   r   r   r  r  r   r   r  r   r   r   r   r   r   rJ   rJ   rJ   rK   r   `  s    


!


r   )r   rg   Zpygments.lexerr   r   r   r   r   Zpygments.tokenr   r   r	   r
   r   r   r   r   r   __all__r   r   r   r   r   rJ   rJ   rJ   rK   <module>   s    
,  Q]  E]