U
    `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\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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 r0   r0   :/usr/lib/python3/dist-packages/pygments/lexers/modeling.pyr      sd   

 
!



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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   rq   r   c                 C   s   t d| t jrdS dS d S )Nz^\s*model\s*{gffffff?        r"   searchMtextr0   r0   r1   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/   r   r0   r0   r0   r1   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*.jagr2   )2r3   r4   r5   r6   r7   r8   r9   r;   r<   r:   r=   Zexpr@   Zifelser?   rA   rB   rC   rD   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rU   rE   rV   rF   rW   r[   rY   rT   rX   rZ   tZacosZacoshZasinZasinhZatanr_   r]   c                 c   s   | ]}d | V  qdS )z[dpq]%sNr0   ).0xr0   r0   r1   	<genexpr>   s     zJagsLexer.<genexpr>)ZbernZbetaZdchiqsqrre   rf   rg   Zgammaz	gen.gammaZlogisZlnormZnegbinZnchisqrZnormZparZpoisZweib)rh   ri   Zdbetabinra   rb   rc   rd   rk   rl   rn   rm   rj   ZdbinomZdchisqZdnbinomZdweibullZddirichro   z[a-zA-Z][\w.]*\b(?s)/\*.*?\*/rp   rq   r   z(model|data)(\s+)(\{)zvar(?![\w.])rr   rs   rt   namesru   rv   rw   z&\+|-|\*|\/|\|\|[&]{2}|[<>=]=?|\^|%.*?%rx   )r   r   rq   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~   r0   r0   r1   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
   r.   r   ZDeclarationr-   r   r,   r   r	   r/   r   r0   r0   r0   r1   r      sN   +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*.stanro   r   z	(//|#).*$z"[^"]*"rq   r   z(%s)(\s*)(\{)rt   )Z	functionsdataztransformed\s+?dataZ
parametersztransformed\s+parametersZmodelzgenerated\s+quantitiesz(%s)\bz
T(?=\s*\[)z[;:,\[\]()]rs   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]+rw   z/\+|-|\.?\*|\.?/|\\|'|\^|==?|!=?|<=?|>=?|\|\||&&rx   ry   c                 C   s   t d| t jrdS dS d S )Nz^\s*parameters\s*\{g      ?rz   r{   r~   r0   r0   r1   r   b  s    zStanLexer.analyse_textN)$r   r   r   r   r   r    r!   r   r   r(   r'   r   r   r   r   r
   r.   r   r   ZKEYWORDSZTYPESZTypeZ	FUNCTIONSZDISTRIBUTIONSr   r,   ZPseudoZRESERVEDr-   ZFunctionr   r*   r+   r	   r/   r   r0   r0   r0   r1   r     sR   	
9)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   r0   r0   r0   r1   <module>   s   
(K`X