B
    `aù[!2  ã               @   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 ddlmZ ddlmZ 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dS )zÓ
    pygments.lexers.modeling
    ~~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for modeling languages.

    :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
é    N)Ú
RegexLexerÚincludeÚbygroupsÚusingÚdefault)ÚTextÚCommentÚOperatorÚKeywordÚNameÚStringÚNumberÚPunctuation)Ú	HtmlLexer)Ú_stan_builtinsÚModelicaLexerÚ	BugsLexerÚ	JagsLexerÚ	StanLexerc               @   s$  e Zd ZdZdZdgZdgZdgZej	ej
B ZdZdefdejfd	ejfged
ƒdejdfde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dfdejfdejdfeefged
ƒdejfdejdfeejdfe dƒged
ƒeej!dfe dƒgdejdfdej"fde#e$ƒfdejfgdœZ%d S )!r   z\
    For `Modelica <http://www.modelica.org/>`_ source code.

    .. versionadded:: 1.1
    ZModelicaZmodelicaz*.moztext/x-modelicaz"(?:'(?:[^\\']|\\.)+'|[a-zA-Z_]\w*)u   [\sï»¿]+z//[^\n]*\n?z	/\*.*?\*/Ú
whitespaceú"Ústringz[()\[\]{},;]+z\.?[*^/+-]|\.|<>|[<>:=]=?z\d+(\.?\d*[eE][-+]?\d+|\.\d*)z\d+al  (abs|acos|actualStream|array|asin|assert|AssertionLevel|atan|atan2|backSample|Boolean|cardinality|cat|ceil|change|Clock|Connections|cos|cosh|cross|delay|diagonal|div|edge|exp|ExternalObject|fill|floor|getInstanceName|hold|homotopy|identity|inStream|integer|Integer|interval|inverse|isPresent|linspace|log|log10|matrix|max|min|mod|ndims|noClock|noEvent|ones|outerProduct|pre|previous|product|Real|reinit|rem|rooted|sample|scalar|semiLinear|shiftSample|sign|sin|sinh|size|skew|smooth|spatialDistribution|sqrt|StateSelect|String|subSample|sum|superSample|symmetric|tan|tanh|terminal|terminate|time|transpose|vector|zeros)\baX  (algorithm|annotation|break|connect|constant|constrainedby|der|discrete|each|else|elseif|elsewhen|encapsulated|enumeration|equation|exit|expandable|extends|external|final|flow|for|if|import|impure|in|initial|inner|input|loop|nondiscrete|outer|output|parameter|partial|protected|public|pure|redeclare|replaceable|return|stream|then|when|while)\bz(and|not|or)\bzI(block|class|connector|end|function|model|operator|package|record|type)\bÚclassz(false|true)\bzwithin\bzpackage-prefixz(function|record)\bz(if|for|when|while)\bz#popz\\[\'"?\\abfnrtv]z6(?i)<\s*html\s*>([^\\"]|\\.)+?(<\s*/\s*html\s*>|(?="))z<|\\?[^"\\<]+)r   Úrootr   zpackage-prefixr   N)&Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚaliasesÚ	filenamesZ	mimetypesÚreÚDOTALLÚ	MULTILINEÚflagsÚ_namer   r   ÚSingleÚ	Multiliner   r   ÚDoubler   r	   r   ÚFloatÚIntegerr   ÚBuiltinr
   ÚReservedZWordZConstantZClassr   Ú	NamespaceZEscaper   r   Útokens© r/   r/   ú7lib/python3.7/site-packages/pygments/lexers/modeling.pyr      sN   







c               @   s¬   e Zd ZdZdZdddgZdgZdZdZd	e	fgd
e
jfgedƒedƒdeeje	eƒfdejfdd ee ¡ ejfdefdefdefdefdefdefgdœZdd„ ZdS )r   zv
    Pygments Lexer for `OpenBugs <http://www.openbugs.net/>`_ and WinBugs
    models.

    .. versionadded:: 1.6
    ZBUGSZbugsZwinbugsZopenbugsz*.bug)>ÚabsÚarccosÚarccoshÚarcsinÚarcsinhÚarctanÚarctanhÚcloglogÚcosÚcoshZ
cumulativeZcutZdensityZdevianceÚequalsÚexprZgammapÚilogitÚicloglogZintegralÚlogÚlogfactÚloggamÚlogitÚmaxÚminÚphizpost.p.valueÚpowzprior.p.valueÚprobitzreplicate.postzreplicate.priorÚroundÚsinÚsinhZsolutionÚsqrtÚstepÚtanÚtanhÚtruncÚinprodz
interp.linÚinverseÚlogdetÚmeanz
eigen.valsZodeÚprodzp.valueMÚrankZrankedzreplicate.postMÚsdÚsortÚsumÚDÚIÚFÚTÚC)ÚdbernÚdbinÚdcatZdnegbinZdpoisÚdhyperZdbetaZdchisqrÚddexpÚdexpZdflatZdgammaZdgevÚdfZdggammaZdgparZdloglikZdlnormZdlogisZdnormZdparÚdtÚdunifZdweibÚdmultiÚddirchÚdmnormÚdmtÚdwishz\s+z#.*$Úcommentsr   z(model)(\s+)(\{)z(for|in)(?![\w.])z(%s)(?=\s*\()ú|z[A-Za-z][\w.]*z&[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?z\[|\]|\(|\)|:|,|;z<-|~z	\+|-|\*|/z[{}])r   rl   r   c             C   s   t  d| t j¡rdS dS d S )Nz^\s*model\s*{gffffffæ?g        )r!   ÚsearchÚM)Útextr/   r/   r0   Úanalyse_text¼   s    zBugsLexer.analyse_textN)r   r   r   r   r   r   r    Ú
_FUNCTIONSÚ_DISTRIBUTIONSr   r   r&   r   r   r
   r-   r   r,   Újoinr   r+   r   r	   r.   rq   r/   r/   r/   r0   r   c   s.   

