]> luflow.net public git repositories - flow-web.git/blob - static/highlight/languages/prolog.js
Initial commit.
[flow-web.git] / static / highlight / languages / prolog.js
1 /*! `prolog` grammar compiled for Highlight.js 11.11.1 */
2 (function(){
3 var hljsGrammar = (function () {
4 'use strict';
5
6 /*
7 Language: Prolog
8 Description: Prolog is a general purpose logic programming language associated with artificial intelligence and computational linguistics.
9 Author: Raivo Laanemets <raivo@infdot.com>
10 Website: https://en.wikipedia.org/wiki/Prolog
11 Category: functional
12 */
13
14 function prolog(hljs) {
15 const ATOM = {
16
17 begin: /[a-z][A-Za-z0-9_]*/,
18 relevance: 0
19 };
20
21 const VAR = {
22
23 className: 'symbol',
24 variants: [
25 { begin: /[A-Z][a-zA-Z0-9_]*/ },
26 { begin: /_[A-Za-z0-9_]*/ }
27 ],
28 relevance: 0
29 };
30
31 const PARENTED = {
32
33 begin: /\(/,
34 end: /\)/,
35 relevance: 0
36 };
37
38 const LIST = {
39
40 begin: /\[/,
41 end: /\]/
42 };
43
44 const LINE_COMMENT = {
45
46 className: 'comment',
47 begin: /%/,
48 end: /$/,
49 contains: [ hljs.PHRASAL_WORDS_MODE ]
50 };
51
52 const BACKTICK_STRING = {
53
54 className: 'string',
55 begin: /`/,
56 end: /`/,
57 contains: [ hljs.BACKSLASH_ESCAPE ]
58 };
59
60 const CHAR_CODE = {
61 className: 'string', // 0'a etc.
62 begin: /0'(\\'|.)/
63 };
64
65 const SPACE_CODE = {
66 className: 'string',
67 begin: /0'\\s/ // 0'\s
68 };
69
70 const PRED_OP = { // relevance booster
71 begin: /:-/ };
72
73 const inner = [
74
75 ATOM,
76 VAR,
77 PARENTED,
78 PRED_OP,
79 LIST,
80 LINE_COMMENT,
81 hljs.C_BLOCK_COMMENT_MODE,
82 hljs.QUOTE_STRING_MODE,
83 hljs.APOS_STRING_MODE,
84 BACKTICK_STRING,
85 CHAR_CODE,
86 SPACE_CODE,
87 hljs.C_NUMBER_MODE
88 ];
89
90 PARENTED.contains = inner;
91 LIST.contains = inner;
92
93 return {
94 name: 'Prolog',
95 contains: inner.concat([
96 { // relevance booster
97 begin: /\.$/ }
98 ])
99 };
100 }
101
102 return prolog;
103
104 })();
105
106 hljs.registerLanguage('prolog', hljsGrammar);
107 })();