-
Notifications
You must be signed in to change notification settings - Fork 0
/
tasl.tmLanguage.json
176 lines (176 loc) · 4.2 KB
/
tasl.tmLanguage.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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"scopeName": "source.tasl",
"name": "tasl",
"fileTypes": ["tasl"],
"patterns": [
{ "include": "#comment" },
{ "include": "#namespace" },
{ "include": "#type" },
{ "include": "#class" },
{ "include": "#edge" }
],
"repository": {
"comment": {
"match": "(#).*$",
"name": "comment.line.number-sign.tasl",
"captures": {
"1": { "name": "punctuation.definition.comment.tasl" }
}
},
"namespace": {
"match": "(?:^\\s*)(namespace)\\b(.*)",
"captures": {
"1": { "name": "keyword.control.tasl.namespace" },
"2": {
"patterns": [
{ "include": "#namespaceURI" },
{ "match": "[a-zA-Z][a-zA-Z0-9]*\\b", "name": "entity.name" }
]
}
}
},
"type": {
"begin": "(?:^\\s*)(type)\\b",
"beginCaptures": {
"1": { "name": "keyword.control.tasl.type" }
},
"end": "$",
"patterns": [{ "include": "#expression" }]
},
"class": {
"begin": "(?:^\\s*)(class)\\b",
"beginCaptures": {
"1": { "name": "keyword.control.tasl.class" }
},
"end": "$",
"patterns": [
{ "include": "#key" },
{ "include": "#export" },
{ "include": "#expression" }
]
},
"edge": {
"begin": "(?:^\\s*)(edge)\\b",
"beginCaptures": {
"1": { "name": "keyword.control.tasl.edge" }
},
"end": "$",
"patterns": [
{ "include": "#key" },
{ "include": "#export" },
{ "match": "=/", "name": "punctuation.separator.tasl.edge.source" },
{ "match": "/=>", "name": "punctuation.separator.tasl.edge.target" },
{ "match": "=>", "name": "punctuation.separator.tasl.edge" },
{ "include": "#expression" }
]
},
"export": {
"match": "::",
"name": "keyword.operator.tasl.export"
},
"expression": {
"patterns": [
{ "include": "#literal" },
{ "include": "#uri" },
{ "include": "#product" },
{ "include": "#coproduct" },
{ "include": "#reference" },
{ "include": "#optional" },
{ "include": "#identifier" }
]
},
"literal": {
"patterns": [{ "include": "#datatype" }]
},
"uri": {
"match": "<>",
"name": "variable.other.constant"
},
"product": {
"begin": "{",
"beginCaptures": {
"0": { "name": "punctuation.definition.block.tasl.product" }
},
"end": "}",
"endCaptures": {
"0": { "name": "punctuation.definition.block.tasl.product" }
},
"patterns": [
{ "include": "#comment" },
{ "include": "#term" },
{ "include": "#component" }
]
},
"component": {
"begin": "->",
"end": "$",
"beginCaptures": {
"0": { "name": "punctuation.separator.tasl.component" }
},
"patterns": [{ "include": "#expression" }]
},
"coproduct": {
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "punctuation.definition.block.tasl.coproduct"
}
},
"end": "\\]",
"endCaptures": {
"0": { "name": "punctuation.definition.block.tasl.coproduct" }
},
"patterns": [
{ "include": "#comment" },
{ "include": "#term" },
{ "include": "#option" }
]
},
"option": {
"begin": "<-",
"end": "$",
"beginCaptures": {
"0": { "name": "punctuation.separator.tasl.option" }
},
"patterns": [{ "include": "#expression" }]
},
"reference": {
"match": "(\\*)\\s*(.*)",
"captures": {
"1": { "name": "markup.bold keyword.operator" },
"2": { "patterns": [{ "include": "#key" }] }
}
},
"identifier": {
"match": "([a-zA-Z][a-zA-Z0-9]*)\\b",
"captures": {
"1": { "name": "variable" }
}
},
"optional": {
"begin": "\\?",
"beginCaptures": {
"0": { "name": "keyword.operator" }
},
"end": "$",
"patterns": [{ "include": "#expression" }]
},
"namespaceURI": {
"match": "[a-z]+:[a-zA-Z0-9-._~:\\/?#\\[\\]@!$&'()*+,;%=]+",
"name": "markup.underline.link"
},
"key": {
"match": "[a-zA-Z][a-zA-Z0-9]*:(?:[A-Za-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9A-Fa-f]{2})+",
"name": "markup.bold entity.name.class"
},
"datatype": {
"match": "[a-zA-Z][a-zA-Z0-9]*:(?:[A-Za-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9A-Fa-f]{2})+",
"name": "string.regexp"
},
"term": {
"match": "[a-zA-Z][a-zA-Z0-9]*:(?:[A-Za-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9A-Fa-f]{2})+",
"name": "entity.other.tasl.key"
}
}
}