]>
luflow.net public git repositories - flow-web.git/blob - static/highlight/es/languages/erlang.js
1 /*! `erlang` grammar compiled for Highlight.js 11.11.1 */
2 var hljsGrammar
= (function () {
7 Description: Erlang is a general-purpose functional language, with strict evaluation, single assignment, and dynamic typing.
8 Author: Nikolay Zakharov <nikolay.desh@gmail.com>, Dmitry Kovega <arhibot@gmail.com>
9 Website: https://www.erlang.org
13 /** @type LanguageFn */
14 function erlang(hljs
) {
15 const BASIC_ATOM_RE
= '[a-z\'][a-zA-Z0-9_\']*';
16 const FUNCTION_NAME_RE
= '(' + BASIC_ATOM_RE
+ ':' + BASIC_ATOM_RE
+ '|' + BASIC_ATOM_RE
+ ')';
17 const ERLANG_RESERVED
= {
19 'after and andalso|10 band begin bnot bor bsl bzr bxor case catch cond div end fun if '
20 + 'let not of orelse|10 query receive rem try when xor maybe else',
25 const COMMENT
= hljs
.COMMENT('%', '$');
28 begin: '\\b(\\d+(_\\d+)*#[a-fA-F0-9]+(_[a-fA-F0-9]+)*|\\d+(_\\d+)*(\\.\\d+(_\\d+)*)?([eE][-+]?\\d+)?)',
31 const NAMED_FUN
= { begin: 'fun\\s+' + BASIC_ATOM_RE
+ '/\\d+' };
32 const FUNCTION_CALL
= {
33 begin: FUNCTION_NAME_RE
+ '\\(',
39 begin: FUNCTION_NAME_RE
,
48 // "contains" defined later
56 // "contains" defined later
59 begin: '\\b_([A-Z][A-Za-z0-9_]*)?',
63 begin: '[A-Z][a-zA-Z0-9_]*',
66 const RECORD_ACCESS
= {
67 begin: '#' + hljs
.UNDERSCORE_IDENT_RE
,
72 begin: '#' + hljs
.UNDERSCORE_IDENT_RE
,
79 // "contains" defined later
83 const CHAR_LITERAL
= {
85 match: /\$(\\([^0-9]|[0-9]{1,3}|)|.)/,
87 const TRIPLE_QUOTE
= {
89 match: /"""("*)(?!")[\s\S]*?"""\1/,
94 contains: [ hljs
.BACKSLASH_ESCAPE
],
96 {match: /~\w?"""("*)(?!")[\s\S]*?"""\1/},
97 {begin: /~\w?\(/, end: /\)/},
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: /#/},
110 const BLOCK_STATEMENTS = {
111 beginKeywords: 'fun receive
if try case maybe
',
113 keywords: ERLANG_RESERVED
115 BLOCK_STATEMENTS.contains = [
118 hljs.inherit(hljs.APOS_STRING_MODE, { className: '' }),
123 hljs.QUOTE_STRING_MODE,
132 const BASIC_MODES = [
139 hljs.QUOTE_STRING_MODE,
147 FUNCTION_CALL.contains[1].contains = BASIC_MODES;
148 TUPLE.contains = BASIC_MODES;
149 RECORD_ACCESS.contains[1].contains = BASIC_MODES;
182 contains: BASIC_MODES
188 keywords: ERLANG_RESERVED,
189 illegal: '(</|\\*=|\\+=|-=|/\\*|\\*/
|\\(\\*|\\*\\))',
192 className: 'function',
193 begin: '^' + BASIC_ATOM_RE + '\\s
*\\(',
196 illegal: '\\(|#|//|/\\*|\\\\|:|;',
199 hljs
.inherit(hljs
.TITLE_MODE
, { begin: BASIC_ATOM_RE
})
203 keywords: ERLANG_RESERVED
,
204 contains: BASIC_MODES
215 $pattern: '-' + hljs
.IDENT_RE
,
216 keyword: DIRECTIVES
.map(x
=> `${x}|1.5`).join(" ")
222 hljs
.QUOTE_STRING_MODE
228 hljs
.QUOTE_STRING_MODE
,
234 { begin: /\.$/ } // relevance booster
243 export default hljsGrammar
;