// https://www.freedesktop.org/software/systemd/man/systemd.syntax.html (function (Prism) { var comment = { pattern: /^[;#].*/m, greedy: true, }; var quotesSource = /"(?:[^\r\n"\\]|\\(?:[^\r]|\r\n?))*"(?!\S)/.source; Prism.languages.systemd = { comment: comment, section: { pattern: /^\[[^\n\r\[\]]*\](?=[ \t]*$)/m, greedy: true, inside: { punctuation: /^\[|\]$/, 'section-name': { pattern: /[\s\S]+/, alias: 'selector', }, }, }, key: { pattern: /^[^\s=]+(?=[ \t]*=)/m, greedy: true, alias: 'attr-name', }, value: { // This pattern is quite complex because of two properties: // 1) Quotes (strings) must be preceded by a space. Since we can't use lookbehinds, we have to "resolve" // the lookbehind. You will see this in the main loop where spaces are handled separately. // 2) Line continuations. // After line continuations, empty lines and comments are ignored so we have to consume them. pattern: RegExp( /(=[ \t]*(?!\s))/.source + // the value either starts with quotes or not '(?:' + quotesSource + '|(?=[^"\r\n]))' + // main loop '(?:' + (/[^\s\\]/.source + // handle spaces separately because of quotes '|' + '[ \t]+(?:(?![ \t"])|' + quotesSource + ')' + // line continuation '|' + /\\[\r\n]+(?:[#;].*[\r\n]+)*(?![#;])/.source) + ')*' ), lookbehind: true, greedy: true, alias: 'attr-value', inside: { comment: comment, quoted: { pattern: RegExp(/(^|\s)/.source + quotesSource), lookbehind: true, greedy: true, }, punctuation: /\\$/m, boolean: { pattern: /^(?:false|no|off|on|true|yes)$/, greedy: true, }, }, }, operator: /=/, }; })(Prism); =v1.1.0'>stats
path: root/public/prism/prism-qsharp.min.js
blob: c17fd610f67a24d847d789c29e0b942a33d422bf (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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
!(function (e) {
  function a(e, r) {
    return e.replace(/<<(\d+)>>/g, function (e, n) {
      return '(?:' + r[+n] + ')';
    });
  }
  function n(e, n, r) {
    return RegExp(a(e, n), r || '');
  }
  var r = RegExp(
      '\\b(?:' +
        (
          'Adj BigInt Bool Ctl Double false Int One Pauli PauliI PauliX PauliY PauliZ Qubit Range Result String true Unit Zero' +
          ' ' +
          'Adjoint adjoint apply as auto body borrow borrowing Controlled controlled distribute elif else fail fixup for function if in internal intrinsic invert is let mutable namespace new newtype open operation repeat return self set until use using while within'
        )
          .trim()
          .replace(/ /g, '|') +
        ')\\b'
    ),
    t = a('<<0>>(?:\\s*\\.\\s*<<0>>)*', ['\\b[A-Za-z_]\\w*\\b']),
    i = { keyword: r, punctuation: /[<>()?,.:[\]]/ },
    s = '"(?:\\\\.|[^\\\\"])*"';
  (e.languages.qsharp = e.languages.extend('clike', {
    comment: /\/\/.*/,
    string: [
      { pattern: n('(^|[^$\\\\])<<0>>', [s]), lookbehind: !0, greedy: !0 },
    ],
    'class-name': [
      {
        pattern: n('(\\b(?:as|open)\\s+)<<0>>(?=\\s*(?:;|as\\b))', [t]),
        lookbehind: !0,
        inside: i,
      },
      {
        pattern: n('(\\bnamespace\\s+)<<0>>(?=\\s*\\{)', [t]),
        lookbehind: !0,
        inside: i,
      },
    ],
    keyword: r,
    number:
      /(?:\b0(?:x[\da-f]+|b[01]+|o[0-7]+)|(?:\B\.\d+|\b\d+(?:\.\d*)?)(?:e[-+]?\d+)?)l?\b/i,
    operator:
      /\band=|\bor=|\band\b|\bnot\b|\bor\b|<[-=]|[-=]>|>>>=?|<<<=?|\^\^\^=?|\|\|\|=?|&&&=?|w\/=?|~~~|[*\/+\-^=!%]=?/,
    punctuation: /::|[{}[\];(),.:]/,
  })),
    e.languages.insertBefore('qsharp', 'number', {
      range: { pattern: /\.\./, alias: 'operator' },
    });
  var o = (function (e, n) {
    for (var r = 0; r < n; r++)
      e = e.replace(/<<self>>/g, function () {
        return '(?:' + e + ')';
      });
    return e.replace(/<<self>>/g, '[^\\s\\S]');
  })(a('\\{(?:[^"{}]|<<0>>|<<self>>)*\\}', [s]), 2);
  e.languages.insertBefore('qsharp', 'string', {
    'interpolation-string': {
      pattern: n('\\$"(?:\\\\.|<<0>>|[^\\\\"{])*"', [o]),
      greedy: !0,
      inside: {
        interpolation: {
          pattern: n('((?:^|[^\\\\])(?:\\\\\\\\)*)<<0>>', [o]),
          lookbehind: !0,
          inside: {
            punctuation: /^\{|\}$/,
            expression: {
              pattern: /[\s\S]+/,
              alias: 'language-qsharp',
              inside: e.languages.qsharp,
            },
          },
        },
        string: /[\s\S]+/,
      },
    },
  });
})(Prism),
  (Prism.languages.qs = Prism.languages.qsharp);