UNPKG

@wooorm/starry-night

Version:
245 lines (242 loc) 17 kB
// This is a TextMate grammar distributed by `starry-night`. // This grammar is developed at // <https://github.com/stan-dev/atom-language-stan> // and licensed `mit`. // See <https://github.com/wooorm/starry-night> for more info. /** * @import {Grammar} from '@wooorm/starry-night' */ /** @type {Grammar} */ const grammar = { extensions: ['.stan'], names: ['stan'], patterns: [ { captures: {1: {name: 'entity.name.type.stan'}}, match: '\\b(functions|data|transformed\\s+data|parameters|transformed\\s+parameters|model|generated\\s+quantities)\\b\\s*\\{' }, {include: '#comments'}, {include: '#strings'}, {include: '#numbers'}, {include: '#types'}, {include: '#keywords'}, {include: '#distributions'}, {include: '#functions'}, {include: '#variables'}, {include: '#operators'}, {include: '#punctuation'} ], repository: { comments: { patterns: [ { begin: '^\\s*((#)\\s*(include))\\b\\s*', beginCaptures: { 1: {name: 'keyword.control.directive.include.stan'}, 2: {name: 'punctuation.definition.directive.stan'} }, end: '\\s*(?=(?://|/\\*|#)|\\n|$)', name: 'meta.preprocessor.include.stan', patterns: [ { begin: '["<]?', beginCaptures: { 0: {name: 'punctuation.definition.string.begin.stan'} }, end: '[">]?\\s', endCaptures: { 0: {name: 'punctuation.definition.string.end.stan'} }, name: 'string.quoted.double.include.stan' } ] }, { begin: '/\\*\\*(?!/)', captures: {0: {name: 'punctuation.definition.comment.stan'}}, end: '\\*/', name: 'comment.block.documentation.stan', patterns: [{include: '#docblock'}] }, { begin: '/\\*', beginCaptures: {0: {name: 'punctuation.definition.comment.stan'}}, end: '\\*/', endCaptures: {0: {name: 'punctuation.definition.comment.stan'}}, name: 'comment.block.stan' }, { begin: '//', beginCaptures: {0: {name: 'punctuation.definition.comment.stan'}}, end: '\\n', name: 'comment.line.double-slash.stan' }, { begin: '#', beginCaptures: {0: {name: 'punctuation.definition.comment.stan'}}, end: '\\n', name: 'comment.line.number-sign.stan' } ] }, distributions: { patterns: [ { captures: { 1: {name: 'keyword.operator.sampling.stan'}, 3: {name: 'support.function.distribution.stan'} }, match: '(~)(\\s*)(bernoulli|bernoulli_logit|bernoulli_logit_glm|beta|beta_binomial|beta_neg_binomial|binomial|binomial_logit|binomial_logit_glm|categorical|categorical_logit|categorical_logit_glm|cauchy|chi_square|dirichlet|dirichlet_multinomial|discrete_range|double_exponential|exp_mod_normal|exponential|frechet|gamma|gaussian_dlm_obs|gumbel|hypergeometric|inv_chi_square|inv_gamma|inv_wishart|inv_wishart_cholesky|lkj_corr|lkj_corr_cholesky|logistic|loglogistic|lognormal|multi_gp|multi_gp_cholesky|multi_normal|multi_normal_cholesky|multi_normal_prec|multi_student_t|multi_student_t_cholesky|multinomial|multinomial_logit|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|student_t|uniform|von_mises|weibull|wiener|wishart|wishart_cholesky)\\b' } ] }, docblock: { patterns: [ { match: '(?<!\\w)@(param|return)\\b', name: 'storage.type.class.standoc' } ] }, functions: { patterns: [ { match: '\\b([A-Za-z0-9][A-Za-z0-9_]*_log|binomial_coefficient_log|fabs|get_lp|if_else|increment_log_prob|integrate_ode[A-Za-z0-9_]*|lkj_cov_lpdf|multiply_log)\\b\\s*\\(', name: 'invalid.deprecated.function.stan' }, { match: '\\b(Phi|Phi_approx|abs|acos|acosh|add_diag|algebra_solver|algebra_solver_newton|append_array|append_col|append_row|arg|asin|asinh|atan|atan2|atanh|bernoulli_cdf|bernoulli_lccdf|bernoulli_lcdf|bernoulli_logit_glm_lpmf|bernoulli_logit_glm_lupmf|bernoulli_logit_glm_rng|bernoulli_logit_lpmf|bernoulli_logit_lupmf|bernoulli_logit_rng|bernoulli_lpmf|bernoulli_lupmf|bernoulli_rng|bessel_first_kind|bessel_second_kind|beta|beta_binomial_cdf|beta_binomial_lccdf|beta_binomial_lcdf|beta_binomial_lpmf|beta_binomial_lupmf|beta_binomial_rng|beta_cdf|beta_lccdf|beta_lcdf|beta_lpdf|beta_lupdf|beta_neg_binomial_cdf|beta_neg_binomial_lccdf|beta_neg_binomial_lcdf|beta_neg_binomial_lpmf|beta_neg_binomial_lupmf|beta_neg_binomial_rng|beta_proportion_lccdf|beta_proportion_lcdf|beta_proportion_rng|beta_rng|binary_log_loss|binomial_cdf|binomial_lccdf|binomial_lcdf|binomial_logit_glm_lpmf|binomial_logit_glm_lupmf|binomial_logit_lpmf|binomial_logit_lupmf|binomial_lpmf|binomial_lupmf|binomial_rng|block|categorical_logit_glm_lpmf|categorical_logit_glm_lupmf|categorical_logit_lpmf|categorical_logit_lupmf|categorical_logit_rng|categorical_lpmf|categorical_lupmf|categorical_rng|cauchy_cdf|cauchy_lccdf|cauchy_lcdf|cauchy_lpdf|cauchy_lupdf|cauchy_rng|cbrt|ceil|chi_square_cdf|chi_square_lccdf|chi_square_lcdf|chi_square_lpdf|chi_square_lupdf|chi_square_rng|chol2inv|cholesky_decompose|choose|col|cols|columns_dot_product|columns_dot_self|complex_schur_decompose|complex_schur_decompose_t|complex_schur_decompose_u|conj|cos|cosh|cov_exp_quad|crossprod|csr_extract|csr_extract_u|csr_extract_v|csr_extract_w|csr_matrix_times_vector|csr_to_dense_matrix|cumulative_sum|dae|dae_tol|determinant|diag_matrix|diag_post_multiply|diag_pre_multiply|diagonal|digamma|dims|dirichlet_lpdf|dirichlet_lupdf|dirichlet_multinomial_lpmf|dirichlet_multinomial_lupmf|dirichlet_multinomial_rng|dirichlet_rng|discrete_range_cdf|discrete_range_lccdf|discrete_range_lcdf|discrete_range_lpmf|discrete_range_lupmf|discrete_range_rng|distance|dot_product|dot_self|double_exponential_cdf|double_exponential_lccdf|double_exponential_lcdf|double_exponential_lpdf|double_exponential_lupdf|double_exponential_rng|e|eigendecompose|eigendecompose_sym|eigenvalues|eigenvalues_sym|eigenvectors|eigenvectors_sym|erf|erfc|exp|exp2|exp_mod_normal_cdf|exp_mod_normal_lccdf|exp_mod_normal_lcdf|exp_mod_normal_lpdf|exp_mod_normal_lupdf|exp_mod_normal_rng|expm1|exponential_cdf|exponential_lccdf|exponential_lcdf|exponential_lpdf|exponential_lupdf|exponential_rng|falling_factorial|fdim|fft|fft2|floor|fma|fmax|fmin|fmod|frechet_cdf|frechet_lccdf|frechet_lcdf|frechet_lpdf|frechet_lupdf|frechet_rng|gamma_cdf|gamma_lccdf|gamma_lcdf|gamma_lpdf|gamma_lupdf|gamma_p|gamma_q|gamma_rng|gaussian_dlm_obs_lpdf|gaussian_dlm_obs_lupdf|generalized_inverse|get_imag|get_real|gumbel_cdf|gumbel_lccdf|gumbel_lcdf|gumbel_lpdf|gumbel_lupdf|gumbel_rng|head|hmm_hidden_state_prob|hmm_latent_rng|hmm_marginal|hypergeometric_lpmf|hypergeometric_lupmf|hypergeometric_rng|hypot|identity_matrix|inc_beta|int_step|integrate_1d|integrate_ode|integrate_ode_adams|integrate_ode_bdf|integrate_ode_rk45|inv|inv_Phi|inv_chi_square_cdf|inv_chi_square_lccdf|inv_chi_square_lcdf|inv_chi_square_lpdf|inv_chi_square_lupdf|inv_chi_square_rng|inv_cloglog|inv_erfc|inv_fft|inv_fft2|inv_gamma_cdf|inv_gamma_lccdf|inv_gamma_lcdf|inv_gamma_lpdf|inv_gamma_lupdf|inv_gamma_rng|inv_inc_beta|inv_logit|inv_sqrt|inv_square|inv_wishart_cholesky_lpdf|inv_wishart_cholesky_lupdf|inv_wishart_cholesky_rng|inv_wishart_lpdf|inv_wishart_lupdf|inv_wishart_rng|inverse|inverse_spd|is_inf|is_nan|lambert_w0|lambert_wm1|lbeta|lchoose|ldexp|lgamma|linspaced_array|linspaced_int_array|linspaced_row_vector|linspaced_vector|lkj_corr_cholesky_lpdf|lkj_corr_cholesky_lupdf|lkj_corr_cholesky_rng|lkj_corr_lpdf|lkj_corr_lupdf|lkj_corr_rng|lmgamma|lmultiply|log|log10|log1m|log1m_exp|log1m_inv_logit|log1p|log1p_exp|log2|log_determinant|log_diff_exp|log_falling_factorial|log_inv_logit|log_inv_logit_diff|log_mix|log_modified_bessel_first_kind|log_rising_factorial|log_softmax|log_sum_exp|logistic_cdf|logistic_lccdf|logistic_lcdf|logistic_lpdf|logistic_lupdf|logistic_rng|logit|loglogistic_cdf|loglogistic_lpdf|loglogistic_rng|lognormal_cdf|lognormal_lccdf|lognormal_lcdf|lognormal_lpdf|lognormal_lupdf|lognormal_rng|machine_precision|map_rect|matrix_exp|matrix_exp_multiply|matrix_power|max|mdivide_left_spd|mdivide_left_tri_low|mdivide_right_spd|mdivide_right_tri_low|mean|min|modified_bessel_first_kind|modified_bessel_second_kind|multi_gp_cholesky_lpdf|multi_gp_cholesky_lupdf|multi_gp_lpdf|multi_gp_lupdf|multi_normal_cholesky_lpdf|multi_normal_cholesky_lupdf|multi_normal_cholesky_rng|multi_normal_lpdf|multi_normal_lupdf|multi_normal_prec_lpdf|multi_normal_prec_lupdf|multi_normal_rng|multi_student_cholesky_t_rng|multi_student_t_cholesky_lpdf|multi_student_t_cholesky_lupdf|multi_student_t_cholesky_rng|multi_student_t_lpdf|multi_student_t_lupdf|multi_student_t_rng|multinomial_logit_lpmf|multinomial_logit_lupmf|multinomial_logit_rng|multinomial_lpmf|multinomial_lupmf|multinomial_rng|multiply_lower_tri_self_transpose|neg_binomial_2_cdf|neg_binomial_2_lccdf|neg_binomial_2_lcdf|neg_binomial_2_log_glm_lpmf|neg_binomial_2_log_glm_lupmf|neg_binomial_2_log_lpmf|neg_binomial_2_log_lupmf|neg_binomial_2_log_rng|neg_binomial_2_lpmf|neg_binomial_2_lupmf|neg_binomial_2_rng|neg_binomial_cdf|neg_binomial_lccdf|neg_binomial_lcdf|neg_binomial_lpmf|neg_binomial_lupmf|neg_binomial_rng|negative_infinity|norm|norm1|norm2|normal_cdf|normal_id_glm_lpdf|normal_id_glm_lupdf|normal_lccdf|normal_lcdf|normal_lpdf|normal_lupdf|normal_rng|not_a_number|num_elements|ode_adams|ode_adams_tol|ode_adjoint_tol_ctl|ode_bdf|ode_bdf_tol|ode_ckrk|ode_ckrk_tol|ode_rk45|ode_rk45_tol|one_hot_array|one_hot_int_array|one_hot_row_vector|one_hot_vector|ones_array|ones_int_array|ones_row_vector|ones_vector|ordered_logistic_glm_lpmf|ordered_logistic_glm_lupmf|ordered_logistic_lpmf|ordered_logistic_lupmf|ordered_logistic_rng|ordered_probit_lpmf|ordered_probit_lupmf|ordered_probit_rng|owens_t|pareto_cdf|pareto_lccdf|pareto_lcdf|pareto_lpdf|pareto_lupdf|pareto_rng|pareto_type_2_cdf|pareto_type_2_lccdf|pareto_type_2_lcdf|pareto_type_2_lpdf|pareto_type_2_lupdf|pareto_type_2_rng|pi|poisson_cdf|poisson_lccdf|poisson_lcdf|poisson_log_glm_lpmf|poisson_log_glm_lupmf|poisson_log_lpmf|poisson_log_lupmf|poisson_log_rng|poisson_lpmf|poisson_lupmf|poisson_rng|polar|positive_infinity|pow|prod|proj|qr|qr_Q|qr_R|qr_thin|qr_thin_Q|qr_thin_R|quad_form|quad_form_diag|quad_form_sym|quantile|rank|rayleigh_cdf|rayleigh_lccdf|rayleigh_lcdf|rayleigh_lpdf|rayleigh_lupdf|rayleigh_rng|reduce_sum|rep_array|rep_matrix|rep_row_vector|rep_vector|reverse|rising_factorial|round|row|rows|rows_dot_product|rows_dot_self|scale_matrix_exp_multiply|scaled_inv_chi_square_cdf|scaled_inv_chi_square_lccdf|scaled_inv_chi_square_lcdf|scaled_inv_chi_square_lpdf|scaled_inv_chi_square_lupdf|scaled_inv_chi_square_rng|sd|segment|sin|singular_values|sinh|size|skew_double_exponential_cdf|skew_double_exponential_lccdf|skew_double_exponential_lcdf|skew_double_exponential_lpdf|skew_double_exponential_lupdf|skew_double_exponential_rng|skew_normal_cdf|skew_normal_lccdf|skew_normal_lcdf|skew_normal_lpdf|skew_normal_lupdf|skew_normal_rng|softmax|sort_asc|sort_desc|sort_indices_asc|sort_indices_desc|sqrt|sqrt2|square|squared_distance|std_normal_cdf|std_normal_lccdf|std_normal_lcdf|std_normal_log_qf|std_normal_lpdf|std_normal_lupdf|std_normal_qf|std_normal_rng|step|student_t_cdf|student_t_lccdf|student_t_lcdf|student_t_lpdf|student_t_lupdf|student_t_rng|sub_col|sub_row|sum|svd|svd_U|svd_V|symmetrize_from_lower_tri|tail|tan|tanh|target|tcrossprod|tgamma|to_array_1d|to_array_2d|to_complex|to_int|to_matrix|to_row_vector|to_vector|trace|trace_gen_quad_form|trace_quad_form|trigamma|trunc|uniform_cdf|uniform_lccdf|uniform_lcdf|uniform_lpdf|uniform_lupdf|uniform_rng|uniform_simplex|variance|von_mises_cdf|von_mises_lccdf|von_mises_lcdf|von_mises_lpdf|von_mises_lupdf|von_mises_rng|weibull_cdf|weibull_lccdf|weibull_lcdf|weibull_lpdf|weibull_lupdf|weibull_rng|wiener_lpdf|wiener_lupdf|wishart_cholesky_lpdf|wishart_cholesky_lupdf|wishart_cholesky_rng|wishart_lpdf|wishart_lupdf|wishart_rng|zeros_array|zeros_int_array|zeros_row_vector)\\b\\s*\\(', name: 'support.function.function.stan' } ] }, keywords: { patterns: [ {match: '\\b(for|in|while|if|else)\\b', name: 'keyword.control.stan'}, { captures: { 1: {name: 'keyword.other.transform.stan'}, 2: {name: 'punctuation.operator.equal.stan'} }, match: '\\b(lower|upper|offset|multiplier)\\s*(=)' }, {match: '\\breturn\\b', name: 'keyword.other.return.stan'}, { captures: { 1: {name: 'keyword.other.target.stan'}, 2: {name: 'keyword.operator.accumulator.stan'} }, match: '\\b(target|jacobian)\\s*([+][=])' }, { match: '\\b(print|reject|target|fatal_error)\\b', name: 'keyword.other.special-functions.stan' }, {match: '\\bT(?=\\s*\\[)', name: 'keyword.other.truncation.stan'} ] }, numbers: { patterns: [ { match: '(?x)\n(\n[0-9]+\\.[0-9]*([eE][+-]?[0-9]+)?\n|\n\\.[0-9]+([eE][+-]?[0-9]+)?\n|\n[0-9]+[eE][+-]?[0-9]+i\n)i', name: 'constant.numeric.complex.stan' }, { match: '(?x)\n(\n[0-9]+\\.[0-9]*([eE][+-]?[0-9]+)?\n|\n\\.[0-9]+([eE][+-]?[0-9]+)?\n|\n[0-9]+[eE][+-]?[0-9]+\n)', name: 'constant.numeric.real.stan' }, { match: '[0-9]+(_ [0-9]+)*(?=[^A-Za-z])', name: 'constant.numeric.integer.stan' } ] }, operators: { patterns: [ {match: '<-', name: 'invalid.deprecated.assignment.stan'}, {match: ':', name: 'keyword.operator.colon.stan'}, {match: '~', name: 'keyword.operator.sampling.stan'}, {match: '[?]', name: 'keyword.operator.conditional.stan'}, {match: '[|]{2}|&&', name: 'keyword.operator.logical.stan'}, {match: '==|!=|<=?|>=?', name: 'keyword.operator.comparison.stan'}, {match: '!', name: 'keyword.operator.logical.stan'}, { match: "\\+|-|\\.?\\*|\\.?/|%|\\\\|\\^|'", name: 'keyword.operator.arithmetic.stan' }, {match: '[+-]=|\\.?[*/]=|=', name: 'keyword.operator.assignment.stan'}, { match: "\\+|-|\\.?\\*|\\.?/|%|\\\\|\\^|'", name: 'keyword.operator.arithmetic.stan' } ] }, punctuation: { patterns: [ {match: ',', name: 'meta.delimiter.comma.stan'}, { begin: '{', beginCaptures: {0: {name: 'punctuation.section.block.begin.stan'}}, end: '}', endCaptures: {0: {name: 'punctuation.section.block.end.stan'}}, patterns: [{include: '$base'}] }, {match: '[{}]', name: 'meta.brace.curly.stan'}, {match: '\\[|\\]', name: 'meta.brace.square.stan'}, {match: '\\(|\\)', name: 'meta.brace.round.stan'}, {match: '\\;', name: 'punctuation.terminator.statement.stan'}, {match: '[|]', name: 'punctuation.sampling.bar.stan'} ] }, strings: { patterns: [ { begin: '"', beginCaptures: { 0: {name: 'punctuation.definition.string.begin.stan'} }, end: '"', endCaptures: {0: {name: 'punctuation.definition.string.end.stan'}}, name: 'string.quoted.double.stan', patterns: [ { match: '[^ a-zA-Z0-9~@#$%^&*_\'`\\-+={}\\[\\]()<>|/!?.,;:"]+', name: 'invalid.illegal.string.stan' } ] } ] }, types: { patterns: [ { match: '\\b(int|real|data|complex|array|tuple|vector|simplex|unit_vector|sum_to_zero_vector|ordered|positive_ordered|row_vector|matrix|complex_vector|complex_matrix|complex_row_vector|corr_matrix|cov_matrix|cholesky_factor_cov|cholesky_factor_corr|column_stochastic_matrix|row_stochastic_matrix|void)\\b', name: 'storage.type.stan' } ] }, variables: { patterns: [ { match: '\\b(for|in|while|repeat|until|if|then|else|true|false|var|struct|typedef|export|auto|extern|var|static)\\b', name: 'invalid.illegal.reserved.stan' }, { match: '\\b([a-zA-Z0-9_]*__|[0-9_][A-Za-z0-9_]+|_)\\b', name: 'invalid.illegal.variable' }, {match: '\\b[A-Za-z][0-9A-Za-z_]*\\b'} ] } }, scopeName: 'source.stan' } export default grammar