| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 | /*Language: PrologDescription: Prolog is a general purpose logic programming language associated with artificial intelligence and computational linguistics.Author: Raivo Laanemets <[email protected]>*/function(hljs) {  var ATOM = {    begin: /[a-z][A-Za-z0-9_]*/,    relevance: 0  };  var VAR = {    className: 'symbol',    variants: [      {begin: /[A-Z][a-zA-Z0-9_]*/},      {begin: /_[A-Za-z0-9_]*/},    ],    relevance: 0  };  var PARENTED = {    begin: /\(/,    end: /\)/,    relevance: 0  };  var LIST = {    begin: /\[/,    end: /\]/  };  var LINE_COMMENT = {    className: 'comment',    begin: /%/, end: /$/,    contains: [hljs.PHRASAL_WORDS_MODE]  };  var BACKTICK_STRING = {    className: 'string',    begin: /`/, end: /`/,    contains: [hljs.BACKSLASH_ESCAPE]  };  var CHAR_CODE = {    className: 'string', // 0'a etc.    begin: /0\'(\\\'|.)/  };  var SPACE_CODE = {    className: 'string',    begin: /0\'\\s/ // 0'\s  };  var PRED_OP = { // relevance booster    begin: /:-/  };  var 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 {    contains: inner.concat([      {begin: /\.$/} // relevance booster    ])  };}
 |