prolog.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. /*
  2. Language: Prolog
  3. Description: Prolog is a general purpose logic programming language associated with artificial intelligence and computational linguistics.
  4. Author: Raivo Laanemets <[email protected]>
  5. */
  6. function(hljs) {
  7. var ATOM = {
  8. begin: /[a-z][A-Za-z0-9_]*/,
  9. relevance: 0
  10. };
  11. var VAR = {
  12. className: 'symbol',
  13. variants: [
  14. {begin: /[A-Z][a-zA-Z0-9_]*/},
  15. {begin: /_[A-Za-z0-9_]*/},
  16. ],
  17. relevance: 0
  18. };
  19. var PARENTED = {
  20. begin: /\(/,
  21. end: /\)/,
  22. relevance: 0
  23. };
  24. var LIST = {
  25. begin: /\[/,
  26. end: /\]/
  27. };
  28. var LINE_COMMENT = {
  29. className: 'comment',
  30. begin: /%/, end: /$/,
  31. contains: [hljs.PHRASAL_WORDS_MODE]
  32. };
  33. var BACKTICK_STRING = {
  34. className: 'string',
  35. begin: /`/, end: /`/,
  36. contains: [hljs.BACKSLASH_ESCAPE]
  37. };
  38. var CHAR_CODE = {
  39. className: 'string', // 0'a etc.
  40. begin: /0\'(\\\'|.)/
  41. };
  42. var SPACE_CODE = {
  43. className: 'string',
  44. begin: /0\'\\s/ // 0'\s
  45. };
  46. var PRED_OP = { // relevance booster
  47. begin: /:-/
  48. };
  49. var inner = [
  50. ATOM,
  51. VAR,
  52. PARENTED,
  53. PRED_OP,
  54. LIST,
  55. LINE_COMMENT,
  56. hljs.C_BLOCK_COMMENT_MODE,
  57. hljs.QUOTE_STRING_MODE,
  58. hljs.APOS_STRING_MODE,
  59. BACKTICK_STRING,
  60. CHAR_CODE,
  61. SPACE_CODE,
  62. hljs.C_NUMBER_MODE
  63. ];
  64. PARENTED.contains = inner;
  65. LIST.contains = inner;
  66. return {
  67. contains: inner.concat([
  68. {begin: /\.$/} // relevance booster
  69. ])
  70. };
  71. }