B
    `މ                 @   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 ddddd	g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            )   @   s  e Zd ZdZdZdgZdddgZddgZd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1h)Zd2d3d4d5d6d7d8hZ	d9d:d;d<d=d>d?d@dAdBh
Z
dCZdDZdEdF ZdGdH ZdIdJ ZdKdL ZdMefdNejdOfgdPedQfdRedSfdTejdUfdVejdQfdWejdSfgdXdYdZd[ e
D  efd\ejd]fd^ejd_fd`ejfdaejfdbejfdcejfddejfdeejfdfejfdgej fdhe ej fdie ej fdjejdkfdlejdmfdnejdofdpejdqfdrej!fdse edtfdXe efdXe efgdse efdXe edSfdXe edSfdMe"fdue"fge#dQge$dvdwejdxfdyejdzfe$d{e$d|due"fge$dvd}efdNejdOfd~ejdfdejdfd3edfdejdfe$d{e$d|due"fg
eejeejddYe edSfge$dve$ddXe ej%fe#dSge$dvdrej!fdedfdXe ej&dSfdXe ej&dSfe#dSge$dvdrej!fdedfdeef e'ej(eedSfdeef e'ej(eedSfdXe ej(dSfdXe ej(dSfe#dSge$dve$ddrej!fdedfde edfdXe ej)fdXe ej)fdue"dSfge$dvdejdfe$de$d|due"dSfge$dve$ddrej!fdedfde'eeejdSfde edfdXe ej)fdXe ej)fdue"dSfg	e$dvdejdfdejdfdejfde e'eeej*fde e'eeej*fe$de$d|due"fg	e$dvde e'ejeej*fde e'ejeej*fdejfdeef ej*fe#dSge$dvdXe ej*dSfdXe ej*dSfdue"dSfgd}efdNejdOfdrej!feefd?efdedSfeefgdejfdNejdfdejdSfdejfgdZ+dS )r   zB
    For the Standard ML language.

    .. versionadded:: 1.5
    zStandard MLZsmlz*.smlz*.sigz*.funztext/x-standardmlzapplication/x-standardmlZabstypeandZandalsoascasedatatypedoelseend	exceptionfnfunhandleifinZinfixZinfixrletlocalZnonfixofopopenZorelseraiserecthentypevalwithZwithtypewhileZeqtypefunctorr   Zsharingsig	signaturestructZ	structurewhere:z\|=z=>z->#z:>()[]{},;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]z
\\[0-9]{3}z\\u[0-9a-fA-F]{4}z\\\s+\\"z#pop)r   EscapeZInterpol)Zwhatkind rA   Z/home/kop/projects/devel/pgwui/test_venv/lib/python3.7/site-packages/pygments/lexers/ml.pystringy<   s    zSMLLexer.stringyc             c   sP   | d| jk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tokenrA   rA   rB   long_id_callbackK   s
    zSMLLexer.long_id_callbackc             c   sL   | d| jkrt}n| d| jkr,t}nt}|d|| dfV  d S )NrD   )rF   rG   r   symbolicid_reservedr   rI   )rJ   rK   rL   rA   rA   rB   end_id_callbackS   s    zSMLLexer.end_id_callbackc             c   sF   | d}|| jkrtj}n|| jkr,t}nt}|d||fV  d S )NrD   )rF   rG   r
   ReservedrN   r   r   rI   )rJ   rK   strrL   rA   rA   rB   id_callback\   s    


