a
    ñ»jFŠ  ã                   @   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-present 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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d0e"j#fd1e› d2�e"j#fd3e› d2�e"j#fd4ejd5fd6ejd7fd8ejd9fd:ejd;fd<e"j$fd=e› d>�ed?fd=e› d2�efd=e› d2�efgd=e› d>�efd=e› d2�edfd=e› d2�edfde%fd@e%fge&dƒge'dAƒdBejdCfdDejdEfe'dFƒe'dGƒd@e%fge'dAƒdHefdejdfdIejdJfdKejdLfdMedJfdNejdOfe'dFƒe'dGƒd@e%fg
eejƒeejƒdP d" e
¡¡edfge'dAƒe'dQƒd=e› d2�e"j(fe&dƒge'dAƒd<e"j$fdRedSfd=e› d2�e"j)dfd=e› d2�e"j)dfe&dƒge'dAƒd<e"j$fdRedSfd=e› dTe› dU�e*e"j+eeƒdfd=e› dTe› dU�e*e"j+eeƒdfd=e› d2�e"j+dfd=e› d2�e"j+dfe&dƒge'dAƒe'dQƒd<e"j$fdRedSfdVe› d2�edWfd=e› d2�ej,fd=e› d2�ej,fd@e%dfge'dAƒdXejdYfe'dQƒe'dGƒd@e%dfge'dAƒe'dQƒd<e"j$fdRedSfdZe*eeejƒdfdVe› d2�ed[fd=e› d2�ej,fd=e› d2�ej,fd@e%dfg	e'dAƒdXejd\fd]ejdYfd^ejfd_e› d2�e*eee"j-ƒfd`e› d2�e*eee"j-ƒfe'dQƒe'dGƒd@e%fg	e'dAƒdae› d2�e*ejee"j-ƒfdbe› d2�e*ejee"j-ƒfd^ejfd=e› dce› d2�e"j-fe&dƒge'dAƒd=e› d2�e"j-dfd=e› d2�e"j-dfd@e%dfgdHefdejdfd<e"j$fee"fddefdeedfee"fgdfejfdejdgfdhejdfdiejfgdjœZ.dkS )lr   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>)   ÚwithÚstructÚandZwithtypeZinfixÚletÚ	exceptionÚsigÚorelseÚasZnonfixÚopenÚhandleÚelseÚwhileÚtypeZeqtypeÚwhereZsharingZinfixrÚfunÚinÚfunctorÚthenÚdatatypeÚraiseÚvalÚrecÚendÚ	signatureÚlocalÚofZandalsor   ÚopÚdoZabstypeÚifZ	structureÚcaseÚ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   ú8E:\soccer\ml_env\Lib\site-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ÚtokenrK   rK   rL   Úlong_id_callbackK   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 ©NrN   )rP   rQ   r   Úsymbolicid_reservedr   rS   rT   rK   rK   rL   Úend_id_callbackS   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 rY   )rP   rQ   r
   ÚReservedrZ   r   r   rS   )rU   rV   ÚstrrW   rK   rK   rL   Úid_callback\   s    


zSMLLexer.id_callbackú\s+ú\(\*Úcommentz\(|\[|\{Úmainz\)|\]|\}rH   z\b(let|if|local)\b(?!\'))rb   rb   z\b(struct|sig|while)\b(?!\')z\b(do|else|end|in|then)\b(?!\')ú({})ú|c                 c   s   | ]}t  |¡V  qd S )N)ÚreÚescape)Ú.0ÚzrK   rK   rL   Ú	<genexpr>|   ó    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(?!\')Úsnamez\b(type|eqtype)\b(?!\')Útnamez	\'[\w\']*rB   z)(\.)Údottedz\S+Ú
whitespacez\b(val|and)\b(?!\')Úvnamez\b(fun)\b(?!\'))rH   úmain-funÚfnameÚ
delimitersÚcorez\sz\b(fun|and)\b(?!\')ru   z\b(val)\b(?!\'))rH   rb   rs   r6   z\b(case|handle)\b(?!\'))rH   rb   z(?=\b({})\b(?!\'))Úbreakoutú\(Útyvarseqz)(\s*)(=(?!z))ú=(?!)rH   Útypbindz\b(and)\b(?!\'))rH   rp   z(=)(\s*)(datatype))rH   ÚdatbindÚdatcon)rH   rm   z\b(withtype)\b(?!\')z\b(of)\b(?!\')z
(\|)(\s*)(z
(\|)(\s+)(z(and\b)(\s+)(z(and\b)(\s*)(z)|(r@   ú\)z[^(*)]ú#pushú\*\)ú[(*)])rr   rv   rw   rq   Úrootrb   rt   rk   rl   rx   ro   ru   rs   rp   r|   rm   r}   rn   r~   rz   ra   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      st  	
þ


öÿ



ÿ
á"ûÿ
ÿö

ÿÿîÿû
÷ÿÿóö
ùÿÿó


ÿ
ÿò
ÿ
ÿöü	
ø

ü€ Œ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Ú
constraintr2   ÚdoneÚdowntor!   r-   r   ÚexternalÚfalseÚforr%   Úfunctionr'   r3   r&   r   ÚinheritÚinitializerÚlazyr   rV   ÚmethodÚmoduleÚmutableÚnewÚobjectr0   r   Úprivater*   r,   r   r   r(   ÚtoÚtrueÚtryr#   r+   ÚvirtualÚwhenr"   r   ))ú!=r9   ú&ú&&ry   r   ú\*ú\+r@   ú-ú-\.r7   ú\.ú\.\.r<   ú::ú:=r8   rE   ú;;ú<ú<-r;   ú>ú>]ú>\}ú\?ú\?\?ú\[ú\[<ú\[>ú\[\|rA   rC   ú`ú\{ú\{<r6   ú\|]ú\}ú~ú[!$%&*+\./:<=>?@^|~-])ÚasrÚlandÚlorÚlslÚlxorÚmodÚorú[!?~]ú[=<>@^|&+\*/$%-]©ÚunitÚintÚfloatÚboolrl   rk   ÚlistÚarrayú\\[\\"\'ntbr]rF   ú\\x[0-9a-fA-F]{2}r_   úfalse|true|\(\)|\[\]ú\b([A-Z][\w\']*)(?=\s*\.)rq   ú\b([A-Z][\w\']*)ú\(\*(?![)])ra   ú\b({})\brd   rc   NéÿÿÿÿrB   ú)?ú[^\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   rl   ú[~?][a-z][\w\']*:ú[^(*)]+r`   r€   r�   rH   r‚   ú[^\\"]+úescape-sequenceú\\\nr¾   ú[A-Z][\w\']*(?=\s*\.)ú[A-Z][\w\']*ú[a-z_][\w\']*©rú   rƒ   ra   rl   rq   )-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  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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› d/�e fd.e› d/�e fd0e d1fd2e ej$fd3e ej!fd4ej!feefgedƒd5ej$fe%d6ƒgedƒd7ej$d8fd9ej$d:fed7 ej$d8feej$d&fd2e ej$fe%d&ƒgedƒe%d;ƒgedƒd<ej$d=fe%d&ƒgedƒd5ej$d>fd?ej$d@fe%d&ƒgedƒdAej$dBfd5ej$d>fe%d&ƒgedƒdCej$fdDej$fd7ej$d$fdEej$d&fgedƒdFej$fdDej$fd#ej$d$fd%ej$d&fgdGefded$fdHed&fdDefgdIejfd ejd&fd#e dJfedKƒgdLejfdMejd&fd#e dJfedKƒgdNej!dOfdPej!dQfgdRej!d&fgdefdSej!dTfdUej!d&fdPej!dQfgd2ej!dVfd ej!dWfd3e ej!d&fd4ej!dXfdYej!d&fd#e dXfgdZed[fd\ej!d]fd^ej!d(fd#e dJfd_ej!fgd`ed&fdaefgdbœZ&dcS )dr   z%
    Lexer for the Opa language.
    ÚOpaÚopaz*.opaz
text/x-opazhttp://opalang.orgr   )r   r   r    r4   ÚclientÚcssZdatabaseÚdbr2   r!   r-   r¥   Úforallr¨   r3   ÚimportrV   r­   rÛ   ÚpackageÚparserr,   Úserverr(   r#   r+   r   Z
xml_parserz(([a-zA-Z_]\w*)|(`[^`]*`))z[.=\-<>,@~%/+?*&^!]z[()\[\],;|]z\\[\\"\'ntr}]rF   ræ   z/\*únested-commentz//.*?$Úcommentsr_   ú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}rG   rl   z9'(?:(\\[\\\"'ntbr ])|(\\[0-9]{3})|(\\x[0-9a-fA-F]{2})|.)'rÏ   r€   rÒ   rH   z<(?=[a-zA-Z>])úhtml-open-tagz[@?!]?(/\w+)+(\[_\])?z<-(?!r?   z\b([A-Z]\w*)(?=\.)r{   rB   z)+r<   r#   rö   r9   z#(?=\{)r7   )rH   ú
type-lhs-1útype-with-slashry   )rH   ú
type-tuplez~?\{)rH   útype-record)rH   úslash-type-1útype-1ú/)rH   r"  )rH   r#   z(?=,))rH   ú
type-arrowz,(?=[^:]*?->)r  z[^()/*]+z[/*]r   z[^{}/*]+ú[^/*]+z\*/z[^\\"{]+rƒ   rú   z	[^\\\'{]+z\'z[\w\-:]+)rH   ú	html-attrrÅ   )rH   úhtml-contentz	[\w\-:]*>z	[\w\-:]+=úhtml-attr-valuez/>)rH   úsingle-string)rH   rl   )rH   rƒ   z[^"\'{`=<>]+z<!--úhtml-commentz</)rH   úhtml-end-tagrÃ   z[^<{]+z-->z[^\-]+|-)rú   r  r  rƒ   r#   r"  r  r!  r  r$  r  r   r  rl   r)  r  r+  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  ýþþ
ÿ
¯iý



