o
    ‡ÎÖ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-2021 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>)   Ú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              	   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)Úwhatkind© rU   ú4/usr/lib/python3/dist-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ÚtokenrU   rU   rV   Ú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 ©NrX   )rZ   r[   r   Úsymbolicid_reservedr   r]   r^   rU   rU   rV   Ú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 rc   )rZ   r[   r
   ÚReservedrd   r   r   r]   )r_   r`   Ústrra   rU   rU   rV   Úid_callback\   s   €


zSMLLexer.id_callbackÚ
whitespaceú\s+ú\(\*ÚcommentÚ
delimitersz\(|\[|\{Úmainz\)|\]|\}rQ   z\b(let|if|local)\b(?!\'))rn   rn   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ÚzrU   rU   rV   Ú	<genexpr>|   s   € zSMLLexer.<genexpr>z#"ÚcharrP   Ú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(?!\'))rQ   úmain-funÚfnamer€   z\sz\b(fun|and)\b(?!\')r�   z\b(val)\b(?!\'))rQ   rn   r   rD   z\b(case|handle)\b(?!\'))rQ   rn   Úbreakoutz(?=\b(%s)\b(?!\'))ú\(Útyvarseqz(%s)(\s*)(=(?!%s))z=(?!%s))rQ   Útypbindr…   z\b(and)\b(?!\'))rQ   r|   z(=)(\s*)(datatype))rQ   ÚdatbindÚdatconr†   )rQ   ry   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)rI   ú\)z[^(*)]ú#pushú\*\)ú[(*)])rz   r‡   r„   rl   N),Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚaliasesÚ	filenamesÚ	mimetypesr[   rd   Únonid_reservedÚalphanumid_reÚsymbolicid_rerW   rb   re   rh   r   r   Ú	Multiliner   r
   rf   Újoinr   ÚCharÚDoubler   ÚHexÚIntegerÚFloatr   ÚLabelÚ	Decoratorr   r   r   r\   ÚFunctionr   ÚVariableÚTypeÚClassÚtokensrU   rU   rU   rV   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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
    ÚOCamlÚocaml)z*.mlz*.mliz*.mllz*.mlyztext/x-ocaml)0r   ÚassertÚbeginÚclassÚ
constraintr   ÚdoneÚdowntor%   r   r;   ÚexternalÚfalseÚforr   Úfunctionr7   r   r   r   ÚinheritÚinitializerÚlazyr    r`   ÚmethodÚmoduleÚmutableÚnewÚobjectr   r&   Úprivater,   r!   r"   r4   r'   ÚtoÚtrueÚtryr(   Úvaluer#   ÚvirtualÚwhenr.   r)   ))ú!=r>   ú&ú&&rƒ   rˆ   ú\*ú\+rI   ú-ú-\.rA   ú\.ú\.\.r?   ú::ú:=rB   rJ   ú;;ú<ú<-r@   ú>ú>]ú>\}ú\?ú\?\?ú\[ú\[<ú\[>ú\[\|rL   rF   ú`ú\{ú\{<rD   ú\|]ú\}ú~ú[!$%&*+\./:<=>?@^|~-])r   ÚasrÚlandÚlorÚlslÚlxorÚmodÚorú[!?~]ú[=<>@^|&+\*/$%-]©ÚunitÚintÚfloatÚboolrx   rw   ÚlistÚarrayú\\[\\"\'ntbr]rO   ú\\x[0-9a-fA-F]{2}rj   úfalse|true|\(\)|\[\]ú\b([A-Z][\w\']*)(?=\s*\.)r}   ú\b([A-Z][\w\']*)ú\(\*(?![)])rl   ú\b(%s)\brq   rp   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}))'ú'.'ú'rP   rx   ú[~?][a-z][\w\']*:ú[^(*)]+rk   r‰   rŠ   rQ   r‹   ú[^\\"]+úescape-sequenceú\\\nrÇ   ú[A-Z][\w\']*(?=\s*\.)ú[A-Z][\w\']*ú[a-z_][\w\']*©r  r~   rl   rx   r}   )*rŒ   r�   rŽ   r�   r�   r‘   r’   r“   ÚkeywordsÚkeyoptsÚ	operatorsÚword_operatorsÚprefix_symsÚ
infix_symsÚ
primitivesr   rR   r   r   ÚBuiltinÚPseudor\   r£   r   r˜   r
   r	   ÚWordr¢   r   r�   r›   ÚOctÚBinrœ   r™   rš   r¡   r   r   r   r¤   rU   rU   rU   rV   r   c  sv    	ý

