]>
luflow.net public git repositories - flow-web.git/blob - static/highlight/languages/erlang.js
1 /*! `erlang` grammar compiled for Highlight.js 11.11.1 */
3 var hljsGrammar
= (function () {
8 Description: Erlang is a general-purpose functional language, with strict evaluation, single assignment, and dynamic typing.
9 Author: Nikolay Zakharov <nikolay.desh@gmail.com>, Dmitry Kovega <arhibot@gmail.com>
10 Website: https://www.erlang.org
14 /** @type LanguageFn */
15 function erlang(hljs
) {
16 const BASIC_ATOM_RE
= '[a-z\'][a-zA-Z0-9_\']*';
17 const FUNCTION_NAME_RE
= '(' + BASIC_ATOM_RE
+ ':' + BASIC_ATOM_RE
+ '|' + BASIC_ATOM_RE
+ ')';
18 const ERLANG_RESERVED
= {
20 'after and andalso|10 band begin bnot bor bsl bzr bxor case catch cond div end fun if '
21 + 'let not of orelse|10 query receive rem try when xor maybe else',
26 const COMMENT
= hljs
.COMMENT('%', '$');
29 begin: '\\b(\\d+(_\\d+)*#[a-fA-F0-9]+(_[a-fA-F0-9]+)*|\\d+(_\\d+)*(\\.\\d+(_\\d+)*)?([eE][-+]?\\d+)?)',
32 const NAMED_FUN
= { begin: 'fun\\s+' + BASIC_ATOM_RE
+ '/\\d+' };
33 const FUNCTION_CALL
= {
34 begin: FUNCTION_NAME_RE
+ '\\(',
40 begin: FUNCTION_NAME_RE
,
49 // "contains" defined later
57 // "contains" defined later
60 begin: '\\b_([A-Z][A-Za-z0-9_]*)?',
64 begin: '[A-Z][a-zA-Z0-9_]*',
67 const RECORD_ACCESS
= {
68 begin: '#' + hljs
.UNDERSCORE_IDENT_RE
,
73 begin: '#' + hljs
.UNDERSCORE_IDENT_RE
,
80 // "contains" defined later
84 const CHAR_LITERAL
= {
86 match: /\$(\\([^0-9]|[0-9]{1,3}|)|.)/,
88 const TRIPLE_QUOTE
= {
90 match: /"""("*)(?!")[\s\S]*?"""\1/,
95 contains: [ hljs
.BACKSLASH_ESCAPE
],
97 {match: /~\w?"""("*)(?!")[\s\S]*?"""\1/},
98 {begin: /~\w?\(/, end: /\)/},
99 {begin: /~\w?\[/, end: /\]/},
100 {begin: /~\w?{/, end: /}/},
101 {begin: /~\w?</, end: />/},
102 {begin: /~\w?\//, end: /\//},
103 {begin: /~\w?\|/, end: /\|/},
104 {begin: /~\w?'/, end: /'/},
105 {begin: /~\w?"/, end: /"/},
106 {begin: /~\w?`/, end: /`/},
107 {begin: /~\w?#/, end: /#/},
111 const BLOCK_STATEMENTS = {
112 beginKeywords: 'fun receive
if try case maybe
',
114 keywords: ERLANG_RESERVED
116 BLOCK_STATEMENTS.contains = [
119 hljs.inherit(hljs.APOS_STRING_MODE, { className: '' }),
124 hljs.QUOTE_STRING_MODE,
133 const BASIC_MODES = [
140 hljs.QUOTE_STRING_MODE,
148 FUNCTION_CALL.contains[1].contains = BASIC_MODES;
149 TUPLE.contains = BASIC_MODES;
150 RECORD_ACCESS.contains[1].contains = BASIC_MODES;
183 contains: BASIC_MODES
189 keywords: ERLANG_RESERVED,
190 illegal: '(</|\\*=|\\+=|-=|/\\*|\\*/
|\\(\\*|\\*\\))',
193 className: 'function',
194 begin: '^' + BASIC_ATOM_RE + '\\s
*\\(',
197 illegal: '\\(|#|//|/\\*|\\\\|:|;',
200 hljs
.inherit(hljs
.TITLE_MODE
, { begin: BASIC_ATOM_RE
})
204 keywords: ERLANG_RESERVED
,
205 contains: BASIC_MODES
216 $pattern: '-' + hljs
.IDENT_RE
,
217 keyword: DIRECTIVES
.map(x
=> `${x}|1.5`).join(" ")
223 hljs
.QUOTE_STRING_MODE
229 hljs
.QUOTE_STRING_MODE
,
235 { begin: /\.$/ } // relevance booster
244 hljs
.registerLanguage('erlang', hljsGrammar
);