aboutsummaryrefslogtreecommitdiffstats
path: root/public/prism/prism-parigp.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/prism/prism-parigp.js')
-rw-r--r--public/prism/prism-parigp.js53
1 files changed, 53 insertions, 0 deletions
diff --git a/public/prism/prism-parigp.js b/public/prism/prism-parigp.js
new file mode 100644
index 0000000..45759b1
--- /dev/null
+++ b/public/prism/prism-parigp.js
@@ -0,0 +1,53 @@
+Prism.languages.parigp = {
+ comment: /\/\*[\s\S]*?\*\/|\\\\.*/,
+ string: {
+ pattern: /"(?:[^"\\\r\n]|\\.)*"/,
+ greedy: true,
+ },
+ // PARI/GP does not care about white spaces at all
+ // so let's process the keywords to build an appropriate regexp
+ // (e.g. "b *r *e *a *k", etc.)
+ keyword: (function () {
+ var keywords = [
+ 'breakpoint',
+ 'break',
+ 'dbg_down',
+ 'dbg_err',
+ 'dbg_up',
+ 'dbg_x',
+ 'forcomposite',
+ 'fordiv',
+ 'forell',
+ 'forpart',
+ 'forprime',
+ 'forstep',
+ 'forsubgroup',
+ 'forvec',
+ 'for',
+ 'iferr',
+ 'if',
+ 'local',
+ 'my',
+ 'next',
+ 'return',
+ 'until',
+ 'while',
+ ];
+ keywords = keywords
+ .map(function (keyword) {
+ return keyword.split('').join(' *');
+ })
+ .join('|');
+ return RegExp('\\b(?:' + keywords + ')\\b');
+ })(),
+ function: /\b\w(?:[\w ]*\w)?(?= *\()/,
+ number: {
+ // The lookbehind and the negative lookahead prevent from breaking the .. operator
+ pattern:
+ /((?:\. *\. *)?)(?:\b\d(?: *\d)*(?: *(?!\. *\.)\.(?: *\d)*)?|\. *\d(?: *\d)*)(?: *e *(?:[+-] *)?\d(?: *\d)*)?/i,
+ lookbehind: true,
+ },
+ operator:
+ /\. *\.|[*\/!](?: *=)?|%(?: *=|(?: *#)?(?: *')*)?|\+(?: *[+=])?|-(?: *[-=>])?|<(?: *>|(?: *<)?(?: *=)?)?|>(?: *>)?(?: *=)?|=(?: *=){0,2}|\\(?: *\/)?(?: *=)?|&(?: *&)?|\| *\||['#~^]/,
+ punctuation: /[\[\]{}().,:;|]/,
+};