õþ
ü

ü

ù

û

ûü

ü
ü

þ	
þ


ü



ú

û	þ€ € á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¢   r2   r£   r¤   r!   r-   r   r¥   r¦   r§   r%   Zesfunr¨   r'   r3   r&   r   r©   rª   r«   r   Úswitchr­   Zpubr®   r¯   Znonrecr°   r0   r   Úprir,   r   r   r(   r²   r³   r´   r#   r+   rµ   r¶   r"   r   )+r·   r9   r¸   r¹   ry   r   rº   r»   r@   r¼   r½   r:   r¾   r¿   z\.\.\.r<   rÀ   rÁ   r8   rE   rÂ   rÃ   rÄ   r;   rÅ   rÆ   rÇ   rÈ   rÉ   rÊ   rË   rÌ   rÍ   rA   rC   rÎ   rÏ   rÐ   r6   z\|\|rÑ   rÒ   rÓ   rÔ   )	r   rÕ   rÖ   r×   rØ   ZlsrrÙ   rÚ   rÛ   rÜ   rÝ   rÞ   rå   rF   ræ   r_   rç   rè   rq   ré   z//.*?\nz	\/\*(?!/)ra   rë   rd   rc   Nrì   rB   rí   rî   rï   rð   rñ   rò   ró   rô   rõ   rö   rG   rl   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     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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)6ÚabstractÚ
attributesZnoeqZunopteqr   r    Zbyr   Zeffectr!   r-   Zensuresr   Úexistsr¦   r  r%   r¨   r3   r&   r   ÚinlineZinline_for_extractionZirreducibleZlogicrV   r­   r®   r¯   Z
new_effectZ	noextractr0   r   Úopaquer±   Zrange_ofZ	reifiableZreifyZreflectableÚrequiresZset_range_ofZ
sub_effectZsynthr(   Útotalr³   r´   r#   ZunfoldZ
unfoldabler+   r¶   r   Únot)r   r,   )ZassumeZadmitrŸ   Úcalc)/rÓ   r¼   z/\\z\\/z<:z<@z\(\|z\|\)r9   zu#r¸   ry   r   z\(\)r@   z~>r7   rÄ   z<--z<==>z==>r¾   rÈ   z\?\.z\.\[z\.\(z\.\(\|z\.\[\|z
\{:patternr<   rÀ   rÁ   rE   rÂ   r;   z%\[z!\{rÊ   z\[@rÍ   z\|>z\]z\|\]rÏ   r6   rÒ   z\$rÔ   rÜ   rÝ   rÞ   rå   rF   ræ   r_   zfalse|true|False|True|\(\)|\[\]rè   rq   ré   rê   ra   z\/\/.+$rë   rd   rc   Nrì   rB   rí   rî   rï   rð   rñ   rò   ró   rô   rõ   rö   z\`([\w\'.]+)\`z\`rG   rl   r÷   rø   r`   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‡   re   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\