mindoc/static/editor.md/lib/highlight/languages/stan.js

90 lines
3.0 KiB
Go

/*
Language: Stan
Author: Brendan Rocks <rocks.brendan@gmail.com>
Category: scientific
Description: The Stan probabilistic programming language (http://mc-stan.org/).
*/
function(hljs) {
return {
contains: [
hljs.HASH_COMMENT_MODE,
hljs.C_LINE_COMMENT_MODE,
hljs.C_BLOCK_COMMENT_MODE,
{
begin: hljs.UNDERSCORE_IDENT_RE,
lexemes: hljs.UNDERSCORE_IDENT_RE,
keywords: {
// Stan's keywords
name:
'for in while repeat until if then else',
// Stan's probablity distributions (less beta and gamma, as commonly
// used for parameter names). So far, _log and _rng variants are not
// included
symbol:
'bernoulli bernoulli_logit binomial binomial_logit ' +
'beta_binomial hypergeometric categorical categorical_logit ' +
'ordered_logistic neg_binomial neg_binomial_2 ' +
'neg_binomial_2_log poisson poisson_log multinomial normal ' +
'exp_mod_normal skew_normal student_t cauchy double_exponential ' +
'logistic gumbel lognormal chi_square inv_chi_square ' +
'scaled_inv_chi_square exponential inv_gamma weibull frechet ' +
'rayleigh wiener pareto pareto_type_2 von_mises uniform ' +
'multi_normal multi_normal_prec multi_normal_cholesky multi_gp ' +
'multi_gp_cholesky multi_student_t gaussian_dlm_obs dirichlet ' +
'lkj_corr lkj_corr_cholesky wishart inv_wishart',
// Stan's data types
'selector-tag':
'int real vector simplex unit_vector ordered positive_ordered ' +
'row_vector matrix cholesky_factor_corr cholesky_factor_cov ' +
'corr_matrix cov_matrix',
// Stan's model blocks
title:
'functions model data parameters quantities transformed ' +
'generated',
literal:
'true false'
},
relevance: 0
},
// The below is all taken from the R language definition
{
// hex value
className: 'number',
begin: "0[xX][0-9a-fA-F]+[Li]?\\b",
relevance: 0
},
{
// hex value
className: 'number',
begin: "0[xX][0-9a-fA-F]+[Li]?\\b",
relevance: 0
},
{
// explicit integer
className: 'number',
begin: "\\d+(?:[eE][+\\-]?\\d*)?L\\b",
relevance: 0
},
{
// number with trailing decimal
className: 'number',
begin: "\\d+\\.(?!\\d)(?:i\\b)?",
relevance: 0
},
{
// number
className: 'number',
begin: "\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",
relevance: 0
},
{
// number with leading decimal
className: 'number',
begin: "\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",
relevance: 0
}
]
};
}