1 |
|
2 | (function (Prism) {
|
3 |
|
4 | |
5 |
|
6 |
|
7 |
|
8 |
|
9 | var nonId = /\s\x00-\x1f\x22-\x2f\x3a-\x3f\x5b-\x5e\x60\x7b-\x7e/.source;
|
10 |
|
11 | |
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 | function wrapId(pattern, flags) {
|
19 | return RegExp(pattern.replace(/<nonId>/g, nonId), flags);
|
20 | }
|
21 |
|
22 | Prism.languages.kumir = {
|
23 | 'comment': {
|
24 | pattern: /\|.*/
|
25 | },
|
26 |
|
27 | 'prolog': {
|
28 | pattern: /#.*/,
|
29 | greedy: true
|
30 | },
|
31 |
|
32 | 'string': {
|
33 | pattern: /"[^\n\r"]*"|'[^\n\r']*'/,
|
34 | greedy: true
|
35 | },
|
36 |
|
37 | 'boolean': {
|
38 | pattern: wrapId(/(^|[<nonId>])(?:да|нет)(?=[<nonId>]|$)/.source),
|
39 | lookbehind: true
|
40 | },
|
41 |
|
42 | 'operator-word': {
|
43 | pattern: wrapId(/(^|[<nonId>])(?:и|или|не)(?=[<nonId>]|$)/.source),
|
44 | lookbehind: true,
|
45 | alias: 'keyword'
|
46 | },
|
47 |
|
48 | 'system-variable': {
|
49 | pattern: wrapId(/(^|[<nonId>])знач(?=[<nonId>]|$)/.source),
|
50 | lookbehind: true,
|
51 | alias: 'keyword'
|
52 | },
|
53 |
|
54 | 'type': [
|
55 | {
|
56 | pattern: wrapId(/(^|[<nonId>])(?:вещ|лит|лог|сим|цел)(?:\x20*таб)?(?=[<nonId>]|$)/.source),
|
57 | lookbehind: true,
|
58 | alias: 'builtin'
|
59 | },
|
60 | {
|
61 | pattern: wrapId(/(^|[<nonId>])(?:компл|сканкод|файл|цвет)(?=[<nonId>]|$)/.source),
|
62 | lookbehind: true,
|
63 | alias: 'important'
|
64 | }
|
65 | ],
|
66 |
|
67 | |
68 |
|
69 |
|
70 |
|
71 |
|
72 | 'keyword': {
|
73 | pattern: wrapId(/(^|[<nonId>])(?:алг|арг(?:\x20*рез)?|ввод|ВКЛЮЧИТЬ|вс[её]|выбор|вывод|выход|дано|для|до|дс|если|иначе|исп|использовать|кон(?:(?:\x20+|_)исп)?|кц(?:(?:\x20+|_)при)?|надо|нач|нс|нц|от|пауза|пока|при|раза?|рез|стоп|таб|то|утв|шаг)(?=[<nonId>]|$)/.source),
|
74 | lookbehind: true
|
75 | },
|
76 |
|
77 |
|
78 | 'name': {
|
79 |
|
80 | pattern: wrapId(/(^|[<nonId>])[^\d<nonId>][^<nonId>]*(?:\x20+[^<nonId>]+)*(?=[<nonId>]|$)/.source),
|
81 | lookbehind: true
|
82 | },
|
83 |
|
84 |
|
85 | 'number': {
|
86 | pattern: wrapId(/(^|[<nonId>])(?:\B\$[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)(?=[<nonId>]|$)/.source, 'i'),
|
87 | lookbehind: true
|
88 | },
|
89 |
|
90 |
|
91 | 'punctuation': /:=|[(),:;\[\]]/,
|
92 |
|
93 | |
94 |
|
95 |
|
96 |
|
97 |
|
98 | 'operator-char': {
|
99 | pattern: /\*\*?|<[=>]?|>=?|[-+/=]/,
|
100 | alias: 'operator'
|
101 | }
|
102 | };
|
103 |
|
104 | Prism.languages.kum = Prism.languages.kumir;
|
105 |
|
106 | }(Prism));
|