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