UNPKG

2.05 kBJavaScriptView Raw
1// https://www.stata.com/manuals/u.pdf
2// https://www.stata.com/manuals/p.pdf
3
4Prism.languages.stata = {
5 'comment': [
6 {
7 pattern: /(^[ \t]*)\*.*/m,
8 lookbehind: true,
9 greedy: true
10 },
11 {
12 pattern: /(^|\s)\/\/.*|\/\*[\s\S]*?\*\//,
13 lookbehind: true,
14 greedy: true
15 }
16 ],
17 'string-literal': {
18 pattern: /"[^"\r\n]*"|[‘`']".*?"[’`']/,
19 greedy: true,
20 inside: {
21 'interpolation': {
22 pattern: /\$\{[^{}]*\}|[‘`']\w[^’`'\r\n]*[’`']/,
23 inside: {
24 'punctuation': /^\$\{|\}$/,
25 'expression': {
26 pattern: /[\s\S]+/,
27 inside: null // see below
28 }
29 }
30 },
31 'string': /[\s\S]+/
32 }
33 },
34
35 'mata': {
36 pattern: /(^[ \t]*mata[ \t]*:)[\s\S]+?(?=^end\b)/m,
37 lookbehind: true,
38 greedy: true,
39 alias: 'language-mata',
40 inside: Prism.languages.mata
41 },
42 'java': {
43 pattern: /(^[ \t]*java[ \t]*:)[\s\S]+?(?=^end\b)/m,
44 lookbehind: true,
45 greedy: true,
46 alias: 'language-java',
47 inside: Prism.languages.java
48 },
49 'python': {
50 pattern: /(^[ \t]*python[ \t]*:)[\s\S]+?(?=^end\b)/m,
51 lookbehind: true,
52 greedy: true,
53 alias: 'language-python',
54 inside: Prism.languages.python
55 },
56
57
58 'command': {
59 pattern: /(^[ \t]*(?:\.[ \t]+)?(?:(?:bayes|bootstrap|by|bysort|capture|collect|fmm|fp|frame|jackknife|mfp|mi|nestreg|noisily|permute|quietly|rolling|simulate|statsby|stepwise|svy|version|xi)\b[^:\r\n]*:[ \t]*|(?:capture|noisily|quietly|version)[ \t]+)?)[a-zA-Z]\w*/m,
60 lookbehind: true,
61 greedy: true,
62 alias: 'keyword'
63 },
64 'variable': /\$\w+|[‘`']\w[^’`'\r\n]*[’`']/,
65 'keyword': /\b(?:bayes|bootstrap|by|bysort|capture|clear|collect|fmm|fp|frame|if|in|jackknife|mi[ \t]+estimate|mfp|nestreg|noisily|of|permute|quietly|rolling|simulate|sort|statsby|stepwise|svy|varlist|version|xi)\b/,
66
67
68 'boolean': /\b(?:off|on)\b/,
69 'number': /\b\d+(?:\.\d+)?\b|\B\.\d+/,
70 'function': /\b[a-z_]\w*(?=\()/i,
71
72 'operator': /\+\+|--|##?|[<>!=~]=?|[+\-*^&|/]/,
73 'punctuation': /[(){}[\],:]/
74};
75
76Prism.languages.stata['string-literal'].inside.interpolation.inside.expression.inside = Prism.languages.stata;