a
    "=`                     @   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-2020 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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defdejdfg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" 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d-ejfd.ej fd/e ej fd0e ej fd1ejd2fd3ejd4fd5ejd6fd7ejd8fd9ej!fd:e ed;fde efde efgd:e efde edfde edfde"fd<e"fge#dge$d=d>ejd?fd@ejdAfe$dBe$dCd<e"fge$d=dDefdejdfdEejdFfdGejdHfdIedFfdJejdKfe$dBe$dCd<e"fg
eejeejdLd e edfge$d=e$dMde ej%fe#dge$d=d9ej!fdNedOfde ej&dfde ej&dfe#dge$d=d9ej!fdNedOfdPeef e'ej(eedfdPeef e'ej(eedfde ej(dfde ej(dfe#dge$d=e$dMd9ej!fdNedOfdQe edRfde ej)fde ej)fd<e"dfge$d=dSejdTfe$dMe$dCd<e"dfge$d=e$dMd9ej!fdNedOfdUe'eeejdfdQe edVfde ej)fde ej)fd<e"dfg	e$d=dSejdWfdXejdTfdYejfdZe e'eeej*fd[e e'eeej*fe$dMe$dCd<e"fg	e$d=d\e e'ejeej*fd]e e'ejeej*fdYejfd^e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dDefdejdfd9ej!feefd_efd`edfeefgdaejfdejdbfdcejdfddejfgdeZ+dfS )gr   zB
    For the Standard ML language.

    .. versionadded:: 1.5
    zStandard MLZsml)z*.smlz*.sigz*.funztext/x-standardmlzapplication/x-standardml>)   functorfuncaseinZabstypeelsewhererecraiseZsharingZinfixrZ	signatureifasendZ	structureZlocalwithandlet	exceptionoftypesigopenfnZhandleorelseopZwithtypeZeqtypethenr   ZdatatypeZinfixvaldowhilestructZnonfixZandalso>   :>=>=#->:\|>
   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 rD   4/usr/lib/python3/dist-packages/pygments/lexers/ml.pystringy=   s    zSMLLexer.stringyc                 c   sP   | 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tokenrD   rD   rE   long_id_callbackL   s
    zSMLLexer.long_id_callbackc                 c   sL   | d| jv rt}n| d| jv r,t}nt}|d|| dfV  d S NrG   )rI   rJ   r   symbolicid_reservedr   rL   rM   rD   rD   rE   end_id_callbackT   s    zSMLLexer.end_id_callbackc                 c   sF   | d}|| jv rtj}n|| jv r,t}nt}|d||fV  d S rR   )rI   rJ   r
   ReservedrS   r   r   rL   )rN   rO   strrP   rD   rD   rE   id_callback]   s    


zSMLLexer.id_callback\s+\(\*commentz\(|\[|\{mainz\)|\]|\}rB   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zrD   rD   rE   	<genexpr>}       zSMLLexer.<genexpr>z#"charrA   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(?!\'))rB   main-funfname
delimiterscorez\sz\b(fun|and)\b(?!\')rn   z\b(val)\b(?!\'))rB   r[   rl   r6   z\b(case|handle)\b(?!\'))rB   r[   z(?=\b(%s)\b(?!\'))breakout\(tyvarseqz(%s)(\s*)(=(?!%s))z=(?!%s))rB   typbindz\b(and)\b(?!\'))rB   ri   z(=)(\s*)(datatype))rB   datbinddatcon)rB   rf   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\*\)[(*)])rk   ro   rp   rj   rootr[   rm   rd   re   rq   rh   rn   rl   ri   rt   rf   ru   rg   rv   rs   rZ   N),__name__
__module____qualname____doc__namealiases	filenames	mimetypesrJ   rS   Znonid_reservedZalphanumid_reZsymbolicid_rerF   rQ   rT   rW   r   r   	Multiliner   r
   rU   joinr   CharDoubler   HexIntegerFloatr   ZLabelZ	Decoratorr   r   r   rK   ZFunctionr   VariableTypeClasstokensrD   rD   rD   rE   r      sp  	










"









	


 r   c                   @   s  e 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d/ej$fe&d0d1ej$fd&ej$d-fgdefd2e'fd3ejfd4ejd-fd5ed-fe(d-gd6Z)dS )7r   z<
    For the OCaml language.

    .. versionadded:: 0.7
    ZOCamlZocaml)z*.mlz*.mliz*.mllz*.mlyztext/x-ocaml)0r   assertbeginclass
