U
    lufÔ4  ã                   @   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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-2023 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Ú
Whitespace)Ú	HtmlLexer)Ú_stan_builtinsÚModelicaLexerÚ	BugsLexerÚ	JagsLexerÚ	StanLexerc                   @   s(  e Zd 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 source code.

    .. versionadded:: 1.1
    ZModelicazhttp://www.modelica.org/Zmodelicaz*.moztext/x-modelicaz"(?:'(?:[^\\']|\\.)+'|[a-zA-Z_]\w*)z[\s\ufeff]+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)\bak  (algorithm|annotation|break|connect|constant|constrainedby|der|discrete|each|else|elseif|elsewhen|encapsulated|enumeration|equation|exit|expandable|extends|external|firstTick|final|flow|for|if|import|impure|in|initial|inner|input|interval|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\búpackage-prefixz(function|record)\bz(if|for|when|while)\bz#popz\\[\'"?\\abfnrtv]z6(?i)<\s*html\s*>([^\\"]|\\.)+?(<\s*/\s*html\s*>|(?="))z<|\\?[^"\\<]+)r   Úrootr   r   r   N)'Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚurlÚaliasesÚ	filenamesÚ	mimetypesÚreÚDOTALLÚ	MULTILINEÚflagsÚ_namer   r   ÚSingleÚ	Multiliner   r   ÚDoubler   r	   r   ÚFloatÚIntegerr   ÚBuiltinr
   ÚReservedÚWordÚConstantZClassr   Ú	NamespaceZEscaper   r   Útokens© r5   r5   ú</tmp/pip-unpacked-wheel-7eq1ciah/pygments/lexers/modeling.pyr      sf   ý

öú ÿ
â!

û
ý
ÿûÎ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   zX
    Pygments Lexer for OpenBugs and WinBugs
    models.

    .. versionadded:: 1.6
    ZBUGSZbugsZwinbugsZopenbugsú*.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Úinprodú
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Údwishú\s+ú#.*$Úcommentsr   z(model)(\s+)(\{)ú(for|in)(?![\w.])ú(%s)(?=\s*\()ú|z[A-Za-z][\w.]*ú&[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?ú\[|\]|\(|\)|:|,|;ú<-|~z	\+|-|\*|/ú[{}]©r   rv   r   c                 C   s   t  d| t j¡rdS dS d S )Nz^\s*model\s*{gffffffæ?ç        ©r%   ÚsearchÚM©Útextr5   r5   r6   Úanalyse_text¼   s    zBugsLexer.analyse_textN)r   r   r   r   r    r"   r#   Ú
_FUNCTIONSÚ_DISTRIBUTIONSr   r   r*   r   r   r
   r3   r   r0   Újoinr   r/   r   r	   r4   r…   r5   r5   r5   r6   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*.jagr7   )2r8   r9   r:   r;   r<   r=   r>   r@   rA   r?   rB   ÚexprE   ZifelserD   rF   rG   rH   rI   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rZ   rJ   r[   rK   r\   r`   r^   rY   r]   r_   ÚtÚacosÚacoshÚasinÚasinhÚatanrd   rb   c                 c   s   | ]}d | V  qdS )z[dpq]%sNr5   )Ú.0Úxr5   r5   r6   Ú	<genexpr>Ú   s     zJagsLexer.<genexpr>)ZbernÚbetaZdchiqsqrrj   rk   rl   Úgammaz	gen.gammaZlogisZlnormZnegbinZnchisqrZnormÚparZpoisZweib)rm   rn   Zdbetabinrf   rg   rh   ri   rp   rq   rs   rr   ro   ZdbinomZdchisqZdnbinomZdweibullZddirichrt   z[a-zA-Z][\w.]*\bú(?s)/\*.*?\*/ru   rv   r   z(model|data)(\s+)(\{)zvar(?![\w.])rw   rx   ry   Únamesrz   r{   r|   z&\+|-|\*|\/|\|\|[&]{2}|[<>=]=?|\^|%.*?%r}   )r   r—   rv   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€   rƒ   r5   r5   r6   r…     s    zJagsLexer.analyse_textN)r   r   r   r   r    r"   r#   r†   Útupler‡   Z_OTHER_DISTRIBUTIONSr   r   r   r+   r*   r   r   r
   r3   r   ZDeclarationr0   rˆ   r/   r   r	   r4   r…   r5   r5   r5   r6   r   Ã   sN   ÿÿþüÿÿþýçò+c                   @   sv  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efdd ej¡ efdefdd ej¡ ejfdeeeeeeƒfdeeeeeeƒfdefdd ej¡ ejfdd ej¡ eeeejƒfdejjfdd ej¡ 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fde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.17.0*,
    `pdf <https://github.com/stan-dev/stan/releases/download/v2.17.0/stan-reference-2.17.0.pdf>`__.

    .. versionadded:: 1.6
    ZStanZstanz*.stanrt   r–   z	(//|#).*$z"[^"]*"rv   r   z(%s)(\s*)(\{)ry   )Z	functionsÚdataztransformed\s+?dataÚ
parametersztransformed\s+parametersÚmodelzgenerated\s+quantitiesztarget\s*\+=z(%s)\bz
T(?=\s*\[)z/(<)(\s*)(upper|lower|offset|multiplier)(\s*)(=)z(,)(\s*)(upper)(\s*)(=)z
[;,\[\]()]rx   z(~)(\s*)(%s)(?=\s*\()z[A-Za-z]\w*__\bz[A-Za-z]\w*(?=\s*\()]z$[0-9]+(\.[0-9]*)?([eE][+-]?[0-9]+)?iz\.[0-9]+([eE][+-]?[0-9]+)?iz[0-9]+iz#[0-9]+(\.[0-9]*)?([eE][+-]?[0-9]+)?z\.[0-9]+([eE][+-]?[0-9]+)?z[0-9]+z[A-Za-z]\w*\bz<-|(?:\+|-|\.?/|\.?\*|=)?=|~z;\+|-|\.?\*|\.?/|\\|'|\.?\^|!=?|<=?|>=?|\|\||&&|%|\?|:|%/%|!r}   z\|r~   c                 C   s   t  d| t j¡rdS dS d S )Nz^\s*parameters\s*\{g      ð?r   r€   rƒ   r5   r5   r6   r…   m  s    zStanLexer.analyse_textN)%r   r   r   r   r    r"   r#   r   r   r+   r*   r   r   rˆ   r   r
   r3   r   r   ZKEYWORDSÚTYPESÚTyper	   r   Z	FUNCTIONSr   r/   ZDISTRIBUTIONSZPseudoZRESERVEDr0   ZFunctionr   r-   r.   r4   r…   r5   r5   r5   r6   r     sb   	ÿýÿüÿÿÿ
É÷D)r   r%   Zpygments.lexerr   r   r   r   r   Zpygments.tokenr   r   r	   r
   r   r   r   r   r   Zpygments.lexers.htmlr   Zpygments.lexersr   Ú__all__r   r   r   r   r5   r5   r5   r6   Ú<module>   s   
,L`X