(function (Prism) { var coreRules = '(?:ALPHA|BIT|CHAR|CR|CRLF|CTL|DIGIT|DQUOTE|HEXDIG|HTAB|LF|LWSP|OCTET|SP|VCHAR|WSP)'; Prism.languages.abnf = { comment: /;.*/, string: { pattern: /(?:%[is])?"[^"\n\r]*"/, greedy: true, inside: { punctuation: /^%[is]/, }, }, range: { pattern: /%(?:b[01]+-[01]+|d\d+-\d+|x[A-F\d]+-[A-F\d]+)/i, alias: 'number', }, terminal: { pattern: /%(?:b[01]+(?:\.[01]+)*|d\d+(?:\.\d+)*|x[A-F\d]+(?:\.[A-F\d]+)*)/i, alias: 'number', }, repetition: { pattern: /(^|[^\w-])(?:\d*\*\d*|\d+)/, lookbehind: true, alias: 'operator', }, definition: { pattern: /(^[ \t]*)(?:[a-z][\w-]*|<[^<>\r\n]*>)(?=\s*=)/m, lookbehind: true, alias: 'keyword', inside: { punctuation: /<|>/, }, }, 'core-rule': { pattern: RegExp( '(?:(^|[^<\\w-])' + coreRules + '|<' + coreRules + '>)(?![\\w-])', 'i' ), lookbehind: true, alias: ['rule', 'constant'], inside: { punctuation: /<|>/, }, }, rule: { pattern: /(^|[^<\w-])[a-z][\w-]*|<[^<>\r\n]*>/i, lookbehind: true, inside: { punctuation: /<|>/, }, }, operator: /=\/?|\//, punctuation: /[()\[\]]/, }; })(Prism); out/'>aboutsummaryrefslogtreecommitdiffstats
path: root/public/prism/prism-prolog.js
blob: 412897fe4f5c44941daede45b06c53e44c03ec52 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Prism.languages.prolog = {
  // Syntax depends on the implementation
  comment: {
    pattern: /\/\*[\s\S]*?\*\/|%.*/,
    greedy: true,
  },
  // Depending on the implementation, strings may allow escaped newlines and quote-escape
  string: {
    pattern: /(["'])(?:\1\1|\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1(?!\1)/,
    greedy: true,
  },
  builtin: /\b(?:fx|fy|xf[xy]?|yfx?)\b/,
  // FIXME: Should we list all null-ary predicates (not followed by a parenthesis) like halt, trace, etc.?
  function: /\b[a-z]\w*(?:(?=\()|\/\d+)/,
  number: /\b\d+(?:\.\d*)?/,
  // Custom operators are allowed
  operator: /[:\\=><\-?*@\/;+^|!$.]+|\b(?:is|mod|not|xor)\b/,
  punctuation: /[(){}\[\],]/,
};