summaryrefslogtreecommitdiffstats
path: root/public/prism/prism-sml.min.js
blob: 16ab61268db42466331ba2bae8b7a88e718b6a52 (plain)
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);