grammar-well 1.2.1 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,557 @@
1
+ // Generated automatically by Grammar-Well, version unknown
2
+ // https://github.com/0x6563/grammar-well
3
+
4
+ function GWLanguage(){
5
+
6
+ return {
7
+ grammar: {
8
+ start: "main",
9
+ rules: {
10
+ main: [
11
+ { name: "main", symbols: [ "_", "section_list", "_" ], postprocess: ({data}) => { return data[1]; } }
12
+ ],
13
+ section_list: [
14
+ { name: "section_list", symbols: [ "section" ], postprocess: ({data}) => { return [data[0]]; } },
15
+ { name: "section_list", symbols: [ "section", "T_WS", "section_list" ], postprocess: ({data}) => { return [data[0]].concat(data[2]); } }
16
+ ],
17
+ section: [
18
+ { name: "section", symbols: [ "K_CONFIG", "_", "L_COLON", "_", "L_TEMPLATEL", "_", "kv_list", "_", "L_TEMPLATER" ], postprocess: ({data}) => { return { config: Object.assign(...data[6]) }; } },
19
+ { name: "section", symbols: [ "K_IMPORT", "_", "L_STAR", "_", "K_FROM", "__", "T_WORD", "_", "L_SCOLON" ], postprocess: ({data}) => { return { import: data[6] }; } },
20
+ { name: "section", symbols: [ "K_IMPORT", "_", "L_STAR", "_", "K_FROM", "__", "T_STRING", "_", "L_SCOLON" ], postprocess: ({data}) => { return { import: data[6], path: true }; } },
21
+ { name: "section", symbols: [ "K_IMPORT", "_", "L_STAR", "_", { literal: "as" }, "_", "T_WORD", "_", "K_FROM", "__", "T_WORD", "_", "L_SCOLON" ], postprocess: ({data}) => { return { import: data[10], alias: data[6]}; } },
22
+ { name: "section", symbols: [ "K_IMPORT", "_", "L_STAR", "_", { literal: "as" }, "_", "T_WORD", "_", "K_FROM", "__", "T_STRING", "_", "L_SCOLON" ], postprocess: ({data}) => { return { import: data[10], path: true, alias: data[6]}; } },
23
+ { name: "section", symbols: [ "K_LEXER", "_", "L_COLON", "_", "L_TEMPLATEL", "_", "lexer", "_", "L_TEMPLATER" ], postprocess: ({data}) => { return { lexer: Object.assign(...data[6]) }; } },
24
+ { name: "section", symbols: [ "K_GRAMMAR", "_", "L_COLON", "_", "L_TEMPLATEL", "_", "grammar", "_", "L_TEMPLATER" ], postprocess: ({data}) => { return { grammar: data[6] }; } },
25
+ { name: "section", symbols: [ "K_BODY", "_", "L_COLON", "_", "T_JS" ], postprocess: ({data}) => { return { body: data[4] }; } },
26
+ { name: "section", symbols: [ "K_BODY", "_", "L_COLON", "_", "T_STRING" ], postprocess: ({data}) => { return { body: data[4], path: true }; } },
27
+ { name: "section", symbols: [ "K_HEAD", "_", "L_COLON", "_", "T_JS" ], postprocess: ({data}) => { return { head: data[4] }; } },
28
+ { name: "section", symbols: [ "K_HEAD", "_", "L_COLON", "_", "T_STRING" ], postprocess: ({data}) => { return { head: data[4], path: true }; } }
29
+ ],
30
+ lexer: [
31
+ { name: "lexer", symbols: [ "kv_list", "_", "state_list" ], postprocess: ({data}) => { return data[0].concat({ states: data[2] }); } },
32
+ { name: "lexer", symbols: [ "state_list" ], postprocess: ({data}) => { return [{ states: data[0] }]; } }
33
+ ],
34
+ state_list: [
35
+ { name: "state_list", symbols: [ "state" ], postprocess: ({data}) => { return data; } },
36
+ { name: "state_list", symbols: [ "state", "_", "state_list" ], postprocess: ({data}) => { return [data[0]].concat(data[2]); } }
37
+ ],
38
+ state: [
39
+ { name: "state", symbols: [ "state_declare", "_", "state_definition" ], postprocess: ({data}) => { return Object.assign({ name: data[0] }, data[2]); } }
40
+ ],
41
+ state_declare: [
42
+ { name: "state_declare", symbols: [ "T_WORD", "_", "L_ARROW" ], postprocess: ({data}) => { return data[0]; } }
43
+ ],
44
+ state_definition: [
45
+ { name: "state_definition", symbols: [ "kv_list", "_", "token_list" ], postprocess: ({data}) => { return Object.assign(...data[0], { rules: data[2] }); } },
46
+ { name: "state_definition", symbols: [ "token_list" ], postprocess: ({data}) => { return { rules: data[0] }; } }
47
+ ],
48
+ token_list: [
49
+ { name: "token_list", symbols: [ "token" ], postprocess: ({data}) => { return data; } },
50
+ { name: "token_list", symbols: [ "token", "_", "token_list" ], postprocess: ({data}) => { return [data[0]].concat(data[2]); } }
51
+ ],
52
+ token: [
53
+ { name: "token", symbols: [ "L_DASH", "_", "K_IMPORT", "_", "L_COLON", "_", "word_list" ], postprocess: ({data}) => { return { import: data[6] }; } },
54
+ { name: "token", symbols: [ "L_DASH", "_", "token_definition_list" ], postprocess: ({data}) => { return Object.assign(...data[2]); } }
55
+ ],
56
+ token_definition_list: [
57
+ { name: "token_definition_list", symbols: [ "token_definition" ], postprocess: ({data}) => { return data; } },
58
+ { name: "token_definition_list", symbols: [ "token_definition", "_", "token_definition_list" ], postprocess: ({data}) => { return [data[0]].concat(data[2]); } }
59
+ ],
60
+ token_definition: [
61
+ { name: "token_definition", symbols: [ "K_TAG", "_", "L_COLON", "_", "string_list" ], postprocess: ({data}) => { return { tag: data[4] }; } },
62
+ { name: "token_definition", symbols: [ "K_WHEN", "_", "L_COLON", "_", "T_STRING" ], postprocess: ({data}) => { return { when: data[4] }; } },
63
+ { name: "token_definition", symbols: [ "K_WHEN", "_", "L_COLON", "_", "T_REGEX" ], postprocess: ({data}) => { return { when: data[4] }; } },
64
+ { name: "token_definition", symbols: [ "K_POP" ], postprocess: ({data}) => { return { pop: 1 }; } },
65
+ { name: "token_definition", symbols: [ "K_POP", "_", "L_COLON", "_", "T_INTEGER" ], postprocess: ({data}) => { return { pop: parseInt(data[4]) }; } },
66
+ { name: "token_definition", symbols: [ "K_POP", "_", "L_COLON", "_", "K_ALL" ], postprocess: ({data}) => { return { pop: "all" }; } },
67
+ { name: "token_definition", symbols: [ "K_HIGHLIGHT", "_", "L_COLON", "_", "T_STRING" ], postprocess: ({data}) => { return { highlight: data[4] }; } },
68
+ { name: "token_definition", symbols: [ "K_INSET" ], postprocess: ({data}) => { return { inset: 1 }; } },
69
+ { name: "token_definition", symbols: [ "K_INSET", "_", "L_COLON", "_", "T_INTEGER" ], postprocess: ({data}) => { return { inset: parseInt(data[4]) }; } },
70
+ { name: "token_definition", symbols: [ "K_SET", "_", "L_COLON", "_", "T_WORD" ], postprocess: ({data}) => { return { set: data[4] }; } },
71
+ { name: "token_definition", symbols: [ "K_GOTO", "_", "L_COLON", "_", "T_WORD" ], postprocess: ({data}) => { return { goto: data[4] }; } },
72
+ { name: "token_definition", symbols: [ "K_TYPE", "_", "L_COLON", "_", "T_STRING" ], postprocess: ({data}) => { return { type: data[4] }; } }
73
+ ],
74
+ grammar: [
75
+ { name: "grammar", symbols: [ "kv_list", "_", "grammar_rule_list" ], postprocess: ({data}) => { return { config: Object.assign(...data[0]), rules: data[2] }; } },
76
+ { name: "grammar", symbols: [ "grammar_rule_list" ], postprocess: ({data}) => { return { rules: data[0] }; } }
77
+ ],
78
+ grammar_rule_list: [
79
+ { name: "grammar_rule_list", symbols: [ "grammar_rule" ], postprocess: ({data}) => { return [data[0]]; } },
80
+ { name: "grammar_rule_list", symbols: [ "grammar_rule", "_", "grammar_rule_list" ], postprocess: ({data}) => { return [data[0]].concat(data[2]); } }
81
+ ],
82
+ grammar_rule: [
83
+ { name: "grammar_rule", symbols: [ "T_WORD", "_", "L_ARROW", "_", "expression_list" ], postprocess: ({data}) => { return { name: data[0], expressions: data[4] }; } },
84
+ { name: "grammar_rule", symbols: [ "T_WORD", "__", "L_COLON", "_", "T_JS", "_", "L_ARROW", "_", "expression_list" ], postprocess: ({data}) => { return { name: data[0], expressions: data[8], postprocess: data[4] }; } },
85
+ { name: "grammar_rule", symbols: [ "T_WORD", "__", "L_COLON", "_", "T_GRAMMAR_TEMPLATE", "_", "L_ARROW", "_", "expression_list" ], postprocess: ({data}) => { return { name: data[0], expressions: data[8], postprocess: data[4] }; } }
86
+ ],
87
+ expression_list: [
88
+ { name: "expression_list", symbols: [ "expression" ] },
89
+ { name: "expression_list", symbols: [ "expression_list", "_", "L_PIPE", "_", "expression" ], postprocess: ({data}) => { return data[0].concat([data[4]]); } }
90
+ ],
91
+ expression: [
92
+ { name: "expression", symbols: [ "expression_symbol_list" ], postprocess: ({data}) => { return { symbols: data[0] }; } },
93
+ { name: "expression", symbols: [ "expression_symbol_list", "__", "L_COLON", "_", "T_JS" ], postprocess: ({data}) => { return { symbols: data[0], postprocess: data[4] }; } },
94
+ { name: "expression", symbols: [ "expression_symbol_list", "__", "L_COLON", "_", "T_GRAMMAR_TEMPLATE" ], postprocess: ({data}) => { return { symbols: data[0], postprocess: data[4] }; } }
95
+ ],
96
+ expression_symbol_list: [
97
+ { name: "expression_symbol_list", symbols: [ "expression_symbol" ] },
98
+ { name: "expression_symbol_list", symbols: [ "expression_symbol_list", "T_WS", "expression_symbol" ], postprocess: ({data}) => { return data[0].concat([data[2]]); } }
99
+ ],
100
+ expression_symbol: [
101
+ { name: "expression_symbol", symbols: [ "expression_symbol_match" ], postprocess: ({data}) => { return data[0]; } },
102
+ { name: "expression_symbol", symbols: [ "expression_symbol_match", "L_COLON", "T_WORD" ], postprocess: ({data}) => { return { ...data[0], alias: data[2] }; } },
103
+ { name: "expression_symbol", symbols: [ "expression_symbol_match", "expression_repeater" ], postprocess: ({data}) => { return { expression: data[0], repeat: data[1] }; } },
104
+ { name: "expression_symbol", symbols: [ "expression_symbol_match", "expression_repeater", "L_COLON", "T_WORD" ], postprocess: ({data}) => { return { expression: data[0], repeat: data[1], alias: data[4] }; } }
105
+ ],
106
+ expression_symbol_match: [
107
+ { name: "expression_symbol_match", symbols: [ "T_WORD" ], postprocess: ({data}) => { return { rule: data[0] }; } },
108
+ { name: "expression_symbol_match", symbols: [ "T_STRING", "expression_symbol_match$RPT01x1" ], postprocess: ({data}) => { return { literal: data[0], insensitive: !!data[1] }; } },
109
+ { name: "expression_symbol_match", symbols: [ "L_DSIGN", "T_WORD" ], postprocess: ({data}) => { return { token: data[1]}; } },
110
+ { name: "expression_symbol_match", symbols: [ "L_DSIGN", "T_STRING" ], postprocess: ({data}) => { return { token: data[1]}; } },
111
+ { name: "expression_symbol_match", symbols: [ "T_REGEX" ], postprocess: ({data}) => { return data[0]; } },
112
+ { name: "expression_symbol_match", symbols: [ "L_PARENL", "_", "expression_list", "_", "L_PARENR" ], postprocess: ({data}) => { return { subexpression: data[2] }; } },
113
+ { name: "expression_symbol_match", symbols: [ "T_JS" ], postprocess: ({data}) => { return data[0]; } }
114
+ ],
115
+ expression_symbol_match$RPT01x1: [
116
+ { name: "expression_symbol_match$RPT01x1", symbols: [ { literal: "i" } ], postprocess: ({data}) => data[0] },
117
+ { name: "expression_symbol_match$RPT01x1", symbols: [ ], postprocess: () => null }
118
+ ],
119
+ expression_repeater: [
120
+ { name: "expression_repeater", symbols: [ "L_QMARK" ], postprocess: ({data}) => { return data[0][0].value; } },
121
+ { name: "expression_repeater", symbols: [ "L_PLUS" ], postprocess: ({data}) => { return data[0][0].value; } },
122
+ { name: "expression_repeater", symbols: [ "L_STAR" ], postprocess: ({data}) => { return data[0][0].value; } }
123
+ ],
124
+ kv_list: [
125
+ { name: "kv_list", symbols: [ "kv" ], postprocess: ({data}) => { return data; } },
126
+ { name: "kv_list", symbols: [ "kv", "_", "kv_list" ], postprocess: ({data}) => { return [data[0]].concat(data[2]); } }
127
+ ],
128
+ kv$SUBx1: [
129
+ { name: "kv$SUBx1", symbols: [ "T_WORD" ] },
130
+ { name: "kv$SUBx1", symbols: [ "T_STRING" ] },
131
+ { name: "kv$SUBx1", symbols: [ "T_INTEGER" ] },
132
+ { name: "kv$SUBx1", symbols: [ "T_JS" ] },
133
+ { name: "kv$SUBx1", symbols: [ "T_GRAMMAR_TEMPLATE" ] }
134
+ ],
135
+ kv: [
136
+ { name: "kv", symbols: [ "T_WORD", "_", "L_COLON", "_", "kv$SUBx1" ], postprocess: ({data}) => { return { [data[0]]: data[4][0] }; } }
137
+ ],
138
+ string_list: [
139
+ { name: "string_list", symbols: [ "T_STRING" ], postprocess: ({data}) => { return [data[0]]; } },
140
+ { name: "string_list", symbols: [ "T_STRING", "_", "L_COMMA", "_", "string_list" ], postprocess: ({data}) => { return [data[0]].concat(data[4]); } }
141
+ ],
142
+ word_list: [
143
+ { name: "word_list", symbols: [ "T_WORD" ], postprocess: ({data}) => { return [data[0]]; } },
144
+ { name: "word_list", symbols: [ "T_WORD", "_", "L_COMMA", "_", "word_list" ], postprocess: ({data}) => { return [data[0]].concat(data[4]); } }
145
+ ],
146
+ _$RPT0Nx1: [
147
+ { name: "_$RPT0Nx1", symbols: [ ] },
148
+ { name: "_$RPT0Nx1", symbols: [ "_$RPT0Nx1", "_$RPT0Nx1$SUBx1" ], postprocess: ({data}) => data[0].concat([data[1]]) }
149
+ ],
150
+ _$RPT0Nx1$SUBx1: [
151
+ { name: "_$RPT0Nx1$SUBx1", symbols: [ "T_WS" ] },
152
+ { name: "_$RPT0Nx1$SUBx1", symbols: [ "T_COMMENT" ] }
153
+ ],
154
+ _: [
155
+ { name: "_", symbols: [ "_$RPT0Nx1" ], postprocess: ({data}) => { return null; } }
156
+ ],
157
+ __$RPT1Nx1$SUBx1: [
158
+ { name: "__$RPT1Nx1$SUBx1", symbols: [ "T_WS" ] },
159
+ { name: "__$RPT1Nx1$SUBx1", symbols: [ "T_COMMENT" ] }
160
+ ],
161
+ __$RPT1Nx1: [
162
+ { name: "__$RPT1Nx1", symbols: [ "__$RPT1Nx1$SUBx1" ] },
163
+ { name: "__$RPT1Nx1", symbols: [ "__$RPT1Nx1", "__$RPT1Nx1$SUBx2" ], postprocess: ({data}) => data[0].concat([data[1]]) }
164
+ ],
165
+ __$RPT1Nx1$SUBx2: [
166
+ { name: "__$RPT1Nx1$SUBx2", symbols: [ "T_WS" ] },
167
+ { name: "__$RPT1Nx1$SUBx2", symbols: [ "T_COMMENT" ] }
168
+ ],
169
+ __: [
170
+ { name: "__", symbols: [ "__$RPT1Nx1" ], postprocess: ({data}) => { return null; } }
171
+ ],
172
+ L_COLON: [
173
+ { name: "L_COLON", symbols: [ { token: "L_COLON" } ] }
174
+ ],
175
+ L_SCOLON: [
176
+ { name: "L_SCOLON", symbols: [ { token: "L_SCOLON" } ] }
177
+ ],
178
+ L_QMARK: [
179
+ { name: "L_QMARK", symbols: [ { token: "L_QMARK" } ] }
180
+ ],
181
+ L_PLUS: [
182
+ { name: "L_PLUS", symbols: [ { token: "L_PLUS" } ] }
183
+ ],
184
+ L_STAR: [
185
+ { name: "L_STAR", symbols: [ { token: "L_STAR" } ] }
186
+ ],
187
+ L_COMMA: [
188
+ { name: "L_COMMA", symbols: [ { token: "L_COMMA" } ] }
189
+ ],
190
+ L_PIPE: [
191
+ { name: "L_PIPE", symbols: [ { token: "L_PIPE" } ] }
192
+ ],
193
+ L_PARENL: [
194
+ { name: "L_PARENL", symbols: [ { token: "L_PARENL" } ] }
195
+ ],
196
+ L_PARENR: [
197
+ { name: "L_PARENR", symbols: [ { token: "L_PARENR" } ] }
198
+ ],
199
+ L_TEMPLATEL: [
200
+ { name: "L_TEMPLATEL", symbols: [ { token: "L_TEMPLATEL" } ] }
201
+ ],
202
+ L_TEMPLATER: [
203
+ { name: "L_TEMPLATER", symbols: [ { token: "L_TEMPLATER" } ] }
204
+ ],
205
+ L_ARROW: [
206
+ { name: "L_ARROW", symbols: [ { token: "L_ARROW" } ] }
207
+ ],
208
+ L_DSIGN: [
209
+ { name: "L_DSIGN", symbols: [ { token: "L_DSIGN" } ] }
210
+ ],
211
+ L_DASH: [
212
+ { name: "L_DASH", symbols: [ { token: "L_DASH" } ] }
213
+ ],
214
+ K_ALL: [
215
+ { name: "K_ALL", symbols: [ { literal: "all" } ] }
216
+ ],
217
+ K_TAG: [
218
+ { name: "K_TAG", symbols: [ { literal: "tag" } ] }
219
+ ],
220
+ K_FROM: [
221
+ { name: "K_FROM", symbols: [ { literal: "from" } ] }
222
+ ],
223
+ K_TYPE: [
224
+ { name: "K_TYPE", symbols: [ { literal: "type" } ] }
225
+ ],
226
+ K_WHEN: [
227
+ { name: "K_WHEN", symbols: [ { literal: "when" } ] }
228
+ ],
229
+ K_POP: [
230
+ { name: "K_POP", symbols: [ { literal: "pop" } ] }
231
+ ],
232
+ K_HIGHLIGHT: [
233
+ { name: "K_HIGHLIGHT", symbols: [ { literal: "highlight" } ] }
234
+ ],
235
+ K_INSET: [
236
+ { name: "K_INSET", symbols: [ { literal: "inset" } ] }
237
+ ],
238
+ K_SET: [
239
+ { name: "K_SET", symbols: [ { literal: "set" } ] }
240
+ ],
241
+ K_GOTO: [
242
+ { name: "K_GOTO", symbols: [ { literal: "goto" } ] }
243
+ ],
244
+ K_CONFIG: [
245
+ { name: "K_CONFIG", symbols: [ { literal: "config" } ] }
246
+ ],
247
+ K_LEXER: [
248
+ { name: "K_LEXER", symbols: [ { literal: "lexer" } ] }
249
+ ],
250
+ K_GRAMMAR: [
251
+ { name: "K_GRAMMAR", symbols: [ { literal: "grammar" } ] }
252
+ ],
253
+ K_IMPORT: [
254
+ { name: "K_IMPORT", symbols: [ { literal: "import" } ] }
255
+ ],
256
+ K_BODY: [
257
+ { name: "K_BODY", symbols: [ { literal: "body" } ] }
258
+ ],
259
+ K_HEAD: [
260
+ { name: "K_HEAD", symbols: [ { literal: "head" } ] }
261
+ ],
262
+ T_JS$RPT0Nx1: [
263
+ { name: "T_JS$RPT0Nx1", symbols: [ ] },
264
+ { name: "T_JS$RPT0Nx1", symbols: [ "T_JS$RPT0Nx1", { token: "T_JSBODY" } ], postprocess: ({data}) => data[0].concat([data[1]]) }
265
+ ],
266
+ T_JS: [
267
+ { name: "T_JS", symbols: [ { token: "L_JSL" }, "T_JS$RPT0Nx1", { token: "L_JSR" } ], postprocess: ({data}) => { return { js: data[1].map(v=>v.value).join('') }; } }
268
+ ],
269
+ T_GRAMMAR_TEMPLATE$RPT0Nx1: [
270
+ { name: "T_GRAMMAR_TEMPLATE$RPT0Nx1", symbols: [ ] },
271
+ { name: "T_GRAMMAR_TEMPLATE$RPT0Nx1", symbols: [ "T_GRAMMAR_TEMPLATE$RPT0Nx1", { token: "T_JSBODY" } ], postprocess: ({data}) => data[0].concat([data[1]]) }
272
+ ],
273
+ T_GRAMMAR_TEMPLATE: [
274
+ { name: "T_GRAMMAR_TEMPLATE", symbols: [ { token: "L_TEMPLATEL" }, "_", "T_GRAMMAR_TEMPLATE$RPT0Nx1", "_", { token: "L_TEMPLATER" } ], postprocess: ({data}) => { return { template: data[2].map(v=>v.value).join('').trim() }; } }
275
+ ],
276
+ T_STRING: [
277
+ { name: "T_STRING", symbols: [ { token: "T_STRING" } ], postprocess: ({data}) => { return JSON.parse(data[0].value); } }
278
+ ],
279
+ T_WORD: [
280
+ { name: "T_WORD", symbols: [ { token: "T_WORD" } ], postprocess: ({data}) => { return data[0].value; } }
281
+ ],
282
+ T_REGEX$RPT0Nx1: [
283
+ { name: "T_REGEX$RPT0Nx1", symbols: [ ] },
284
+ { name: "T_REGEX$RPT0Nx1", symbols: [ "T_REGEX$RPT0Nx1", /[gmiuy]/ ], postprocess: ({data}) => data[0].concat([data[1]]) }
285
+ ],
286
+ T_REGEX: [
287
+ { name: "T_REGEX", symbols: [ { token: "T_REGEX" }, "T_REGEX$RPT0Nx1" ], postprocess: ({data}) => { return { regex: data[0].value.replace(/\\\\\//g,'/').slice(1,-1), flags: data[1].map(v=>v.value).join('').trim() }; } }
288
+ ],
289
+ T_COMMENT: [
290
+ { name: "T_COMMENT", symbols: [ { token: "T_COMMENT" } ] }
291
+ ],
292
+ T_INTEGER: [
293
+ { name: "T_INTEGER", symbols: [ { token: "T_INTEGER" } ], postprocess: ({data}) => { return data[0].value; } }
294
+ ],
295
+ T_WS: [
296
+ { name: "T_WS", symbols: [ { token: "T_WS" } ], postprocess: ({data}) => { return null; } }
297
+ ]
298
+ }
299
+ },
300
+ lexer: {
301
+ start: "start",
302
+ states: {
303
+ start: {
304
+ name: "start",
305
+ rules: [
306
+ { import: ["string","js","ws","comment","l_scolon","l_star"] },
307
+ { when: /lexer(?![a-zA-Z\d_])/, tag: ["T_WORD"], highlight: "type", goto: "lexer" },
308
+ { when: /grammar(?![a-zA-Z\d_])/, tag: ["T_WORD"], highlight: "type", goto: "grammar" },
309
+ { when: /config(?![a-zA-Z\d_])/, tag: ["T_WORD"], highlight: "type", goto: "config" },
310
+ { import: ["kv"] }
311
+ ]
312
+ },
313
+ config: {
314
+ name: "config",
315
+ rules: [
316
+ { import: ["ws","l_colon"] },
317
+ { when: "{{", tag: ["L_TEMPLATEL"], set: "config_inner" }
318
+ ]
319
+ },
320
+ config_inner: {
321
+ name: "config_inner",
322
+ rules: [
323
+ { import: ["comment","kv"] },
324
+ { when: "}}", tag: ["L_TEMPLATER"], pop: 1 }
325
+ ]
326
+ },
327
+ grammar: {
328
+ name: "grammar",
329
+ rules: [
330
+ { import: ["ws","l_colon"] },
331
+ { when: "{{", tag: ["L_TEMPLATEL"], set: "grammar_inner" }
332
+ ]
333
+ },
334
+ grammar_inner: {
335
+ name: "grammar_inner",
336
+ rules: [
337
+ { import: ["comment","js","js_template","ws","regex","l_qmark","l_plus","l_star","kv","l_colon","l_comma","l_pipe","l_parenl","l_parenr","l_arrow","l_dsign","l_dash"] },
338
+ { when: "}}", tag: ["L_TEMPLATER"], pop: 1 }
339
+ ]
340
+ },
341
+ lexer: {
342
+ name: "lexer",
343
+ rules: [
344
+ { import: ["ws","l_colon"] },
345
+ { when: "{{", tag: ["L_TEMPLATEL"], set: "lexer_inner" }
346
+ ]
347
+ },
348
+ lexer_inner: {
349
+ name: "lexer_inner",
350
+ rules: [
351
+ { import: ["ws","comment","regex","l_comma","l_arrow","l_dash","kv","js"] },
352
+ { when: "}}", tag: ["L_TEMPLATER"], pop: 1 }
353
+ ]
354
+ },
355
+ js: {
356
+ name: "js",
357
+ rules: [
358
+ { when: "${", tag: ["L_JSL"], goto: "js_wrap" }
359
+ ]
360
+ },
361
+ js_wrap: {
362
+ name: "js_wrap",
363
+ default: "T_JSBODY",
364
+ unmatched: "T_JSBODY",
365
+ rules: [
366
+ { import: ["jsignore"] },
367
+ { when: "{", tag: ["T_JSBODY"], goto: "js_literal" },
368
+ { when: "}", tag: ["L_JSR"], pop: 1 }
369
+ ]
370
+ },
371
+ js_literal: {
372
+ name: "js_literal",
373
+ default: "T_JSBODY",
374
+ unmatched: "T_JSBODY",
375
+ rules: [
376
+ { import: ["jsignore"] },
377
+ { when: "{", tag: ["T_JSBODY"], goto: "js_literal" },
378
+ { when: "}", tag: ["T_JSBODY"], pop: 1 }
379
+ ]
380
+ },
381
+ js_template: {
382
+ name: "js_template",
383
+ rules: [
384
+ { when: "{{", tag: ["L_TEMPLATEL"], goto: "js_template_inner" }
385
+ ]
386
+ },
387
+ js_template_inner: {
388
+ name: "js_template_inner",
389
+ default: "T_JSBODY",
390
+ unmatched: "T_JSBODY",
391
+ rules: [
392
+ { import: ["jsignore"] },
393
+ { when: "{", tag: ["T_JSBODY"], goto: "js_literal" },
394
+ { when: "}}", tag: ["L_TEMPLATER"], pop: 1 }
395
+ ]
396
+ },
397
+ kv: {
398
+ name: "kv",
399
+ rules: [
400
+ { import: ["string","ws","word","l_colon","integer"] }
401
+ ]
402
+ },
403
+ jsignore: {
404
+ name: "jsignore",
405
+ rules: [
406
+ { when: /"(?:[^"\\\r\n]|\\.)*"/, tag: ["T_JSBODY"] },
407
+ { when: /'(?:[^'\\\r\n]|\\.)*'/, tag: ["T_JSBODY"] },
408
+ { when: /`(?:[^`\\]|\\.)*`/, tag: ["T_JSBODY"] },
409
+ { when: /\/(?:[^\/\\\r\n]|\\.)+\/[gmiyu]*/, tag: ["T_JSBODY"] },
410
+ { when: /\/\/[^\n]*/, tag: ["T_JSBODY"] },
411
+ { when: /\/\*.*\*\//, tag: ["T_JSBODY"] }
412
+ ]
413
+ },
414
+ string: {
415
+ name: "string",
416
+ rules: [
417
+ { when: /"(?:[^"\\\r\n]|\\.)*"/, tag: ["T_STRING"], highlight: "string" }
418
+ ]
419
+ },
420
+ string2: {
421
+ name: "string2",
422
+ rules: [
423
+ { when: /'(?:[^'\\\r\n]|\\.)*'/, tag: ["T_STRING"], highlight: "string" }
424
+ ]
425
+ },
426
+ string3: {
427
+ name: "string3",
428
+ rules: [
429
+ { when: /`(?:[^`\\]|\\.)*`/, tag: ["T_STRING"], highlight: "string" }
430
+ ]
431
+ },
432
+ regex: {
433
+ name: "regex",
434
+ rules: [
435
+ { when: /\/(?:[^\/\\\r\n]|\\.)+\//, tag: ["T_REGEX"], highlight: "regexp" }
436
+ ]
437
+ },
438
+ integer: {
439
+ name: "integer",
440
+ rules: [
441
+ { when: /\d+/, tag: ["T_INTEGER"], highlight: "number" }
442
+ ]
443
+ },
444
+ word: {
445
+ name: "word",
446
+ rules: [
447
+ { when: /[a-zA-Z_][a-zA-Z_\d]*/, tag: ["T_WORD"] }
448
+ ]
449
+ },
450
+ ws: {
451
+ name: "ws",
452
+ rules: [
453
+ { when: /\s+/, tag: ["T_WS"] }
454
+ ]
455
+ },
456
+ l_colon: {
457
+ name: "l_colon",
458
+ rules: [
459
+ { when: ":", tag: ["L_COLON"], highlight: "keyword" }
460
+ ]
461
+ },
462
+ l_scolon: {
463
+ name: "l_scolon",
464
+ rules: [
465
+ { when: ";", tag: ["L_SCOLON"] }
466
+ ]
467
+ },
468
+ l_qmark: {
469
+ name: "l_qmark",
470
+ rules: [
471
+ { when: "?", tag: ["L_QMARK"] }
472
+ ]
473
+ },
474
+ l_plus: {
475
+ name: "l_plus",
476
+ rules: [
477
+ { when: "+", tag: ["L_PLUS"] }
478
+ ]
479
+ },
480
+ l_star: {
481
+ name: "l_star",
482
+ rules: [
483
+ { when: "*", tag: ["L_STAR"] }
484
+ ]
485
+ },
486
+ l_comma: {
487
+ name: "l_comma",
488
+ rules: [
489
+ { when: ",", tag: ["L_COMMA"] }
490
+ ]
491
+ },
492
+ l_pipe: {
493
+ name: "l_pipe",
494
+ rules: [
495
+ { when: "|", tag: ["L_PIPE"], highlight: "keyword" }
496
+ ]
497
+ },
498
+ l_parenl: {
499
+ name: "l_parenl",
500
+ rules: [
501
+ { when: "(", tag: ["L_PARENL"] }
502
+ ]
503
+ },
504
+ l_parenr: {
505
+ name: "l_parenr",
506
+ rules: [
507
+ { when: ")", tag: ["L_PARENR"] }
508
+ ]
509
+ },
510
+ l_templatel: {
511
+ name: "l_templatel",
512
+ rules: [
513
+ { when: "{{", tag: ["L_TEMPLATEL"] }
514
+ ]
515
+ },
516
+ l_templater: {
517
+ name: "l_templater",
518
+ rules: [
519
+ { when: "}}", tag: ["L_TEMPLATER"] }
520
+ ]
521
+ },
522
+ l_arrow: {
523
+ name: "l_arrow",
524
+ rules: [
525
+ { when: "->", tag: ["L_ARROW"], highlight: "keyword" }
526
+ ]
527
+ },
528
+ l_dsign: {
529
+ name: "l_dsign",
530
+ rules: [
531
+ { when: "$", tag: ["L_DSIGN"] }
532
+ ]
533
+ },
534
+ l_dash: {
535
+ name: "l_dash",
536
+ rules: [
537
+ { when: "-", tag: ["L_DASH"] }
538
+ ]
539
+ },
540
+ comment: {
541
+ name: "comment",
542
+ rules: [
543
+ { when: /\/\/[^\n]*/, tag: ["T_COMMENT"], highlight: "comment" }
544
+ ]
545
+ },
546
+ commentmulti: {
547
+ name: "commentmulti",
548
+ rules: [
549
+ { when: /\/\*.*\*\//, tag: ["T_COMMENT"], highlight: "comment" }
550
+ ]
551
+ }
552
+ }
553
+ }
554
+ }
555
+ }
556
+
557
+ export default GWLanguage;
package/src/typings.ts CHANGED
@@ -47,6 +47,7 @@ export type JavascriptDirective = { body: GrammarTypeJS; } | { head: GrammarType
47
47
  export interface ImportDirective {
48
48
  import: string;
49
49
  path?: boolean;
50
+ alias?: string;
50
51
  }
51
52
 
52
53
  export interface ConfigDirective {