stan function
Highlight.js language definition for stan.
Implementation
Mode stan(Highlight hljs) {
final Mode mode0 = Mode();
final Mode mode1 = Mode();
final Mode mode2 = Mode();
mode0.scope = r'comment';
mode0.begin = r'//';
mode0.end = r'$';
mode0.contains = [mode1, mode2];
mode1.scope = r'doctag';
mode1.begin = r'[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)';
mode1.end = r'(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):';
mode1.excludeBegin = true;
mode1.relevance = 0;
mode2.begin =
r"[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}";
return Mode(
name: r'Stan',
aliases: [r'stanfuncs'],
keywords: {
r'$pattern': r'[a-zA-Z]\w*',
r'title': [
r'functions',
r'model',
r'data',
r'parameters',
r'quantities',
r'transformed',
r'generated',
],
r'type': [
r'array',
r'tuple',
r'complex',
r'int',
r'real',
r'vector',
r'complex_vector',
r'ordered',
r'positive_ordered',
r'simplex',
r'unit_vector',
r'row_vector',
r'complex_row_vector',
r'matrix',
r'complex_matrix',
r'cholesky_factor_corr|10',
r'cholesky_factor_cov|10',
r'corr_matrix|10',
r'cov_matrix|10',
r'void',
],
r'keyword': [
r'for',
r'in',
r'if',
r'else',
r'while',
r'break',
r'continue',
r'return',
],
r'built_in': [
r'abs',
r'acos',
r'acosh',
r'add_diag',
r'algebra_solver',
r'algebra_solver_newton',
r'append_array',
r'append_col',
r'append_row',
r'asin',
r'asinh',
r'atan',
r'atan2',
r'atanh',
r'bessel_first_kind',
r'bessel_second_kind',
r'binary_log_loss',
r'block',
r'cbrt',
r'ceil',
r'chol2inv',
r'cholesky_decompose',
r'choose',
r'col',
r'cols',
r'columns_dot_product',
r'columns_dot_self',
r'complex_schur_decompose',
r'complex_schur_decompose_t',
r'complex_schur_decompose_u',
r'conj',
r'cos',
r'cosh',
r'cov_exp_quad',
r'crossprod',
r'csr_extract',
r'csr_extract_u',
r'csr_extract_v',
r'csr_extract_w',
r'csr_matrix_times_vector',
r'csr_to_dense_matrix',
r'cumulative_sum',
r'dae',
r'dae_tol',
r'determinant',
r'diag_matrix',
r'diagonal',
r'diag_post_multiply',
r'diag_pre_multiply',
r'digamma',
r'dims',
r'distance',
r'dot_product',
r'dot_self',
r'eigendecompose',
r'eigendecompose_sym',
r'eigenvalues',
r'eigenvalues_sym',
r'eigenvectors',
r'eigenvectors_sym',
r'erf',
r'erfc',
r'exp',
r'exp2',
r'expm1',
r'falling_factorial',
r'fdim',
r'fft',
r'fft2',
r'floor',
r'fma',
r'fmax',
r'fmin',
r'fmod',
r'gamma_p',
r'gamma_q',
r'generalized_inverse',
r'get_imag',
r'get_real',
r'head',
r'hmm_hidden_state_prob',
r'hmm_marginal',
r'hypot',
r'identity_matrix',
r'inc_beta',
r'integrate_1d',
r'integrate_ode',
r'integrate_ode_adams',
r'integrate_ode_bdf',
r'integrate_ode_rk45',
r'int_step',
r'inv',
r'inv_cloglog',
r'inv_erfc',
r'inverse',
r'inverse_spd',
r'inv_fft',
r'inv_fft2',
r'inv_inc_beta',
r'inv_logit',
r'inv_Phi',
r'inv_sqrt',
r'inv_square',
r'is_inf',
r'is_nan',
r'lambert_w0',
r'lambert_wm1',
r'lbeta',
r'lchoose',
r'ldexp',
r'lgamma',
r'linspaced_array',
r'linspaced_int_array',
r'linspaced_row_vector',
r'linspaced_vector',
r'lmgamma',
r'lmultiply',
r'log',
r'log1m',
r'log1m_exp',
r'log1m_inv_logit',
r'log1p',
r'log1p_exp',
r'log_determinant',
r'log_diff_exp',
r'log_falling_factorial',
r'log_inv_logit',
r'log_inv_logit_diff',
r'logit',
r'log_mix',
r'log_modified_bessel_first_kind',
r'log_rising_factorial',
r'log_softmax',
r'log_sum_exp',
r'machine_precision',
r'map_rect',
r'matrix_exp',
r'matrix_exp_multiply',
r'matrix_power',
r'max',
r'mdivide_left_spd',
r'mdivide_left_tri_low',
r'mdivide_right_spd',
r'mdivide_right_tri_low',
r'mean',
r'min',
r'modified_bessel_first_kind',
r'modified_bessel_second_kind',
r'multiply_lower_tri_self_transpose',
r'negative_infinity',
r'norm',
r'norm1',
r'norm2',
r'not_a_number',
r'num_elements',
r'ode_adams',
r'ode_adams_tol',
r'ode_adjoint_tol_ctl',
r'ode_bdf',
r'ode_bdf_tol',
r'ode_ckrk',
r'ode_ckrk_tol',
r'ode_rk45',
r'ode_rk45_tol',
r'one_hot_array',
r'one_hot_int_array',
r'one_hot_row_vector',
r'one_hot_vector',
r'ones_array',
r'ones_int_array',
r'ones_row_vector',
r'ones_vector',
r'owens_t',
r'Phi',
r'Phi_approx',
r'polar',
r'positive_infinity',
r'pow',
r'print',
r'prod',
r'proj',
r'qr',
r'qr_Q',
r'qr_R',
r'qr_thin',
r'qr_thin_Q',
r'qr_thin_R',
r'quad_form',
r'quad_form_diag',
r'quad_form_sym',
r'quantile',
r'rank',
r'reduce_sum',
r'reject',
r'rep_array',
r'rep_matrix',
r'rep_row_vector',
r'rep_vector',
r'reverse',
r'rising_factorial',
r'round',
r'row',
r'rows',
r'rows_dot_product',
r'rows_dot_self',
r'scale_matrix_exp_multiply',
r'sd',
r'segment',
r'sin',
r'singular_values',
r'sinh',
r'size',
r'softmax',
r'sort_asc',
r'sort_desc',
r'sort_indices_asc',
r'sort_indices_desc',
r'sqrt',
r'square',
r'squared_distance',
r'step',
r'sub_col',
r'sub_row',
r'sum',
r'svd',
r'svd_U',
r'svd_V',
r'symmetrize_from_lower_tri',
r'tail',
r'tan',
r'tanh',
r'target',
r'tcrossprod',
r'tgamma',
r'to_array_1d',
r'to_array_2d',
r'to_complex',
r'to_int',
r'to_matrix',
r'to_row_vector',
r'to_vector',
r'trace',
r'trace_gen_quad_form',
r'trace_quad_form',
r'trigamma',
r'trunc',
r'uniform_simplex',
r'variance',
r'zeros_array',
r'zeros_int_array',
r'zeros_row_vector',
],
},
contains: [
mode0,
Mode(
scope: r'meta',
begin: r'#include\b',
end: r'$',
contains: [
Mode(match: r'[a-z][a-z-._]+', scope: r'string'),
mode0,
],
),
Mode(
scope: r'comment',
begin: r'#',
end: r'$',
contains: [
Mode(
scope: r'doctag',
begin: r'[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)',
end: r'(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):',
excludeBegin: true,
relevance: 0,
),
Mode(
begin:
r"[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}",
),
],
),
Mode(
scope: r'comment',
begin: r'\/\*',
end: r'\*\/',
contains: [
Mode(scope: r'doctag', match: r'@(return|param)'),
Mode(
scope: r'doctag',
begin: r'[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)',
end: r'(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):',
excludeBegin: true,
relevance: 0,
),
Mode(
begin:
r"[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}",
),
],
relevance: 0,
),
Mode(
scope: r'built_in',
match: r'\s(pi|e|sqrt2|log2|log10)(?=\()',
relevance: 0,
),
Mode(
match: r'[<,]\s*(?:lower|upper|offset|multiplier)\s*=',
keywords: [r'lower', r'upper', r'offset', r'multiplier'],
),
Mode(scope: r'keyword', match: r'\btarget(?=\s*\+=)'),
Mode(
match: [
r'~\s*',
r'(?:bernoulli|bernoulli_logit|bernoulli_logit_glm|beta|beta_binomial|beta_proportion|binomial|binomial_logit|categorical|categorical_logit|categorical_logit_glm|cauchy|chi_square|dirichlet|discrete_range|double_exponential|exp_mod_normal|exponential|frechet|gamma|gaussian_dlm_obs|gumbel|hmm_latent|hypergeometric|inv_chi_square|inv_gamma|inv_wishart|inv_wishart_cholesky|lkj_corr|lkj_corr_cholesky|logistic|loglogistic|lognormal|multi_gp|multi_gp_cholesky|multinomial|multinomial_logit|multi_normal|multi_normal_cholesky|multi_normal_prec|multi_student_cholesky_t|multi_student_t|multi_student_t_cholesky|neg_binomial|neg_binomial_2|neg_binomial_2_log|neg_binomial_2_log_glm|normal|normal_id_glm|ordered_logistic|ordered_logistic_glm|ordered_probit|pareto|pareto_type_2|poisson|poisson_log|poisson_log_glm|rayleigh|scaled_inv_chi_square|skew_double_exponential|skew_normal|std_normal|std_normal_log|student_t|uniform|von_mises|weibull|wiener|wishart|wishart_cholesky)',
r'(?:\(\))',
r'\s*T(?=\s*\[)',
],
scope: {2: r'built_in', 4: r'keyword'},
),
Mode(
scope: r'built_in',
keywords: [
r'bernoulli',
r'bernoulli_logit',
r'bernoulli_logit_glm',
r'beta',
r'beta_binomial',
r'beta_proportion',
r'binomial',
r'binomial_logit',
r'categorical',
r'categorical_logit',
r'categorical_logit_glm',
r'cauchy',
r'chi_square',
r'dirichlet',
r'discrete_range',
r'double_exponential',
r'exp_mod_normal',
r'exponential',
r'frechet',
r'gamma',
r'gaussian_dlm_obs',
r'gumbel',
r'hmm_latent',
r'hypergeometric',
r'inv_chi_square',
r'inv_gamma',
r'inv_wishart',
r'inv_wishart_cholesky',
r'lkj_corr',
r'lkj_corr_cholesky',
r'logistic',
r'loglogistic',
r'lognormal',
r'multi_gp',
r'multi_gp_cholesky',
r'multinomial',
r'multinomial_logit',
r'multi_normal',
r'multi_normal_cholesky',
r'multi_normal_prec',
r'multi_student_cholesky_t',
r'multi_student_t',
r'multi_student_t_cholesky',
r'neg_binomial',
r'neg_binomial_2',
r'neg_binomial_2_log',
r'neg_binomial_2_log_glm',
r'normal',
r'normal_id_glm',
r'ordered_logistic',
r'ordered_logistic_glm',
r'ordered_probit',
r'pareto',
r'pareto_type_2',
r'poisson',
r'poisson_log',
r'poisson_log_glm',
r'rayleigh',
r'scaled_inv_chi_square',
r'skew_double_exponential',
r'skew_normal',
r'std_normal',
r'std_normal_log',
r'student_t',
r'uniform',
r'von_mises',
r'weibull',
r'wiener',
r'wishart',
r'wishart_cholesky',
],
begin:
r'\w*(?:bernoulli|bernoulli_logit|bernoulli_logit_glm|beta|beta_binomial|beta_proportion|binomial|binomial_logit|categorical|categorical_logit|categorical_logit_glm|cauchy|chi_square|dirichlet|discrete_range|double_exponential|exp_mod_normal|exponential|frechet|gamma|gaussian_dlm_obs|gumbel|hmm_latent|hypergeometric|inv_chi_square|inv_gamma|inv_wishart|inv_wishart_cholesky|lkj_corr|lkj_corr_cholesky|logistic|loglogistic|lognormal|multi_gp|multi_gp_cholesky|multinomial|multinomial_logit|multi_normal|multi_normal_cholesky|multi_normal_prec|multi_student_cholesky_t|multi_student_t|multi_student_t_cholesky|neg_binomial|neg_binomial_2|neg_binomial_2_log|neg_binomial_2_log_glm|normal|normal_id_glm|ordered_logistic|ordered_logistic_glm|ordered_probit|pareto|pareto_type_2|poisson|poisson_log|poisson_log_glm|rayleigh|scaled_inv_chi_square|skew_double_exponential|skew_normal|std_normal|std_normal_log|student_t|uniform|von_mises|weibull|wiener|wishart|wishart_cholesky)(_lpdf|_lupdf|_lpmf|_cdf|_lcdf|_lccdf|_qf)(?=\s*[\(.*\)])',
),
Mode(
begin: [
r'~',
r'\s*',
r'(?:bernoulli|bernoulli_logit|bernoulli_logit_glm|beta|beta_binomial|beta_proportion|binomial|binomial_logit|categorical|categorical_logit|categorical_logit_glm|cauchy|chi_square|dirichlet|discrete_range|double_exponential|exp_mod_normal|exponential|frechet|gamma|gaussian_dlm_obs|gumbel|hmm_latent|hypergeometric|inv_chi_square|inv_gamma|inv_wishart|inv_wishart_cholesky|lkj_corr|lkj_corr_cholesky|logistic|loglogistic|lognormal|multi_gp|multi_gp_cholesky|multinomial|multinomial_logit|multi_normal|multi_normal_cholesky|multi_normal_prec|multi_student_cholesky_t|multi_student_t|multi_student_t_cholesky|neg_binomial|neg_binomial_2|neg_binomial_2_log|neg_binomial_2_log_glm|normal|normal_id_glm|ordered_logistic|ordered_logistic_glm|ordered_probit|pareto|pareto_type_2|poisson|poisson_log|poisson_log_glm|rayleigh|scaled_inv_chi_square|skew_double_exponential|skew_normal|std_normal|std_normal_log|student_t|uniform|von_mises|weibull|wiener|wishart|wishart_cholesky)(?=\s*[\(.*\)])',
],
scope: {3: r'built_in'},
),
Mode(
begin: [
r'~',
r'\s*\w+(?=\s*[\(.*\)])',
r'(?!.*/((?:bernoulli|bernoulli_logit|bernoulli_logit_glm|beta|beta_binomial|beta_proportion|binomial|binomial_logit|categorical|categorical_logit|categorical_logit_glm|cauchy|chi_square|dirichlet|discrete_range|double_exponential|exp_mod_normal|exponential|frechet|gamma|gaussian_dlm_obs|gumbel|hmm_latent|hypergeometric|inv_chi_square|inv_gamma|inv_wishart|inv_wishart_cholesky|lkj_corr|lkj_corr_cholesky|logistic|loglogistic|lognormal|multi_gp|multi_gp_cholesky|multinomial|multinomial_logit|multi_normal|multi_normal_cholesky|multi_normal_prec|multi_student_cholesky_t|multi_student_t|multi_student_t_cholesky|neg_binomial|neg_binomial_2|neg_binomial_2_log|neg_binomial_2_log_glm|normal|normal_id_glm|ordered_logistic|ordered_logistic_glm|ordered_probit|pareto|pareto_type_2|poisson|poisson_log|poisson_log_glm|rayleigh|scaled_inv_chi_square|skew_double_exponential|skew_normal|std_normal|std_normal_log|student_t|uniform|von_mises|weibull|wiener|wishart|wishart_cholesky)))',
],
scope: {2: r'title.function'},
),
Mode(
scope: r'title.function',
begin: r'\w*(_lpdf|_lupdf|_lpmf|_cdf|_lcdf|_lccdf|_qf)(?=\s*[\(.*\)])',
),
Mode(
scope: r'number',
match:
r'(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:[eE][+-]?\d+(?:_\d+)*)?i?(?!\w)',
relevance: 0,
),
Mode(scope: r'string', begin: r'"', end: r'"'),
],
);
}