constraintr-   donedowntor   r   r#   externalfalseforr   functionr   r   r   r   inheritinitializerlazyr"   rO   methodmodulemutablenewobjectr$   r'   privater   r   r&   r/   r+   totruetryr%   valuer,   virtualwhenr.   r    ))!=r3   &&&rr   rw   \*\+r?   --\.r4   \.\.\.r5   :::=r0   r7   ;;<<-r2   >>]>\}\?\?\?\[\[<\[>\[\|r=   r;   `\{\{<r6   \|]\}~[!$%&*+\./:<=>?@^|~-])r!   asrlandlorlsllxormodor[!?~][=<>@^|&+\*/$%-]Zunitintfloatboolre   rd   listZarray\\[\\"\'ntbr]r@   \\x[0-9a-fA-F]{2}rX   false|true|\(\)|\[\]\b([A-Z][\w\']*)(?=\s*\.)rj   \b([A-Z][\w\']*)\(\*(?![)])rZ   \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}))''.''rA   re   [~?][a-z][\w\']*:[^(*)]+rY   rx   ry   rB   rz   [^\\"]+escape-sequence\\\nr   [A-Z][\w\']*(?=\s*\.)[A-Z][\w\']*[a-z_][\w\']*r   r{   rZ   re   rj   )*r|   r}   r~   r   r   r   r   r   keywordskeyopts	operatorsword_operatorsprefix_syms
infix_syms
primitivesr   rC   r   r   BuiltinPseudorK   r   r   r   r
   r	   Wordr   r   r   r   OctBinr   r   r   r   r   r   r   r   rD   rD   rD   rE   r   d  st   	




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
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   zU
    Lexer for the Opa language (http://opalang.org).

    .. versionadded:: 1.5
    ZOpaZopaz*.opaz
text/x-opa)r!   r   r   r   ZclientZcssZdatabaseZdbr-   r   r   r   forallr   r   importrO   r   r   packageparserr   Zserverr+   r%   r,   r    Z
xml_parserz(([a-zA-Z_]\w*)|(`[^`]*`))z[.=\-<>,@~%/+?*&^!]z[()\[\],;|]z\\[\\"\'ntr}]r@   r   z/\*nested-commentz//.*?$commentsrX   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}rA   re   z9'(?:(\\[\\\"'ntbr ])|(\\[0-9]{3})|(\\x[0-9a-fA-F]{2})|.)'r   rx   r   rB   z<(?=[a-zA-Z>])html-open-tagz[@?!]?(/\w+)+(\[_\])?z<-(?!r8   z\b([A-Z]\w*)(?=\.)z=(?!z(%s)+r5   r%   r   r3   z#(?=\{)r4   )rB   
type-lhs-1type-with-slashrr   )rB   
type-tuplez~?\{)rB   type-record)rB   slash-type-1type-1/)rB   r  )rB   r%   z(?=,))rB   
type-arrowz,(?=[^:]*?->)r  z[^()/*]+z[/*]rw   z[^{}/*]+[^/*]+z\*/z[^\\"{]+r{   r   z	[^\\\'{]+z\'z[\w\-:]+)rB   	html-attrr   )rB   html-contentz	[\w\-:]*>z	[\w\-:]+=html-attr-valuez/>)rB   single-string)rB   re   )rB   r{   z[^"\'{`=<>]+z<!--html-commentz</)rB   html-end-tagr   z[^<{]+z-->z[^\-]+|-)r   r   r  r{   r%   r  r  r
  r  r  r  r	  r   re   r  r  r  r  r  r  r  N)%r|   r}   r~   r   r   r   r   r   r   Zident_reZop_reZpunc_rer   rC   r   r   r   r   r
   r   r   r   r   r   r   r   r   r   r   r   r	   Singler   rK   r   r   r   rD   rD   rD   rE   r     s  



i

















	









	  r   c                   @   s  e 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d/ejd0fd1ej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 ReasonML language (https://reasonml.github.io/).

    .. versionadded:: 2.6
    ZReasonMLreasonZreasonmlz*.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"   Zswitchr   Zpubr   r   Znonrecr   r$   r'   Zprir   r&   r/   r+   r   r   r   r%   r,   r   r   r.   r    )+r   r3   r   r   rr   rw   r   r   r?   r   r   r1   r   r   z\.\.\.r5   r   r   r0   r7   r   r   r   r2   r   r   r   r   r   r   r   r   r   r=   r;   r   r   r   r6   z\|\|r   r   r   r   )	r!   r   r   r   r   Zlsrr   r   r   r   r   r   r   r@   r   rX   r   r   rj   r   z//.*?\nz	\/\*(?!/)rZ   r   r]   r\   Nr   r   r   r   r   r   r   r   r   r   r   rA   re   r   r  z\/\*rx   z\*\/rB   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   rC   r   r   r   r   rK   r   r   r  r   r   r
   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rD   rD   rD   rE   r     sv   







r   c                   @   s  e 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d/ed0fd1ed2fd3efgd4ej'fe)d5d6ej'fd+ej'd2fgdefd7e*fd8ejfd9ejd2fd:ed2fe+d2gd;Z,dS )<r   zV
    For the F* language (https://www.fstar-lang.org/).
    .. versionadded:: 2.7
    ZFStarZfstarz*.fstz*.fstiztext/x-fstar)5ZabstractZ
attributesZnoeqZunopteqZandbeginZbyr   Zeffectr   r   Zensuresr#   existsr   r   r   r   r   r   r   ZinlineZinline_for_extractionZirreducibleZlogicrO   r   r   r   Z
new_effectZ	noextractr$   r'   Zopaquer   Zrange_ofZ	reifiableZreifyZreflectableZ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\|\)r3   zu#r   rr   rw   z\(\)r?   z~>r4   r   z<--z<==>z==>r   r   z\?\.z\.\[z\.\(z\.\(\|z\.\[\|z
\{:patternr5   r   r   r7   r   r2   z%\[z!\{r   z\[@r   z\|>z\]z\|\]r   r6   r   z\$r   r   r   r   r   r@   r   rX   zfalse|true|False|True|\(\)|\[\]r   rj   r   r   rZ   z^\/\/.+$r   r]   r\   Nr   r   r   r   r   r   r   r   r   r   r   z\`([\w\'.]+)\`z\`rA   re   r   r   rY   rx   ry   rB   rz   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   rC   r   r   r   r   rK   r   r   r   r
   	ExceptionZDeclarationr	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rD   rD   rD   rE   r   ^  s~   


!

r   )r   r^   Zpygments.lexerr   r   r   r   r   Zpygments.tokenr   r   r	   r
   r   r   r   r   r   __all__r   r   r   r   r   rD   rD   rD   rE   <module>   s   
,  Q[  E\