-
Notifications
You must be signed in to change notification settings - Fork 3.6k
/
flix.js
77 lines (72 loc) · 1.26 KB
/
flix.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/*
Language: Flix
Category: functional
Author: Magnus Madsen <mmadsen@uwaterloo.ca>
Website: https://flix.dev/
*/
/** @type LanguageFn */
export default function(hljs) {
const CHAR = {
className: 'string',
begin: /'(.|\\[xXuU][a-zA-Z0-9]+)'/
};
const STRING = {
className: 'string',
variants: [
{
begin: '"',
end: '"'
}
]
};
const NAME = {
className: 'title',
relevance: 0,
begin: /[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/
};
const METHOD = {
className: 'function',
beginKeywords: 'def',
end: /[:={\[(\n;]/,
excludeEnd: true,
contains: [ NAME ]
};
return {
name: 'Flix',
keywords: {
keyword: [
"case",
"class",
"def",
"else",
"enum",
"if",
"impl",
"import",
"in",
"lat",
"rel",
"index",
"let",
"match",
"namespace",
"switch",
"type",
"yield",
"with"
],
literal: [
"true",
"false"
]
},
contains: [
hljs.C_LINE_COMMENT_MODE,
hljs.C_BLOCK_COMMENT_MODE,
CHAR,
STRING,
METHOD,
hljs.C_NUMBER_MODE
]
};
}