| 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': /[(){}\[\],]/ |
| }; |