Warning, /frameworks/syntax-highlighting/autotests/input/highlight.stan is written in an unsupported language. File is not indexed.
0001 /* Stan Highlighting Example 0002 0003 This file contains a syntatically correct but nonsensical Stan program that 0004 includes almost every feature of the language needed to validate syntax 0005 highlighters. It will compile (as of Stan 2.17.1), but it does nothing 0006 useful. 0007 0008 Author: Jeffrey Arnold <jeffrey.anold@gmail.com> 0009 Copyright: Jeffrey Arnold (2018) 0010 License: MIT 0011 0012 */ 0013 // line comment 0014 # deprecated line comment 0015 functions { 0016 #include stuff.stan 0017 #include "morestuff.stan" 0018 #include 'moststuff.stan' 0019 #include <evenmorestuff.stan> 0020 0021 // declarations 0022 void oof(real x); 0023 0024 // definitions 0025 // return types 0026 void oof(real x) { 0027 print("print ", x); 0028 } 0029 /* 0030 @param x A number 0031 @return x + 1 0032 */ 0033 real foo(real x) { 0034 return x; 0035 } 0036 int bar(int x) { 0037 return x; 0038 } 0039 vector baz(vector x) { 0040 return x; 0041 } 0042 row_vector qux(row_vector x) { 0043 return x; 0044 } 0045 matrix quux(matrix x) { 0046 return x; 0047 } 0048 // numbers of arguments 0049 void corge() { 0050 print("no parameters"); 0051 } 0052 void grault(int a, real b, vector c, row_vector d, matrix f) { 0053 print("many parameters"); 0054 } 0055 void garply(real a, real[] b, real[,] c, real[,,] d) { 0056 print("array arguments"); 0057 } 0058 // array return types 0059 int[] waldo(int[] x) { 0060 return x; 0061 } 0062 int[,] fred(int[,] x) { 0063 return x; 0064 } 0065 int[,,] plough(int[,,] x) { 0066 return x; 0067 } 0068 // data only function argument 0069 real plugh(data real x) { 0070 return x; 0071 } 0072 // ode function 0073 real[] ode_func(real a, real[] b, real[] c, real[] d, int[] e) { 0074 return b; 0075 } 0076 } 0077 data { 0078 // non-int variable types 0079 int x_int; 0080 real x_real; 0081 real y_real; 0082 vector[1] x_vector; 0083 ordered[1] x_ordered; 0084 positive_ordered[1] x_positive_ordered; 0085 simplex[1] x_simplex; 0086 unit_vector[1] x_unit_vector; 0087 row_vector[1] x_row_vector; 0088 matrix[1, 1] x_matrix; 0089 cholesky_factor_corr[2] x_cholesky_factor_corr; 0090 cholesky_factor_cov[2] x_cholesky_factor_cov; 0091 cholesky_factor_cov[2, 3] x_cholesky_factor_cov_2; 0092 corr_matrix[2] x_corr_matrix; 0093 cov_matrix[2] x_cov_matrix; 0094 0095 // range constraints 0096 real<lower = 0., upper = 1.> alpha; 0097 real<lower = 0.> bravo; 0098 real<upper = 1.> charlie; 0099 0100 // arrays 0101 int echo[1]; 0102 int foxtrot[1, 1]; 0103 int golf[1, 1, 1]; 0104 0105 // identifier with all valid letters 0106 real abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789; 0107 0108 // hard pattern 0109 real<lower = (bravo < charlie), upper = (bravo > charlie)> ranger; 0110 0111 // identifier patterns 0112 real a; 0113 real a3; 0114 real a_3; 0115 real Sigma; 0116 real my_cpp_style_variable; 0117 real myCamelCaseVariable; 0118 real abcdefghijklmnojk; 0119 // names beginning with keywords 0120 real iffffff; 0121 real whilest; 0122 // name ending with truncation 0123 real fooT; 0124 0125 // new array syntax 0126 array [N] real foo_new; 0127 } 0128 0129 transformed data { 0130 // declaration and assignment 0131 int india = 1; 0132 real romeo = 1.0; 0133 row_vector[2] victor = [1, 2]; 0134 matrix[2, 2] mike = [[1, 2], [3, 4]]; 0135 real sierra[2] = {1., 2.}; 0136 complex zulu = 3+4.1i; 0137 } 0138 parameters { 0139 real hotel; 0140 real<offset = 0., multiplier = 1.> alpha; 0141 } 0142 transformed parameters { 0143 real juliette; 0144 juliette = hotel * 2.; 0145 } 0146 model { 0147 real x; 0148 int k; 0149 vector[2] y = [1., 1.]'; 0150 matrix[2, 2] A = [[1., 1.], [1., 1.]]; 0151 real odeout[2, 2]; 0152 real algout[2, 2]; 0153 0154 // if else statements 0155 if (x_real < 0) x = 0.; 0156 0157 if (x_real < 0) { 0158 x = 0.; 0159 } 0160 0161 if (x_real < 0) x = 0.; 0162 else x = 1.; 0163 0164 if (x_real < 0) { 0165 x = 0.; 0166 } else { 0167 x = 1.; 0168 } 0169 0170 if (x_real < 0) x = 0.; 0171 else if (x_real > 1) x = 1.; 0172 else x = 0.5; 0173 0174 if (x_real < 0) { 0175 x = 0.; 0176 } else if (x_real > 1) { 0177 x = 1.; 0178 } else { 0179 x = 0.5; 0180 } 0181 0182 // for loops 0183 for (i in 1:5) { 0184 print("i = ", i); 0185 } 0186 // for (j in echo) { 0187 // print("j = ", j); 0188 // } 0189 // while loop 0190 while (1) { 0191 break; 0192 continue; 0193 } 0194 0195 // reject statement 0196 reject("reject statment ", x_real); 0197 0198 // print statement 0199 print("print statement ", x_real); 0200 print("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_~@#$%^&*`'-+={}[].,;: "); 0201 0202 // increment log probability statements; 0203 target += 1.; 0204 0205 // valid integer literals 0206 k = 0; 0207 k = 1; 0208 k = -1; 0209 k = 256; 0210 k = -127098; 0211 k = 007; 0212 0213 // valid real literals 0214 x = 0.0; 0215 x = 1.0; 0216 x = 3.14; 0217 x = 003.14; 0218 x = -217.9387; 0219 x = 0.123; 0220 x = .123; 0221 x = 1.; 0222 x = -0.123; 0223 x = -.123; 0224 x = -1.; 0225 x = 12e34; 0226 x = 12E34; 0227 x = 12.e34; 0228 x = 12.E34; 0229 x = 12.0e34; 0230 x = 12.0E34; 0231 x = .1e34; 0232 x = .1E34; 0233 x = -12e34; 0234 x = -12E34; 0235 x = -12.e34; 0236 x = -12.E34; 0237 x = -12.0e34; 0238 x = -12.0E34; 0239 x = -.1e34; 0240 x = -.1E34; 0241 x = 12e-34; 0242 x = 12E-34; 0243 x = 12.e-34; 0244 x = 12.E-34; 0245 x = 12.0e-34; 0246 x = 12.0E-34; 0247 x = .1e-34; 0248 x = .1E-34; 0249 x = -12e-34; 0250 x = -12E-34; 0251 x = -12.e-34; 0252 x = -12.E-34; 0253 x = -12.0e-34; 0254 x = -12.0E-34; 0255 x = -.1e-34; 0256 x = -.1E-34; 0257 x = 12e+34; 0258 x = 12E+34; 0259 x = 12.e+34; 0260 x = 12.E+34; 0261 x = 12.0e+34; 0262 x = 12.0E+34; 0263 x = .1e+34; 0264 x = .1E+34; 0265 x = -12e+34; 0266 x = -12E+34; 0267 x = -12.e+34; 0268 x = -12.E+34; 0269 x = -12.0e+34; 0270 x = -12.0E+34; 0271 x = -.1e+34; 0272 x = -.1E+34; 0273 0274 // imaginary literals 0275 complex z = 3 + 3i; 0276 z = 2.3i; 0277 z = 3.4e10i; 0278 z = 0i; 0279 0280 // assignment statements 0281 x = 1; 0282 x += 1.; 0283 x -= 1.; 0284 x *= 1.; 0285 x /= 1.; 0286 y .*= x_vector; 0287 y ./= x_vector; 0288 0289 // operators 0290 x = x_real && 1; 0291 x = x_real || 1; 0292 x = x_real < 1.; 0293 x = x_real <= 1.; 0294 x = x_real > 1.; 0295 x = x_real >= 1.; 0296 x = x_real + 1.; 0297 x = x_real - 1.; 0298 x = x_real * 1.; 0299 x = x_real / 1.; 0300 x = x_real ^ 2.; 0301 x = x_real % 2; 0302 x = !x_real; 0303 x = +x_real; 0304 x = -x_real; 0305 x = x_int ? x_real : 0.; 0306 0307 y = x_row_vector'; 0308 y = x_matrix \ x_vector; 0309 y = x_vector .* x_vector; 0310 y = x_vector ./ x_vector; 0311 0312 // parenthized expression 0313 x = (x_real + x_real); 0314 0315 // block statement 0316 { 0317 real z; 0318 z = 1.; 0319 } 0320 0321 profile("profile-test") { 0322 real z; 0323 z = 1.; 0324 } 0325 // built-in functions 0326 x = log(1.); 0327 x = exp(1.); 0328 0329 // non-built-in function 0330 x = foo(1.); 0331 0332 // constants and nullary functions 0333 x = machine_precision(); 0334 x = pi(); 0335 x = e(); 0336 x = sqrt2(); 0337 x = log2(); 0338 x = log10(); 0339 // special values 0340 x = not_a_number(); 0341 x = positive_infinity(); 0342 x = negative_infinity(); 0343 x = machine_precision(); 0344 // log probability 0345 x = target(); 0346 0347 // sampling statement 0348 x_real ~ normal(0., 1.); 0349 0350 // truncation 0351 x_real ~ normal(0., 1.) T[-1., 1.]; 0352 x_real ~ normal(0., 1.) T[, 1.]; 0353 x_real ~ normal(0., 1.) T[-1., ]; 0354 x_real ~ normal(0., 1.) T[ , ]; 0355 0356 // transformation on lhs of sampling 0357 log(x_real) ~ normal(0., 1.); 0358 0359 // lhs indexes 0360 y[1] = 1.; 0361 A[1, 2] = 1.; 0362 A[1][2] = 1.; 0363 0364 // special functions 0365 odeout = integrate_ode(ode_func, {1.}, x_real, {1.}, {1.}, {1.}, {0}); 0366 odeout = integrate_ode_bdf(ode_func, {1.}, x_real, {1.}, {1.}, {1.}, {0}, 0367 x_real, x_real, x_int); 0368 odeout = integrate_ode_rk45(ode_func, {1.}, x_real, {1.}, {1.}, {1.}, {0}, 0369 x_real, x_real, x_int); 0370 // algout = algebra_solver(algebra_func, x_vector, x_vector, {1.}, {0}); 0371 0372 // distribution functions 0373 x = normal_lpdf(0.5 | 0., 1.); 0374 x = normal_cdf(0.5, 0., 1.); 0375 x = normal_lcdf(0.5 | 0., 1.); 0376 x = normal_lccdf(0.5 | 0., 1.); 0377 x = binomial_lpmf(1 | 2, 0.5); 0378 0379 // deprecated features 0380 foo <- 1; 0381 increment_log_prob(0.0); 0382 y_hat = integrate_ode(sho, y0, t0, ts, theta, x_r, x_i); 0383 x = get_lp(); 0384 x = multiply_log(1.0, 1.0); 0385 x = binomial_coefficient_log(1.0, 1.0); 0386 // deprecated distribution functions versions 0387 x = normal_log(0.5, 0.0, 1.0); 0388 x = normal_cdf_log(0.5, 0.0, 1.0); 0389 x = normal_ccdf_log(0.5, 0.0, 1.0); 0390 0391 } 0392 generated quantities { 0393 real Y; 0394 // rng function 0395 Y = normal_rng(0., 1.); 0396 }