Index: lib/src/prism/components/prism-prolog.js |
diff --git a/lib/src/prism/components/prism-prolog.js b/lib/src/prism/components/prism-prolog.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..86c04d4aae573f94005552ec7912e986ac7b11e3 |
--- /dev/null |
+++ b/lib/src/prism/components/prism-prolog.js |
@@ -0,0 +1,17 @@ |
+Prism.languages.prolog = { |
+ // Syntax depends on the implementation |
+ 'comment': [ |
+ /%.+/, |
+ /\/\*[\s\S]*?\*\// |
+ ], |
+ // Depending on the implementation, strings may allow escaped newlines and quote-escape |
+ 'string': /(["'])(?:\1\1|\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, |
+ 'builtin': /\b(?:fx|fy|xf[xy]?|yfx?)\b/, |
+ 'variable': /\b[A-Z_]\w*/, |
+ // 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': /[(){}\[\],]/ |
+}; |