UNPKG

1.24 kBJavaScriptView Raw
1Prism.languages.parigp = {
2 'comment': /\/\*[\s\S]*?\*\/|\\\\.*/,
3 'string': {
4 pattern: /"(?:[^"\\\r\n]|\\.)*"/,
5 greedy: true
6 },
7 // PARI/GP does not care about white spaces at all
8 // so let's process the keywords to build an appropriate regexp
9 // (e.g. "b *r *e *a *k", etc.)
10 'keyword': (function () {
11 var keywords = [
12 'breakpoint', 'break', 'dbg_down', 'dbg_err', 'dbg_up', 'dbg_x',
13 'forcomposite', 'fordiv', 'forell', 'forpart', 'forprime',
14 'forstep', 'forsubgroup', 'forvec', 'for', 'iferr', 'if',
15 'local', 'my', 'next', 'return', 'until', 'while'
16 ];
17 keywords = keywords.map(function (keyword) {
18 return keyword.split('').join(' *');
19 }).join('|');
20 return RegExp('\\b(?:' + keywords + ')\\b');
21 }()),
22 'function': /\w[\w ]*?(?= *\()/,
23 'number': {
24 // The lookbehind and the negative lookahead prevent from breaking the .. operator
25 pattern: /((?:\. *\. *)?)(?:\d(?: *\d)*(?: *(?!\. *\.)\.(?: *\d)*)?|\. *\d(?: *\d)*)(?: *e *[+-]? *\d(?: *\d)*)?/i,
26 lookbehind: true
27 },
28 'operator': /\. *\.|[*\/!](?: *=)?|%(?: *=|(?: *#)?(?: *')*)?|\+(?: *[+=])?|-(?: *[-=>])?|<(?:(?: *<)?(?: *=)?| *>)?|>(?: *>)?(?: *=)?|=(?: *=){0,2}|\\(?: *\/)?(?: *=)?|&(?: *&)?|\| *\||['#~^]/,
29 'punctuation': /[\[\]{}().,:;|]/
30};
\No newline at end of file