zSMLLexer.id_callbackz\s+z\(\*commentz\(|\[|\{mainz\)|\]|\}z#popz\b(let|if|local)\b(?!\'))rT   rT   z\b(struct|sig|while)\b(?!\')z\b(do|else|end|in|then)\b(?!\')z(%s)|c             c   s   | ]}t |V  qd S )N)reescape).0zrA   rA   rB   	<genexpr>|   s    zSMLLexer.<genexpr>z#"charr?   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(?!\'))z#popzmain-funfname
delimiterscorez\sz\b(fun|and)\b(?!\')rd   z\b(val)\b(?!\'))z#poprT   rc   z\b(case|handle)\b(?!\'))z#poprT   z(?=\b(%s)\b(?!\'))breakoutz\(tyvarseqz(%s)(\s*)(=(?!%s))z=(?!%s))z#poptypbindz\b(and)\b(?!\'))z#popr`   z(=)(\s*)(datatype))z#popdatbinddatcon)z#popr]   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)z\)z[^(*)]z#pushz\*\)z[(*)])rb   re   rf   ra   rootrT   zmain-funr[   r\   rg   r_   rd   rc   r`   ri   r]   rj   r^   rk   rh   rS   N),__name__
__module____qualname____doc__namealiases	filenames	mimetypesrG   rN   Znonid_reservedZalphanumid_reZsymbolicid_rerC   rM   rO   rR   r   r   	Multiliner   r
   rP   joinr   CharDoubler   HexIntegerFloatr   ZLabelZ	Decoratorr   r   r   rH   ZFunctionr   VariableTypeClasstokensrA   rA   rA   rB   r      s8  

		























c               @   s  e Zd ZdZdZdgZdd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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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.

    .. versionadded:: 0.7
    ZOCamlZocamlz*.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"   rK   methodmodulemutablenewobjectr$   r&   privater'   r(   r/   r1   r)   totruetryr*   valuer+   virtualwhenr-   r,   ))z!=r5   &z&&z\(z\)z\*z\+r<   -z-\.z->z\.z\.\.r3   z::z:=z:>r=   z;;<z<-r4   >z>]z>\}z\?z\?\?z\[z\[<z\[>z\[\|r9   r>   `z\{z\{<z\|z\|]z\}~z[!$%&*+\./:<=>?@^|~-])r   asrlandlorlsllxormodorz[!?~]z[=<>@^|&+\*/$%-])unitintfloatboolr\   r[   listarrayz\\[\\"\'ntbr]z
\\[0-9]{3}z\\x[0-9a-fA-F]{2}z\s+zfalse|true|\(\)|\[\]z\b([A-Z][\w\']*)(?=\s*\.)ra   z\b([A-Z][\w\']*)z\(\*(?![)])rS   z\b(%s)\brU   z(%s)Nz
(%s|%s)?%sz[^\W\d][\w']*z(-?\d[\d_]*(.[\d_]*)?([eE][+\-]?\d[\d_]*)z0[xX][\da-fA-F][\da-fA-F_]*z0[oO][0-7][0-7_]*z0[bB][01][01_]*z\d[\d_]*z7'(?:(\\[\\\"'ntbr ])|(\\[0-9]{3})|(\\x[0-9a-fA-F]{2}))'z'.''r?   r\   z[~?][a-z][\w\']*:z[^(*)]+z\(\*z#pushz\*\)z#popz[(*)]z[^\\"]+zescape-sequencez\\\nz\.z[A-Z][\w\']*(?=\s*\.)z[A-Z][\w\']*z[a-z_][\w\']*)zescape-sequencerl   rS   r\   ra   )*rm   rn   ro   rp   rq   rr   rs   rt   keywordskeyopts	operatorsword_operatorsprefix_syms
infix_syms
primitivesr   r@   r   r   BuiltinPseudorH   r~   r   rv   r
   r	   Wordr}   r   r{   ry   OctBinrz   rw   rx   r|   r   r   r   r   rA   rA   rA   rB   r   c  sf   	





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   clientcssZdatabasedbr   r   r   r   forallr   r    importrK   r   r   packageparserr(   serverr)   r*   r+   r,   Z
xml_parserz(([a-zA-Z_]\w*)|(`[^`]*`))z[.=\-<>,@~%/+?*&^!]z[()\[\],;|]z\\[\\"\'ntr}]z
\\[0-9]{3}z\\x[0-9a-fA-F]{2}z/\*znested-commentz//.*?$commentsz\s+z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}r?   r\   z9'(?:(\\[\\\"'ntbr ])|(\\[0-9]{3})|(\\x[0-9a-fA-F]{2})|.)'z\{z#pushz\}z#popz<(?=[a-zA-Z>])zhtml-open-tagz[@?!]?(/\w+)+(\[_\])?z<-(?!r7   z\b([A-Z]\w*)(?=\.)z=(?!z(%s)+r3   r*   r   r5   z#(?=\{)z->)z#popz
type-lhs-1ztype-with-slashz\()z#popz
type-tuplez~?\{)z#popztype-record)z#popzslash-type-1ztype-1/)z#popztype-1)z#popr*   z(?=,))z#popz
type-arrowz,(?=[^:]*?->)ztype-with-slashz[^()/*]+z[/*]z\)z[^{}/*]+z[^/*]+z\*/z[^\\"{]+rl   zescape-sequencez	[^\\\'{]+z\'z[\w\-:]+)z#popz	html-attrr   )z#popzhtml-contentz	[\w\-:]*>z	[\w\-:]+=zhtml-attr-valuez/>)z#popzsingle-string)z#popr\   )z#poprl   z[^"\'{`=<>]+z<!--zhtml-commentz</)z#popzhtml-end-tagr   z[^<{]+z-->z[^\-]+|-)zescape-sequencer   zcomments-and-spacesrl   r*   ztype-1ztype-with-slashzslash-type-1z
type-lhs-1z
type-arrowz
type-tupleztype-recordznested-commentr\   zsingle-stringzhtml-open-tagzhtml-end-tagz	html-attrzhtml-attr-valuezhtml-contentzhtml-commentN)%rm   rn   ro   rp   rq   rr   rs   rt   r   Zident_reZop_reZpunc_rer   r@   r   r   r   r   r
   r   r   r   r   r{   ry   r   r   rz   rx   rw   r	   Singler|   rH   r}   r   r   rA   rA   rA   rB   r     s   








	




















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ReasonMLZreasonmlreasonz*.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"   switchr   Zpubr   r   Znonrecr   r$   r&   prir(   r/   r1   r)   r   r   r   r*   r+   r   r   r-   r,   )+z!=r5   r   z&&z\(z\)z\*z\+r<   r   z-\.z=>z\.z\.\.z\.\.\.r3   z::z:=z:>r=   z;;r   z<-r4   r   z>]z>\}z\?z\?\?z\[z\[<z\[>z\[\|r9   r>   r   z\{z\{<z\|z\|\|z\|]z\}r   z[!$%&*+\./:<=>?@^|~-])	r   r   r   r   r   Zlsrr   r   r   z[!?~]z[=<>@^|&+\*/$%-])r   r   r   r   r\   r[   r   r   z\\[\\"\'ntbr]z
\\[0-9]{3}z\\x[0-9a-fA-F]{2}z\s+zfalse|true|\(\)|\[\]z\b([A-Z][\w\']*)(?=\s*\.)ra   z\b([A-Z][\w\']*)z//.*?\nz	\/\*(?!/)rS   z\b(%s)\brU   z(%s)Nr   z
(%s|%s)?%sz[^\W\d][\w']*z(-?\d[\d_]*(.[\d_]*)?([eE][+\-]?\d[\d_]*)z0[xX][\da-fA-F][\da-fA-F_]*z0[oO][0-7][0-7_]*z0[bB][01][01_]*z\d[\d_]*z7'(?:(\\[\\\"'ntbr ])|(\\[0-9]{3})|(\\x[0-9a-fA-F]{2}))'z'.'r   r?   r\   z[~?][a-z][\w\']*:z[^/*]+z\/\*z#pushz\*\/z#popz\*z[^\\"]+zescape-sequencez\\\nz\.z[A-Z][\w\']*(?=\s*\.)z[A-Z][\w\']*z[a-z_][\w\']*)zescape-sequencerl   rS   r\   ra   ),rm   rn   ro   rp   rq   rr   rs   rt   r   r   r   r   r   r   r   r   r@   r   r   r   r   rH   r~   r   r   ru   rv   r
   r	   r   r}   r   r{   ry   r   r   rz   rw   rx   r|   r   r   r   r   rA   rA   rA   rB   r     sh   









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abstract
attributesZnoeqZunopteqZandbeginZbyr   Zeffectr   r   Zensuresr   existsr   r   r   r   r    r!   r   inlineZinline_for_extractionZirreducibleZlogicrK   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)r"   r(   )ZassumeZadmitr   Zcalc)/r   r   z/\\z\\/z<:z<@z\(\|z\|\)r5   zu#r   z\(z\)z\(\)r<   z~>z->z<-z<--z<==>z==>z\.z\?z\?\.z\.\[z\.\(z\.\(\|z\.\[\|z
\{:patternr3   z::z:=r=   z;;r4   z%\[z!\{z\[z\[@z\[\|z\|>z\]z\|\]z\{z\|z\}z\$z[!$%&*+\./:<=>?@^|~-]z[!?~]z[=<>@^|&+\*/$%-])r   r   r   r   r\   r[   r   r   z\\[\\"\'ntbr]z
\\[0-9]{3}z\\x[0-9a-fA-F]{2}z\s+zfalse|true|False|True|\(\)|\[\]z\b([A-Z][\w\']*)(?=\s*\.)ra   z\b([A-Z][\w\']*)z\(\*(?![)])rS   z^\/\/.+$z\b(%s)\brU   z(%s)Nr   z
(%s|%s)?%sz[^\W\d][\w']*z(-?\d[\d_]*(.[\d_]*)?([eE][+\-]?\d[\d_]*)z0[xX][\da-fA-F][\da-fA-F_]*z0[oO][0-7][0-7_]*z0[bB][01][01_]*z\d[\d_]*z7'(?:(\\[\\\"'ntbr ])|(\\[0-9]{3})|(\\x[0-9a-fA-F]{2}))'z'.'r   z\`([\w\'.]+)\`z\`r?   r\   z[~?][a-z][\w\']*:z[^(*)]+z\(\*z#pushz\*\)z#popz[(*)]z[^\\"]+zescape-sequencez\\\nz\.z[A-Z][\w\']*(?=\s*\.)z[A-Z][\w\']*z[a-z_][\w\']*)zescape-sequencerl   rS   r\   ra   )-rm   rn   ro   rp   rq   rr   rs   rt   r   Zdecl_keywordsZassume_keywordsr   r   r   r   r   r   r@   r   r   r   r   rH   r~   r   rv   r
   	ExceptionZDeclarationr	   r}   r   r{   ry   r   r   rz   rw   r   rx   r|   r   r   r   r   rA   rA   rA   rB   r   ^  sp   






)rp   rV   Zpygments.lexerr   r   r   r   r   Zpygments.tokenr   r   r	   r
   r   r   r   r   r   __all__r   r   r   r   r   rA   rA   rA   rB   <module>	   s   ,  Q\  E\