]> luflow.net public git repositories - flow-web.git/blob - static/highlight/languages/axapta.js
Initial commit.
[flow-web.git] / static / highlight / languages / axapta.js
1 /*! `axapta` grammar compiled for Highlight.js 11.11.1 */
2 (function(){
3 var hljsGrammar = (function () {
4 'use strict';
5
6 /*
7 Language: Microsoft X++
8 Description: X++ is a language used in Microsoft Dynamics 365, Dynamics AX, and Axapta.
9 Author: Dmitri Roudakov <dmitri@roudakov.ru>
10 Website: https://dynamics.microsoft.com/en-us/ax-overview/
11 Category: enterprise
12 */
13
14 /** @type LanguageFn */
15 function axapta(hljs) {
16 const IDENT_RE = hljs.UNDERSCORE_IDENT_RE;
17 const BUILT_IN_KEYWORDS = [
18 'anytype',
19 'boolean',
20 'byte',
21 'char',
22 'container',
23 'date',
24 'double',
25 'enum',
26 'guid',
27 'int',
28 'int64',
29 'long',
30 'real',
31 'short',
32 'str',
33 'utcdatetime',
34 'var'
35 ];
36
37 const LITERAL_KEYWORDS = [
38 'default',
39 'false',
40 'null',
41 'true'
42 ];
43
44 const NORMAL_KEYWORDS = [
45 'abstract',
46 'as',
47 'asc',
48 'avg',
49 'break',
50 'breakpoint',
51 'by',
52 'byref',
53 'case',
54 'catch',
55 'changecompany',
56 'class',
57 'client',
58 'client',
59 'common',
60 'const',
61 'continue',
62 'count',
63 'crosscompany',
64 'delegate',
65 'delete_from',
66 'desc',
67 'display',
68 'div',
69 'do',
70 'edit',
71 'else',
72 'eventhandler',
73 'exists',
74 'extends',
75 'final',
76 'finally',
77 'firstfast',
78 'firstonly',
79 'firstonly1',
80 'firstonly10',
81 'firstonly100',
82 'firstonly1000',
83 'flush',
84 'for',
85 'forceliterals',
86 'forcenestedloop',
87 'forceplaceholders',
88 'forceselectorder',
89 'forupdate',
90 'from',
91 'generateonly',
92 'group',
93 'hint',
94 'if',
95 'implements',
96 'in',
97 'index',
98 'insert_recordset',
99 'interface',
100 'internal',
101 'is',
102 'join',
103 'like',
104 'maxof',
105 'minof',
106 'mod',
107 'namespace',
108 'new',
109 'next',
110 'nofetch',
111 'notexists',
112 'optimisticlock',
113 'order',
114 'outer',
115 'pessimisticlock',
116 'print',
117 'private',
118 'protected',
119 'public',
120 'readonly',
121 'repeatableread',
122 'retry',
123 'return',
124 'reverse',
125 'select',
126 'server',
127 'setting',
128 'static',
129 'sum',
130 'super',
131 'switch',
132 'this',
133 'throw',
134 'try',
135 'ttsabort',
136 'ttsbegin',
137 'ttscommit',
138 'unchecked',
139 'update_recordset',
140 'using',
141 'validtimestate',
142 'void',
143 'where',
144 'while'
145 ];
146
147 const KEYWORDS = {
148 keyword: NORMAL_KEYWORDS,
149 built_in: BUILT_IN_KEYWORDS,
150 literal: LITERAL_KEYWORDS
151 };
152
153 const CLASS_DEFINITION = {
154 variants: [
155 { match: [
156 /(class|interface)\s+/,
157 IDENT_RE,
158 /\s+(extends|implements)\s+/,
159 IDENT_RE
160 ] },
161 { match: [
162 /class\s+/,
163 IDENT_RE
164 ] }
165 ],
166 scope: {
167 2: "title.class",
168 4: "title.class.inherited"
169 },
170 keywords: KEYWORDS
171 };
172
173 return {
174 name: 'X++',
175 aliases: [ 'x++' ],
176 keywords: KEYWORDS,
177 contains: [
178 hljs.C_LINE_COMMENT_MODE,
179 hljs.C_BLOCK_COMMENT_MODE,
180 hljs.APOS_STRING_MODE,
181 hljs.QUOTE_STRING_MODE,
182 hljs.C_NUMBER_MODE,
183 {
184 className: 'meta',
185 begin: '#',
186 end: '$'
187 },
188 CLASS_DEFINITION
189 ]
190 };
191 }
192
193 return axapta;
194
195 })();
196
197 hljs.registerLanguage('axapta', hljsGrammar);
198 })();