123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- /*
- Language: Prolog
- Description: Prolog is a general purpose logic programming language associated with artificial intelligence and computational linguistics.
- Author: Raivo Laanemets <raivo@infdot.com>
- Website: https://en.wikipedia.org/wiki/Prolog
- */
- function prolog(hljs) {
- const ATOM = {
- begin: /[a-z][A-Za-z0-9_]*/,
- relevance: 0
- };
- const VAR = {
- className: 'symbol',
- variants: [
- {
- begin: /[A-Z][a-zA-Z0-9_]*/
- },
- {
- begin: /_[A-Za-z0-9_]*/
- }
- ],
- relevance: 0
- };
- const PARENTED = {
- begin: /\(/,
- end: /\)/,
- relevance: 0
- };
- const LIST = {
- begin: /\[/,
- end: /\]/
- };
- const LINE_COMMENT = {
- className: 'comment',
- begin: /%/,
- end: /$/,
- contains: [ hljs.PHRASAL_WORDS_MODE ]
- };
- const BACKTICK_STRING = {
- className: 'string',
- begin: /`/,
- end: /`/,
- contains: [ hljs.BACKSLASH_ESCAPE ]
- };
- const CHAR_CODE = {
- className: 'string', // 0'a etc.
- begin: /0'(\\'|.)/
- };
- const SPACE_CODE = {
- className: 'string',
- begin: /0'\\s/ // 0'\s
- };
- const PRED_OP = { // relevance booster
- begin: /:-/
- };
- const inner = [
- ATOM,
- VAR,
- PARENTED,
- PRED_OP,
- LIST,
- LINE_COMMENT,
- hljs.C_BLOCK_COMMENT_MODE,
- hljs.QUOTE_STRING_MODE,
- hljs.APOS_STRING_MODE,
- BACKTICK_STRING,
- CHAR_CODE,
- SPACE_CODE,
- hljs.C_NUMBER_MODE
- ];
- PARENTED.contains = inner;
- LIST.contains = inner;
- return {
- name: 'Prolog',
- contains: inner.concat([
- { // relevance booster
- begin: /\.$/
- }
- ])
- };
- }
- module.exports = prolog;
|