summaryrefslogtreecommitdiffstats
path: root/public/prism/prism-oz.min.js
blob: a1caf943d24bb4a6fe8888317b27cff528c95433 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Prism.languages.oz = {
  comment: { pattern: /\/\*[\s\S]*?\*\/|%.*/, greedy: !0 },
  string: { pattern: /"(?:[^"\\]|\\[\s\S])*"/, greedy: !0 },
  atom: { pattern: /'(?:[^'\\]|\\[\s\S])*'/, greedy: !0, alias: 'builtin' },
  keyword:
    /\$|\[\]|\b(?:_|at|attr|case|catch|choice|class|cond|declare|define|dis|else(?:case|if)?|end|export|fail|false|feat|finally|from|fun|functor|if|import|in|local|lock|meth|nil|not|of|or|prepare|proc|prop|raise|require|self|skip|then|thread|true|try|unit)\b/,
  function: [
    /\b[a-z][A-Za-z\d]*(?=\()/,
    { pattern: /(\{)[A-Z][A-Za-z\d]*\b/, lookbehind: !0 },
  ],
  number:
    /\b(?:0[bx][\da-f]+|\d+(?:\.\d*)?(?:e~?\d+)?)\b|&(?:[^\\]|\\(?:\d{3}|.))/i,
  variable: /`(?:[^`\\]|\\.)+`/,
  'attr-name': /\b\w+(?=[ \t]*:(?![:=]))/,
  operator:
    /:(?:=|::?)|<[-:=]?|=(?:=|<?:?)|>=?:?|\\=:?|!!?|[|#+\-*\/,~^@]|\b(?:andthen|div|mod|orelse)\b/,
  punctuation: /[\[\](){}.:;?]/,
};
) { return RegExp(pattern.replace(/<nonId>/g, nonId), flags); } Prism.languages.kumir = { comment: { pattern: /\|.*/, }, prolog: { pattern: /#.*/, greedy: true, }, string: { pattern: /"[^\n\r"]*"|'[^\n\r']*'/, greedy: true, }, boolean: { pattern: wrapId(/(^|[<nonId>])(?:да|нет)(?=[<nonId>]|$)/.source), lookbehind: true, }, 'operator-word': { pattern: wrapId(/(^|[<nonId>])(?:и|или|не)(?=[<nonId>]|$)/.source), lookbehind: true, alias: 'keyword', }, 'system-variable': { pattern: wrapId(/(^|[<nonId>])знач(?=[<nonId>]|$)/.source), lookbehind: true, alias: 'keyword', }, type: [ { pattern: wrapId( /(^|[<nonId>])(?:вещ|лит|лог|сим|цел)(?:\x20*таб)?(?=[<nonId>]|$)/ .source ), lookbehind: true, alias: 'builtin', }, { pattern: wrapId( /(^|[<nonId>])(?:компл|сканкод|файл|цвет)(?=[<nonId>]|$)/.source ), lookbehind: true, alias: 'important', }, ], /** * Should be performed after searching for type names because of "таб". * "таб" is a reserved word, but never used without a preceding type name. * "НАЗНАЧИТЬ", "Фввод", and "Фвывод" are not reserved words. */ keyword: { pattern: wrapId( /(^|[<nonId>])(?:алг|арг(?:\x20*рез)?|ввод|ВКЛЮЧИТЬ|вс[её]|выбор|вывод|выход|дано|для|до|дс|если|иначе|исп|использовать|кон(?:(?:\x20+|_)исп)?|кц(?:(?:\x20+|_)при)?|надо|нач|нс|нц|от|пауза|пока|при|раза?|рез|стоп|таб|то|утв|шаг)(?=[<nonId>]|$)/ .source ), lookbehind: true, }, /** Should be performed after searching for reserved words. */ name: { // eslint-disable-next-line regexp/no-super-linear-backtracking pattern: wrapId( /(^|[<nonId>])[^\d<nonId>][^<nonId>]*(?:\x20+[^<nonId>]+)*(?=[<nonId>]|$)/ .source ), lookbehind: true, }, /** Should be performed after searching for names. */ number: { pattern: wrapId( /(^|[<nonId>])(?:\B\$[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)(?=[<nonId>]|$)/ .source, 'i' ), lookbehind: true, }, /** Should be performed after searching for words. */ punctuation: /:=|[(),:;\[\]]/, /** * Should be performed after searching for * - numeric constants (because of "+" and "-"); * - punctuation marks (because of ":=" and "="). */ 'operator-char': { pattern: /\*\*?|<[=>]?|>=?|[-+/=]/, alias: 'operator', }, }; Prism.languages.kum = Prism.languages.kumir; })(Prism);