c               @   sØ   e Zd ZdZdZdgZddgZdZedd„ d	D ƒƒZ	d
Z
defgdefgdejfdejfgedƒedƒdeejeeƒfdejfdejfdd ee	 e
 ¡ ejfedƒdefdefdefdefdefgdœZdd„ ZdS ) r   z=
    Pygments Lexer for JAGS.

    .. versionadded:: 1.6
    ZJAGSZjagsz*.jagz*.bug)2r1   r2   r3   r4   r5   r6   r7   r9   r:   r8   r;   Zexpr>   Zifelser=   r?   r@   rA   rB   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   z
interp.linrR   rC   rS   rD   rT   rX   rV   rQ   rU   rW   ÚtZacosZacoshZasinZasinhZatanr\   rZ   c             c   s   | ]}d | V  qdS )z[dpq]%sNr/   )Ú.0Úxr/   r/   r0   ú	<genexpr>Ú   s    zJagsLexer.<genexpr>)ZbernZbetaZdchiqsqrrb   rc   rd   Zgammaz	gen.gammaZlogisZlnormZnegbinZnchisqrZnormZparZpoisZweib)re   rf   Zdbetabinr^   r_   r`   ra   rh   ri   rk   rj   rg   ZdbinomZdchisqZdnbinomZdweibullZddirichz\s+z[a-zA-Z][\w.]*\bz(?s)/\*.*?\*/z#.*$rl   r   z(model|data)(\s+)(\{)zvar(?![\w.])z(for|in)(?![\w.])z(%s)(?=\s*\()rm   Únamesz&[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?z\[|\]|\(|\)|:|,|;z<-|~z&\+|-|\*|\/|\|\|[&]{2}|[<>=]=?|\^|%.*?%z[{}])r   ry   rl   r   c             C   sF   t  d| t j¡r>t  d| t j¡r$dS t  d| t j¡r8dS dS ndS d S )Nz^\s*model\s*\{z^\s*data\s*\{gÍÌÌÌÌÌì?z^\s*varg333333Ó?r   )r!   rn   ro   )rp   r/   r/   r0   rq     s    zJagsLexer.analyse_textN)r   r   r   r   r   r   r    rr   Útuplers   Z_OTHER_DISTRIBUTIONSr   r   r   r'   r&   r   r   r
   r-   r   ZDeclarationr,   rt   r+   r   r	   r.   rq   r/   r/   r/   r0   r   Ã   s8   


c               @   s  e Zd ZdZdZdgZdgZdefgdej	fdej
fgdefed	ƒed
ƒdd d¡ eejeeƒfdd ej¡ efdefdd ej¡ ejfdefdd ejej ¡ ejfdejjfdd ej¡ ejfdejfdefdejfdejfdej fde!fde!fdefgdœZ"dd„ Z#dS )r   a  Pygments Lexer for Stan models.

    The Stan modeling language is specified in the *Stan Modeling Language
    User's Guide and Reference Manual, v2.8.0*,
    `pdf <https://github.com/stan-dev/stan/releases/download/v2.8.8/stan-reference-2.8.0.pdf>`__.

    .. versionadded:: 1.6
    ZStanZstanz*.stanz\s+z(?s)/\*.*?\*/z	(//|#).*$z"[^"]*"rl   r   z(%s)(\s*)(\{)rm   )Z	functionsÚdataztransformed\s+?dataZ
parametersztransformed\s+parametersZmodelzgenerated\s+quantitiesz(%s)\bz
T(?=\s*\[)z[;:,\[\]()]z(%s)(?=\s*\()z[A-Za-z]\w*__\bz[A-Za-z]\w*(?=\s*\()]z[A-Za-z]\w*\bz-?[0-9]+(\.[0-9]+)?[eE]-?[0-9]+z-?[0-9]*\.[0-9]*z-?[0-9]+z<-|~z/\+|-|\.?\*|\.?/|\\|'|\^|==?|!=?|<=?|>=?|\|\||&&z[{}])r   rl   r   c             C   s   t  d| t j¡rdS dS d S )Nz^\s*parameters\s*\{g      ð?g        )r!   rn   ro   )rp   r/   r/   r0   rq   b  s    zStanLexer.analyse_textN)$r   r   r   r   r   r   r    r   r   r'   r&   r   r   rt   r   r
   r-   r   r   ZKEYWORDSZTYPESZTypeZ	FUNCTIONSZDISTRIBUTIONSr   r+   ZPseudoZRESERVEDr,   ZFunctionr   r)   r*   r	   r.   rq   r/   r/   r/   r0   r     s@   



)r   r!   Zpygments.lexerr   r   r   r   r   Zpygments.tokenr   r   r	   r
   r   r   r   r   Zpygments.lexers.htmlr   Zpygments.lexersr   Ú__all__r   r   r   r   r/   r/   r/   r0   Ú<module>
   s   (K`X