ÿ
åü
ü
ú
Ñ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   zU
    Lexer for the Opa language (http://opalang.org).

    .. versionadded:: 1.5
    ÚOpaÚopaz*.opaz
text/x-opa)r   r   r¨   r$   ÚclientÚcssÚdatabaseÚdbr   r%   r   r­   Úforallr°   r   Úimportr`   rµ   rä   ÚpackageÚparserr!   Úserverr'   r(   r#   r)   Ú
xml_parserz(([a-zA-Z_]\w*)|(`[^`]*`))z[.=\-<>,@~%/+?*&^!]z[()\[\],;|]r  z\\[\\"\'ntr}]rO   rï   Úcommentsz/\*znested-commentz//.*?$zcomments-and-spacesrj   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}rP   rx   z9'(?:(\\[\\\"'ntbr ])|(\\[0-9]{3})|(\\x[0-9a-fA-F]{2})|.)'rØ   r‰   rÛ   rQ   z<(?=[a-zA-Z>])zhtml-open-tagz[@?!]?(/\w+)+(\[_\])?z<-(?!rH   z\b([A-Z]\w*)(?=\.)z=(?!z(%s)+r?   r(   rÿ   r>   z#(?=\{)rA   )rQ   ú
type-lhs-1útype-with-slashútype-1rƒ   )rQ   ú
type-tuplez~?\{)rQ   útype-recordr&  )rQ   úslash-type-1r'  r*  ú/)rQ   r'  r%  )rQ   r(   z(?=,))rQ   ú
type-arrowr,  z,(?=[^:]*?->)r(  z[^()/*]+z[/*]rˆ   r)  z[^{}/*]+ú[^/*]+z\*/z[^\\"{]+úsingle-stringz	[^\\\'{]+z\'z[\w\-:]+)rQ   ú	html-attrrÎ   )rQ   úhtml-contentúhtml-end-tagz	[\w\-:]*>z	[\w\-:]+=úhtml-attr-valuez/>)rQ   r.  )rQ   rx   )rQ   r~   z[^"\'{`=<>]+z<!--úhtml-commentz</)rQ   r1  rÌ   z[^<{]+z-->z[^\-]+|-)r/  r2  r0  r3  N)%rŒ   r�   rŽ   r�   r�   r‘   r’   r“   r	  Úident_reÚop_reÚpunc_rer   rR   r   r   r   r   r
   r   r  r  r   r�   r›   r  r  rœ   rš   r™   r	   ÚSingler¡   r\   r¢   r   r¤   rU   rU   rU   rV   r   ¿  sŒ   ýþ	þ÷þó
ÿ


¯îzý† 


õ �ü þ �ë 
ü �ç %

ü �Û +

ù �Õ ;

û �Å B

û �¾ ]ü �£ f
ü �š l
ü �” y

þ �‡  
þ � �ÿ  	


ü



ú

û	þ � �ß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
    ÚReasonMLÚreasonmlÚreasonz*.rez*.reiztext/x-reasonml)0r   r§   r¨   r©   rª   r   r«   r¬   r%   r   r;   r­   r®   r¯   r   Úesfunr°   r7   r   r   r   r±   r²   r³   r    Úswitchrµ   Úpubr¶   r·   Únonrecr¸   r   r&   Úprir!   r"   r4   r'   rº   r»   r¼   r(   r#   r¾   r¿   r.   r)   )+rÀ   r>   rÁ   rÂ   rƒ   rˆ   rÃ   rÄ   rI   rÅ   rÆ   rC   rÇ   rÈ   z\.\.\.r?   rÉ   rÊ   rB   rJ   rË   rÌ   rÍ   r@   rÎ   rÏ   rÐ   rÑ   rÒ   rÓ   rÔ   rÕ   rÖ   rL   rF   r×   rØ   rÙ   rD   z\|\|rÚ   rÛ   rÜ   rÝ   )	r   rÞ   rß   rà   rá   Úlsrrâ   rã   rä   rå   ræ   rç   rî   rO   rï   rj   rð   rñ   r}   rò   z//.*?\nz	\/\*(?!/)rl   rô   rq   rp   Nrõ   rö   r÷   rø   rù   rú   rû   rü   rý   rþ   rÿ   rP   rx   r   r-  z\/\*r‰   z\*\/rQ   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   rR   r   r   r  r  r\   r£   r   r7  r—   r˜   r
   r	   r  r¢   r   r�   r›   r  r  rœ   r™   rš   r¡   r   r   r   r¤   rU   rU   rU   rV   r     sx    ý


ÿ
ä

ü
ü
ú
Ð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
    ÚFStarÚ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Úlogicr`   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\(\)rI   z~>rA   rÍ   z<--z<==>z==>rÇ   rÑ   z\?\.z\.\[z\.\(z\.\(\|z\.\[\|z
\{:patternr?   rÉ   rÊ   rJ   rË   r@   z%\[z!\{rÓ   z\[@rÖ   z\|>z\]z\|\]rØ   rD   rÛ   z\$rÝ   rå   ræ   rç   rî   rO   rï   rj   zfalse|true|False|True|\(\)|\[\]rñ   r}   rò   ró   rl   z^\/\/.+$rô   rq   rp   Nrõ   rö   r÷   rø   rù   rú   rû   rü   rý   rþ   rÿ   z\`([\w\'.]+)\`z\`rP   rx   r   r  rk   r‰   rŠ   rQ   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   rR   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¤   rU   rU   rU   rV   r   ^  s€    ý

ÿ
â!ü
ü
ú
Îr   )r�   rr   Úpygments.lexerr   r   r   r   r   Úpygments.tokenr   r   r	   r
   r   r   r   r   r   Ú__all__r   r   r   r   r   rU   rU   rU   rV   Ú<module>   s    
,  Q\  E\