forked from mctep/yate-textmate
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Yate.JSON-tmLanguage
214 lines (212 loc) · 5.77 KB
/
Yate.JSON-tmLanguage
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
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
{ "name": "Yate",
"scopeName": "source.yate",
"fileTypes": ["yate"],
"patterns": [
{ "include": "#block-comments"}
, { "include": "#block-definition" }
, { "include": "#match" }
, { "include": "#include-file" }
, { "include": "#func" }
, { "include": "#jpath" }
, { "include": "#inline-comments"}
, { "include": "#yate-strings"}
, { "include": "#yate-strings-single-quoted"}
, { "include": "#html" }
, { "include": "#operators" }
, { "include": "#numeric" }
],
"repository": {
"block-definition": {
"begin": "{",
"end": "}",
"patterns": [
{ "include": "#block-comments"}
, { "include": "#inline-comments"}
, { "include": "#jpath" }
, { "include": "#jpath-operators" }
, { "include": "$self" }
, { "include": "#operators" }
, { "include": "#controls" }
, { "include": "#yate-attributes"}
]
},
"match": {
"name": "source.yate.match",
"begin": "^(?:\\s|\\t)*(match)",
"beginCaptures": {
"1": { "name": "storage.type" }
},
"end": "(?={)",
"patterns": [
{ "include": "#block-comments"},
{ "include": "#inline-comments"},
{ "include": "#jpath" },
{ "include": "#jpath-operators" },
{ "include": "#operators" },
{ "include": "#numeric" },
{ "include": "#yate-strings" },
{ "include": "#yate-strings-single-quoted"}
]
},
"numeric": {
"match": "\\b\\d+\\b",
"name": "constant.numeric"
},
"jpath": {
"match": "(?<=\\s|\\t|\\[|\\(|[{,!]|\/)(\\.|/)(\\.|[a-zA-Z0-9_-]|\\*|\\$)*(?=\\s|\\t|\\[|\\]|\\)|[,}])",
"name": "variable.parameter"
},
"include-file": {
"name": "storage.type",
"match": "\\b(include|import|module|external)\\b"
},
"func": {
"name": "source.yate.func",
"begin": "^(?:\\s|\t)*(func|key)(?:\t|\\s)",
"beginCaptures": {
"1": { "name": "storage.type" }
},
"end": "(?={)",
"patterns": [
{ "include": "#func-definition" }
]
},
"func-definition": {
"name": "source.yate.func.def",
"begin": "(?:([a-zA-Z_$][a-zA-Z_$-0-9]*))(\\s|\\t)*\\(",
"beginCaptures": {
"1": { "name": "entity.name.function.js" }
},
"end": "\\)",
"patterns": [
{ "include": "#block-comments"},
{ "include": "#inline-comments"},
{ "match": "(nodeset)\\b", "name": "constant.numeric" },
{ "include": "#strings" },
{ "match": "(?:\\b|\\s|\\t)=(?:\\b|\\s|\\t)", "name": "keyword.operator" },
{ "include": "#jpath" },
{ "include": "#jpath-operators" }
]
},
"html": {
"begin": "^(\\s|\\t)*(?=<)",
"end": "$",
"patterns": [
{ "include": "#block-comments"},
{ "include": "#inline-comments"},
{ "include": "#html-definition" },
{ "include": "#yate-inline-strings" }
]
},
"html-definition": {
"name": "source.yate.html.tag",
"begin": "(</?)\\s*([-_a-zA-Z0-9]+)",
"end": "(/?>)",
"beginCaptures": {
"2": { "name": "entity.name.tag.block.any.html" }
},
"endCaptures": { "1": { "name": "punctuation.definition.tag.end.html" } },
"patterns": [
{ "include": "#block-comments"},
{ "include": "#inline-comments"},
{ "include": "#html-attributes" }
]
},
"html-attributes": {
"name": "source.yate.html.tag.attribute",
"begin": "(?=(\\s||\\t))",
"end": "(?=((>|/>)))",
"patterns": [
{ "include": "#block-comments"},
{ "include": "#inline-comments"},
{ "include": "#yate-strings" },
{ "include": "#yate-strings-single-quoted"},
{ "name": "entity.other.attribute-name.html",
"match": "\\b[a-zA-Z0-9:_-]+\\b"
}
]
},
"yate-strings": {
"name": "source.yate.string",
"begin": "(\")",
"end": "(\\1)",
"beginCaptures": { "1": { "name": "string"} },
"endCaptures": { "1": { "name": "string"} },
"patterns": [
{ "include": "#inline-expression" },
{ "match": "([^\"{}])*", "name": "string" },
{ "match": "(\\{\\{|\\}\\})", "name": "string" }
]
},
"yate-strings-single-quoted": {
"name": "source.yate.string",
"begin": "(')",
"end": "(\\1)",
"beginCaptures": { "1": { "name": "string"} },
"endCaptures": { "1": { "name": "string"} },
"patterns": [
{ "include": "#inline-expression" },
{ "match": "([^'{}])*", "name": "string" },
{ "match": "(\\{\\{|\\}\\})", "name": "string" }
]
},
"yate-inline-strings": {
"name": "source.yate.inline-string",
"begin": "(?<=>)(?!\\<|$)",
"end": "(?=\\<|$)",
"patterns": [
{ "include": "#block-comments"},
{ "include": "#inline-comments"},
{ "include": "#inline-expression" },
{ "match": "([^\"'<>{}/]+)", "name": "string" },
{ "match": "(\\{\\{|\\}\\})", "name": "string" }
]
},
"yate-attributes": {
"match": "@[a-zA-Z]([a-zA-Z0-9_-]|\\:)*",
"name": "entity.other.attribute-name.html"
},
"inline-expression": {
"name": "source.yate.inline-expression",
"begin": "(?<!\\{)({)(?!\\{)",
"end": "(?<!\\})(})(?!\\})",
"beginCaptures": { "0": { "name": "constant.numeric"} },
"endCaptures": { "0": { "name": "constant.numeric"} },
"patterns": [
{ "include": "#block-comments"},
{ "include": "#inline-comments"},
{ "include": "#jpath" },
{ "include": "#jpath-operators" },
{ "include": "#operators" },
{ "include": "#numeric" }
]
},
"operators": {
"match": "((?<=\\s|\\t|\\))(&&|\\|\\|)(?=\\s|\\t|\\())|((=|!=|==|!==|===|!|/|\\+|%|>|<|>=|<=|\\[|\\]))",
"name": "keyword.operator"
},
"jpath-operators": {
"match": "(\\||\\[|\\])",
"name": "constant.numeric"
},
"strings": {
"match": "(\"|')([^\"']*)(\"|')",
"name": "string"
},
"controls": {
"match": "\\b(if|else|elseif|for|apply)\\b",
"name": "keyword.controls"
},
"inline-comments": {
"begin": "//",
"end": "$",
"name": "comment.line.double-slash"
},
"block-comments": {
"begin": "/\\*",
"end": "\\*/",
"name": "comment.block"
}
},
"uuid": "fa6fe8fe-4c7b-419a-9554-b0bc923cae37"
}