B
    G
\l                 @   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g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-2017 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OpaLexerc               @   s*  e Zd ZdZdZdgZdddgZddgZed	Z	ed
Z
e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 e j!fd2e e j!fd3ejd4fd5ed6fd7ejd8fd9ejd:fd;e 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dAfdBejdCfe%dDe%dEd>e#fge%d?dFefdejdfdGejdHfdIejdJfdKedHfdLejdMfe%dDe%dEd>e#fg
eejeejdNd"e	 edfge%d?e%dOd!e e j&fe$dge%d?d;e j"fdPedQfd!e e j'dfd!e e j'dfe$dge%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e%d?e%dOd;e j"fdPedQfdSe edTfd!e ej*fd!e ej*fd>e#dfge%d?dUejdVfe%dOe%dEd>e#dfge%d?e%dOd;e j"fdPedQfdWe(eeejdfdSe edXfd!e ej*fd!e ej*fd>e#dfg	e%d?dUejdYfdZejdVfd[ejfd\e e(eee j+fd]e e(eee j+fe%dOe%dEd>e#fg	e%d?d^e e(ejee j+fd_e e(ejee j+fd[ejfe%dOe%dEd>e#f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d`efdaedfee fgdbejfdejdcfddejdfdeejfgdfZ,dgS )hr   zB
    For the Standard ML language.

    .. versionadded:: 1.5
    zStandard MLZsmlz*.smlz*.sigz*.funztext/x-standardmlzapplication/x-standardml))ZabstypeandZandalsoascaseZdatatypedoelseend	exceptionfnfunZhandleifinZinfixZinfixrletZlocalZnonfixofopopenZorelseraiserecthentypevalwithZwithtypewhileZeqtypefunctorr   ZsharingsigZ	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 r;   1lib/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tokenr;   r;   r<   long_id_callbackL   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 )Nr>   )r@   rA   r   symbolicid_reservedr   rC   )rD   rE   rF   r;   r;   r<   end_id_callbackT   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 )Nr>   )r@   rA   r
   ReservedrH   r   r   rC   )rD   rE   strrF   r;   r;   r<   id_callback]   s    


zSMLLexer.id_callbackz\s+z\(\*commentz\(|\[|\{mainz\)|\]|\}z#popz\b(let|if|local)\b(?!\'))rN   rN   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zr;   r;   r<   	<genexpr>}   s    zSMLLexer.<genexpr>z#"charr9   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(?!\')r^   z\b(val)\b(?!\'))z#poprN   r]   z\|z\b(case|handle)\b(?!\'))z#poprN   z(?=\b(%s)\b(?!\'))breakoutz\(tyvarseqz(%s)(\s*)(=(?!%s))z=(?!%s))z#poptypbindz\b(and)\b(?!\'))z#poprZ   z(=)(\s*)(datatype))z#popdatbinddatcon)z#poprW   z\b(withtype)\b(?!\')z\b(of)\b(?!\')z(\|)(\s*)(%s)z(\|)(\s+)(%s)z(exception|and)\b(\s+)(%s)z(exception|and)\b(\s*)(%s)r6   z\)z[^(*)]z#pushz\*\)z[(*)])r\   r_   r`   r[   rootrN   zmain-funrU   rV   ra   rY   r^   r]   rZ   rc   rW   rd   rX   re   rb   rM   N)-__name__
__module____qualname____doc__namealiases	filenames	mimetypessetrA   rH   Znonid_reservedZalphanumid_reZsymbolicid_rer=   rG   rI   rL   r   r   Z	Multiliner   r
   rJ   joinr   CharDoubler   HexIntegerFloatr   ZLabelZ	Decoratorr   r   r   rB   ZFunctionr   VariableTypeClasstokensr;   r;   r;   r<   r      s2  
			






















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classZ
constraintr   ZdoneZdowntor   r   r   externalZfalseforr   functionr)   r   r   r   ZinheritZinitializerZlazyr   rE   methodmoduleZmutablenewobjectr   r!   Zprivater"   r#   r*   r+   r$   totruetryr%   valuer&   ZvirtualZwhenr(   r'   ))z!=r/   &z&&z\(z\)z\*z\+r6   -z-\.z->z\.z\.\.r-   z::z:=z:>r7   z;;<z<-r.   >z>]z>\}z\?z\?\?z\[z\[<z\[>z\[\|r3   r8   `z\{z\{<z\|z\|]z\}~z[!$%&*+\./:<=>?@^|~-])r   ZasrZlandZlorZlslZlxormodorz[!?~]z[=<>@^|&+\*/$%-])ZunitintfloatboolrV   rU   listZarrayz\\[\\"\'ntbr]z
\\[0-9]{3}z\\x[0-9a-fA-F]{2}z\s+zfalse|true|\(\)|\[\]z\b([A-Z][\w\']*)(?=\s*\.)r[   z\b([A-Z][\w\']*)z\(\*(?![)])rM   z\b(%s)\brO   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'.''r9   rV   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-sequencerf   rM   rV   r[   )*rg   rh   ri   rj   rk   rl   rm   rn   keywordsZkeyoptsZ	operatorsZword_operatorsZprefix_symsZ
infix_symsZ
primitivesr   r:   r   r   BuiltinPseudorB   rx   r   rp   r
   r	   ZWordrw   r   ru   rs   OctBinrt   rq   rr   rv   r   r   r   ry   r;   r;   r;   r<   r   e  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   ZclientZcssZdatabaseZdbr   r   r   r}   Zforallr   r   importrE   r   r   packageparserr#   Z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}r9   rV   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<-(?!r1   z\b([A-Z]\w*)(?=\.)z=(?!z(%s)+r-   r%   r   r/   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[^\\"{]+rf   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#poprV   )z#poprf   z[^"\'{`=<>]+z<!--zhtml-commentz</)z#popzhtml-end-tagr   z[^<{]+z-->z[^\-]+|-)zescape-sequencer   zcomments-and-spacesrf   r%   ztype-1ztype-with-slashzslash-type-1z
type-lhs-1z
type-arrowz
type-tupleztype-recordznested-commentrV   zsingle-stringzhtml-open-tagzhtml-end-tagz	html-attrzhtml-attr-valuezhtml-contentzhtml-commentN)%rg   rh   ri   rj   rk   rl   rm   rn   r   Zident_reZop_reZpunc_rer   r:   r   r   r   r   r
   r   r   r   r   ru   rs   r   r   rt   rr   rq   r	   Singlerv   rB   rw   r   ry   r;   r;   r;   r<   r     s   








	




















)rj   rP   Zpygments.lexerr   r   r   r   r   Zpygments.tokenr   r   r	   r
   r   r   r   r   r   __all__r   r   r   r;   r;   r;   r<   <module>
   s   ,
  R\