1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
!(function (e) {
var n =
/\b(?:abstype|and|andalso|as|case|datatype|do|else|end|eqtype|exception|fn|fun|functor|handle|if|in|include|infix|infixr|let|local|nonfix|of|op|open|orelse|raise|rec|sharing|sig|signature|struct|structure|then|type|val|where|while|with|withtype)\b/i;
(e.languages.sml = {
comment:
/\(\*(?:[^*(]|\*(?!\))|\((?!\*)|\(\*(?:[^*(]|\*(?!\))|\((?!\*))*\*\))*\*\)/,
string: { pattern: /#?"(?:[^"\\]|\\.)*"/, greedy: !0 },
'class-name': [
{
pattern: RegExp(
'((?:^|[^:]):\\s*)<TERMINAL>(?:\\s*(?:(?:\\*|->)\\s*<TERMINAL>|,\\s*<TERMINAL>(?:(?=<NOT-LAST>)|(?!<NOT-LAST>)\\s+<LONG-ID>)))*'
.replace(/<NOT-LAST>/g, function () {
return '\\s*(?:[*,]|->)';
})
.replace(/<TERMINAL>/g, function () {
return "(?:'[\\w']*|<LONG-ID>|\\((?:[^()]|\\([^()]*\\))*\\)|\\{(?:[^{}]|\\{[^{}]*\\})*\\})(?:\\s+<LONG-ID>)*";
})
.replace(/<LONG-ID>/g, function () {
return "(?!<KEYWORD>)[a-z\\d_][\\w'.]*";
})
.replace(/<KEYWORD>/g, function () {
return n.source;
}),
'i'
),
lookbehind: !0,
greedy: !0,
inside: null,
},
{
pattern:
/((?:^|[^\w'])(?:datatype|exception|functor|signature|structure|type)\s+)[a-z_][\w'.]*/i,
lookbehind: !0,
},
],
function: { pattern: /((?:^|[^\w'])fun\s+)[a-z_][\w'.]*/i, lookbehind: !0 },
keyword: n,
variable: { pattern: /(^|[^\w'])'[\w']*/, lookbehind: !0 },
number: /~?\b(?:\d+(?:\.\d+)?(?:e~?\d+)?|0x[\da-f]+)\b/i,
word: { pattern: /\b0w(?:\d+|x[\da-f]+)\b/i, alias: 'constant' },
boolean: /\b(?:false|true)\b/i,
operator: /\.\.\.|:[>=:]|=>?|->|[<>]=?|[!+\-*/^#|@~]/,
punctuation: /[(){}\[\].:,;]/,
}),
(e.languages.sml['class-name'][0].inside = e.languages.sml),
(e.languages.smlnj = e.languages.sml);
})(Prism);
|