-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsalt.tmGrammar.json
128 lines (120 loc) · 4.51 KB
/
salt.tmGrammar.json
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
{
"scopeName": "source.salt",
"patterns": [
{ "include": "#comment" },
{ "include": "#expression" },
{ "include": "#decl-type"},
{ "include": "#decl-term"},
{ "include": "#decl-test"},
{ "include": "#decl-proc"},
{ "include": "#decl-emit"}
],
"repository": {
"comment": {
"patterns": [
{ "include": "#comment-line" }
]
},
"comment-line": {
"match": "(--).*$\n?",
"name": "comment.line.salt"
},
"decl-type": {
"match": "^type",
"name": "keyword.control.declaration.type.salt"
},
"decl-term": {
"match": "^term",
"name": "keyword.control.declaration.term.salt"
},
"decl-proc": {
"match": "^proc",
"name": "keyword.control.declaration.proc.salt"
},
"decl-test": {
"match": "^(watch\\s+)?(test)\\s+(kind|type|eval|eval'type|eval'term|assert|exec|emit)\\b",
"captures": {
"1": {"name": "keyword.control.declaration.watch.salt"},
"2": {"name": "keyword.control.declaration.test.salt"},
"3": {"name": "keyword.control.declaration.test.mode.salt"}
}
},
"decl-emit": {
"match": "^emit",
"name": "keyword.control.declaration.emit.salt"
},
"expression": {
"patterns": [
{ "include": "#keyword-shared" },
{ "include": "#keyword-type" },
{ "include": "#keyword-term" },
{ "include": "#prim-operator" },
{ "include": "#prim-constructor" },
{ "include": "#prim-numeric"},
{ "include": "#paren-round-expression" },
{ "include": "#paren-square-expression" },
{ "include": "#paren-brace-expression" }
]
},
"keyword-shared": {
"match": "\\b(fun)\\b",
"name": "keyword.control.expression.shared.salt"
},
"keyword-type": {
"match": "\\b(forall|exists)\\b",
"name": "keyword.control.expression.type.salt"
},
"keyword-term": {
"match": "\\b(the|let|rec|in|do|if|then|else|case|of|box|run|proc|yield|call|with|seq|end|enter|leave|launch|return|cell|update|when|whens|done|match|loop|break|continue|while|bloc)\\b",
"name": "keyword.control.expression.term.salt"
},
"prim-operator": {
"match": "\\#[a-z][a-zA-Z0-9']*" ,
"name": "constant.primitive.operator.salt"
},
"prim-constructor": {
"match": "\\#[A-Z][a-zA-Z0-9']*" ,
"name": "constant.primitive.constructor.salt"
},
"prim-numeric": {
"match": "\\b[0-9]+\\b",
"name": "constant.numeric.salt"
},
"paren-round-expression": {
"begin": "\\(",
"end": "\\)",
"beginCaptures": {
"0": { "name": "punctuation.paren.round.open.salt" }
},
"endCaptures": {
"0": { "name": "punctuation.paren.round.close.salt" }
},
"name": "expression.group.round.salt",
"patterns": [{ "include": "#expression" }]
},
"paren-square-expression": {
"begin": "\\[",
"end": "\\]",
"beginCaptures": {
"0": { "name": "punctuation.paren.square.open.salt" }
},
"endCaptures": {
"0": { "name": "punctuation.paren.square.close.salt" }
},
"name": "expression.group.square.salt",
"patterns": [{ "include": "#expression" }]
},
"paren-brace-expression": {
"begin": "\\{",
"end": "\\}",
"beginCaptures": {
"0": { "name": "punctuation.paren.brace.open.salt" }
},
"endCaptures": {
"0": { "name": "punctuation.paren.brace.close.salt" }
},
"name": "expression.group.brace.salt",
"patterns": [{ "include": "#expression" }]
}
}
}