tree-sitter-raml 0.1.0

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.
package/grammar.js ADDED
@@ -0,0 +1,742 @@
1
+ /**
2
+ * @file RAML grammar for tree-sitter
3
+ *
4
+ * RAML is YAML at its syntactic core, so the block/flow rule structure and the
5
+ * external indentation scanner are adapted from tree-sitter-yaml
6
+ * (copyright 2020 Ika, MIT) — see NOTICE. The RAML layer on top is the
7
+ * `#%RAML` header comment, resource path keys, method blocks and the
8
+ * `!include` tag.
9
+ *
10
+ * @author Ika <ikatyang@gmail.com> (original YAML grammar)
11
+ * @author M. Reifschneider (RAML adaptation)
12
+ * @license MIT
13
+ */
14
+
15
+ /// <reference types="tree-sitter-cli/dsl" />
16
+
17
+ const raml = grammar({
18
+ name: 'raml',
19
+
20
+ /* eslint-disable no-multi-spaces */
21
+ /* eslint-disable indent */
22
+
23
+ externals: $ => [
24
+ $._eof,
25
+
26
+ // s = starts at column 0 in the current or following row
27
+ // r = starts with 0 or more s_white in the current row
28
+ // br = starts with more than `current_indent` s_white in the following row
29
+ // b = starts with `current_indent` s_white in the following row
30
+ // bl = starts with `parent_indent` or less s_white in the following row
31
+ $._s_dir_yml_bgn, $._r_dir_yml_ver, // %YAML 1.2
32
+ $._s_dir_tag_bgn, $._r_dir_tag_hdl, $._r_dir_tag_pfx, // %TAG !yaml! tag:yaml.org,2002:
33
+ $._s_dir_rsv_bgn, $._r_dir_rsv_prm, // %FOO bar baz
34
+ $._s_drs_end, // ---
35
+ $._s_doc_end, // ...
36
+ $._r_blk_seq_bgn, $._br_blk_seq_bgn, $._b_blk_seq_bgn, // -
37
+ $._r_blk_key_bgn, $._br_blk_key_bgn, $._b_blk_key_bgn, // ?
38
+ $._r_blk_val_bgn, $._br_blk_val_bgn, $._b_blk_val_bgn, // :
39
+ $._r_blk_imp_bgn, // : (implicit)
40
+ $._r_blk_lit_bgn, $._br_blk_lit_bgn, // |
41
+ $._r_blk_fld_bgn, $._br_blk_fld_bgn, // >
42
+ $._br_blk_str_ctn, // block scalar content
43
+ $._r_flw_seq_bgn, $._br_flw_seq_bgn, $._b_flw_seq_bgn, // [
44
+ $._r_flw_seq_end, $._br_flw_seq_end, $._b_flw_seq_end, // ]
45
+ $._r_flw_map_bgn, $._br_flw_map_bgn, $._b_flw_map_bgn, // {
46
+ $._r_flw_map_end, $._br_flw_map_end, $._b_flw_map_end, // }
47
+ $._r_flw_sep_bgn, $._br_flw_sep_bgn, // ,
48
+ $._r_flw_key_bgn, $._br_flw_key_bgn, // ?
49
+ $._r_flw_jsv_bgn, $._br_flw_jsv_bgn, // : (json key)
50
+ $._r_flw_njv_bgn, $._br_flw_njv_bgn, // : (non-json key)
51
+ $._r_dqt_str_bgn, $._br_dqt_str_bgn, $._b_dqt_str_bgn, // " (start)
52
+ $._r_dqt_str_ctn, $._br_dqt_str_ctn, // double quote scalar content
53
+ $._r_dqt_esc_nwl, $._br_dqt_esc_nwl, // escape newline
54
+ $._r_dqt_esc_seq, $._br_dqt_esc_seq, // escape sequence
55
+ $._r_dqt_str_end, $._br_dqt_str_end, // " (end)
56
+ $._r_sqt_str_bgn, $._br_sqt_str_bgn, $._b_sqt_str_bgn, // ' (start)
57
+ $._r_sqt_str_ctn, $._br_sqt_str_ctn, // single quote scalar content
58
+ $._r_sqt_esc_sqt, $._br_sqt_esc_sqt, // ''
59
+ $._r_sqt_str_end, $._br_sqt_str_end, // ' (end)
60
+
61
+ // plain scalar (singleline in block/flow)
62
+ $._r_sgl_pln_nul_blk, $._br_sgl_pln_nul_blk, $._b_sgl_pln_nul_blk, $._r_sgl_pln_nul_flw, $._br_sgl_pln_nul_flw,
63
+ $._r_sgl_pln_bol_blk, $._br_sgl_pln_bol_blk, $._b_sgl_pln_bol_blk, $._r_sgl_pln_bol_flw, $._br_sgl_pln_bol_flw,
64
+ $._r_sgl_pln_int_blk, $._br_sgl_pln_int_blk, $._b_sgl_pln_int_blk, $._r_sgl_pln_int_flw, $._br_sgl_pln_int_flw,
65
+ $._r_sgl_pln_flt_blk, $._br_sgl_pln_flt_blk, $._b_sgl_pln_flt_blk, $._r_sgl_pln_flt_flw, $._br_sgl_pln_flt_flw,
66
+ $._r_sgl_pln_tms_blk, $._br_sgl_pln_tms_blk, $._b_sgl_pln_tms_blk, $._r_sgl_pln_tms_flw, $._br_sgl_pln_tms_flw,
67
+ $._r_sgl_pln_str_blk, $._br_sgl_pln_str_blk, $._b_sgl_pln_str_blk, $._r_sgl_pln_str_flw, $._br_sgl_pln_str_flw,
68
+
69
+ // plain scalar (multiline in block/flow)
70
+ $._r_mtl_pln_str_blk, $._br_mtl_pln_str_blk,
71
+ $._r_mtl_pln_str_flw, $._br_mtl_pln_str_flw,
72
+
73
+ $._r_tag, $._br_tag, $._b_tag, // !tag
74
+ $._r_acr_bgn, $._br_acr_bgn, $._b_acr_bgn, $._r_acr_ctn, // &id
75
+ $._r_als_bgn, $._br_als_bgn, $._b_als_bgn, $._r_als_ctn, // *id
76
+
77
+ $._bl,
78
+ $.comment,
79
+
80
+ $._err_rec,
81
+ ],
82
+
83
+ /* eslint-enable no-multi-spaces */
84
+ /* eslint-enable indent */
85
+
86
+ extras: $ => [$.comment],
87
+
88
+ conflicts: $ => [
89
+ [$._r_prp, $._r_sgl_prp],
90
+ [$._br_prp, $._br_sgl_prp],
91
+ [$._flw_seq_tal, $._sgl_flw_seq_tal],
92
+ [$._flw_map_tal, $._sgl_flw_map_tal],
93
+ [$._flw_ann_par_tal, $._sgl_flw_ann_par_tal],
94
+ [$._r_flw_seq_itm, $._r_sgl_flw_col_itm],
95
+ [$._r_flw_map_itm, $._r_sgl_flw_col_itm],
96
+ [$._r_flw_njl_ann_par, $._r_sgl_flw_njl_ann_par],
97
+ [$._r_flw_exp_par, $._r_sgl_flw_exp_par],
98
+ [$._r_dqt_str, $._r_sgl_dqt_str],
99
+ [$._r_sqt_str, $._r_sgl_sqt_str],
100
+ [$._r_pln_flw_val, $._r_sgl_pln_flw_val],
101
+
102
+ /**
103
+ * (_r_prp _r_acr • _br_tag)
104
+ *
105
+ * &str
106
+ * !!str a
107
+ *
108
+ * (_r_prp _r_acr) • _br_tag
109
+ *
110
+ * &map
111
+ * !!str a: 1
112
+ */
113
+ [$._r_prp],
114
+ [$._br_prp],
115
+ ],
116
+
117
+ inline: $ => [
118
+ $._r_pln_blk,
119
+ $._br_pln_blk,
120
+ $._r_pln_flw,
121
+ $._br_pln_flw,
122
+ $._r_blk_seq_val,
123
+ $._r_blk_map_val,
124
+ $._r_flw_val_blk,
125
+ $._br_flw_val_blk,
126
+ $._r_sgl_flw_val_blk,
127
+ $._br_sgl_flw_val_blk,
128
+ $._b_sgl_flw_val_blk,
129
+ $._r_flw_val_flw,
130
+ $._br_flw_val_flw,
131
+ $._r_sgl_flw_val_flw,
132
+ $._r_flw_jsl_val,
133
+ $._br_flw_jsl_val,
134
+ $._r_sgl_flw_jsl_val,
135
+ $._br_sgl_flw_jsl_val,
136
+ $._b_sgl_flw_jsl_val,
137
+ $._r_flw_njl_val_blk,
138
+ $._br_flw_njl_val_blk,
139
+ $._r_sgl_flw_njl_val_blk,
140
+ $._br_sgl_flw_njl_val_blk,
141
+ $._b_sgl_flw_njl_val_blk,
142
+ $._r_flw_njl_val_flw,
143
+ $._br_flw_njl_val_flw,
144
+ $._r_sgl_flw_njl_val_flw,
145
+ ],
146
+
147
+ rules: {
148
+ stream: $ => seq(optional(choice(
149
+ seq(
150
+ choice($._bgn_imp_doc, $._drs_doc, $._exp_doc),
151
+ optional(choice($._doc_w_bgn_w_end_seq, $._doc_w_bgn_wo_end_seq))),
152
+ seq(
153
+ choice($._bgn_imp_doc_end, $._drs_doc_end, $._exp_doc_end, $._doc_end),
154
+ optional(choice($._doc_w_bgn_w_end_seq, $._doc_w_bgn_wo_end_seq, $._doc_wo_bgn_w_end_seq, $._doc_wo_bgn_wo_end_seq))),
155
+ )), $._eof),
156
+
157
+ _doc_w_bgn_w_end_seq: $ => seq(
158
+ $._doc_w_bgn_w_end,
159
+ optional(choice(
160
+ $._doc_w_bgn_w_end_seq,
161
+ $._doc_w_bgn_wo_end_seq,
162
+ $._doc_wo_bgn_w_end_seq,
163
+ $._doc_wo_bgn_wo_end_seq,
164
+ )),
165
+ ),
166
+ _doc_w_bgn_wo_end_seq: $ => seq(
167
+ $._doc_w_bgn_wo_end,
168
+ optional(choice(
169
+ $._doc_w_bgn_w_end_seq,
170
+ $._doc_w_bgn_wo_end_seq,
171
+ )),
172
+ ),
173
+ _doc_wo_bgn_w_end_seq: $ => seq(
174
+ $._doc_wo_bgn_w_end,
175
+ optional(choice(
176
+ $._doc_w_bgn_w_end_seq,
177
+ $._doc_w_bgn_wo_end_seq,
178
+ $._doc_wo_bgn_w_end_seq,
179
+ $._doc_wo_bgn_wo_end_seq,
180
+ )),
181
+ ),
182
+ _doc_wo_bgn_wo_end_seq: $ => seq(
183
+ $._doc_wo_bgn_wo_end,
184
+ optional(choice(
185
+ $._doc_w_bgn_w_end_seq,
186
+ $._doc_w_bgn_wo_end_seq,
187
+ )),
188
+ ),
189
+
190
+ _doc_w_bgn_w_end: $ => choice($._exp_doc_end, $._doc_end),
191
+ _doc_w_bgn_wo_end: $ => $._exp_doc,
192
+ _doc_wo_bgn_w_end: $ => choice($._drs_doc_end, $._imp_doc_end),
193
+ _doc_wo_bgn_wo_end: $ => choice($._drs_doc, $._imp_doc),
194
+
195
+ // document
196
+
197
+ _bgn_imp_doc: $ => choice($._exp_doc_tal, $._r_blk_seq_r_val, $._r_blk_map_r_val),
198
+ _drs_doc: $ => seq(repeat1($._s_dir), $._exp_doc),
199
+ _exp_doc: $ => seq($._s_drs_end, optional($._exp_doc_tal)),
200
+ _imp_doc: $ => choice($._br_blk_seq_val, $._br_blk_map_val, $._br_blk_str_val, $._br_flw_val_blk),
201
+
202
+ _drs_doc_end: $ => prec(1, seq($._drs_doc, $._s_doc_end)),
203
+ _exp_doc_end: $ => prec(1, seq($._exp_doc, $._s_doc_end)),
204
+ _imp_doc_end: $ => prec(1, seq($._imp_doc, $._s_doc_end)),
205
+ _bgn_imp_doc_end: $ => prec(1, seq($._bgn_imp_doc, $._s_doc_end)),
206
+ _doc_end: $ => $._s_doc_end,
207
+
208
+ _exp_doc_tal: $ => choice(
209
+ $._r_blk_seq_br_val,
210
+ $._br_blk_seq_val,
211
+ $._r_blk_map_br_val,
212
+ $._br_blk_map_val,
213
+ $._r_blk_str_val,
214
+ $._br_blk_str_val,
215
+ $._r_flw_val_blk,
216
+ $._br_flw_val_blk,
217
+ ),
218
+
219
+ // directive
220
+
221
+ _s_dir: $ => choice($._s_dir_yml, $._s_dir_tag, $._s_dir_rsv),
222
+
223
+ _s_dir_yml: $ => seq($._s_dir_yml_bgn, $._r_dir_yml_ver),
224
+ _s_dir_tag: $ => seq($._s_dir_tag_bgn, $._r_dir_tag_hdl, $._r_dir_tag_pfx),
225
+ _s_dir_rsv: $ => seq($._s_dir_rsv_bgn, repeat($._r_dir_rsv_prm)),
226
+
227
+ // property
228
+
229
+ _r_prp_val: $ => $._r_prp,
230
+ _br_prp_val: $ => $._br_prp,
231
+
232
+ _r_sgl_prp_val: $ => $._r_sgl_prp,
233
+ _br_sgl_prp_val: $ => $._br_sgl_prp,
234
+ _b_sgl_prp_val: $ => $._b_sgl_prp,
235
+
236
+ _r_prp: $ => choice(seq($._r_acr, optional(choice($._r_tag, $._br_tag))), seq($._r_tag, optional(choice($._r_acr, $._br_acr)))),
237
+ _br_prp: $ => choice(seq($._br_acr, optional(choice($._r_tag, $._br_tag))), seq($._br_tag, optional(choice($._r_acr, $._br_acr)))),
238
+
239
+ _r_sgl_prp: $ => choice(seq($._r_acr, optional($._r_tag)), seq($._r_tag, optional($._r_acr))),
240
+ _br_sgl_prp: $ => choice(seq($._br_acr, optional($._r_tag)), seq($._br_tag, optional($._r_acr))),
241
+ _b_sgl_prp: $ => choice(seq($._b_acr, optional($._r_tag)), seq($._b_tag, optional($._r_acr))),
242
+
243
+ // block sequence
244
+
245
+ _r_blk_seq_val: $ => choice($._r_blk_seq_r_val, $._r_blk_seq_br_val),
246
+ _r_blk_seq_r_val: $ => $._r_blk_seq,
247
+ _r_blk_seq_br_val: $ => seq($._r_prp, $._br_blk_seq),
248
+ _br_blk_seq_val: $ => choice($._br_blk_seq, seq($._br_prp, $._br_blk_seq)),
249
+
250
+ _r_blk_seq_spc_val: $ => seq($._r_prp, $._b_blk_seq_spc),
251
+ _br_blk_seq_spc_val: $ => seq($._br_prp, $._b_blk_seq_spc),
252
+ _b_blk_seq_spc_val: $ => $._b_blk_seq_spc,
253
+
254
+ _r_blk_seq: $ => seq($._r_blk_seq_itm, repeat($._b_blk_seq_itm), $._bl),
255
+ _br_blk_seq: $ => seq($._br_blk_seq_itm, repeat($._b_blk_seq_itm), $._bl),
256
+
257
+ _b_blk_seq_spc: $ => seq(repeat1($._b_blk_seq_itm), $._bl),
258
+
259
+ _r_blk_seq_itm: $ => seq($._r_blk_seq_bgn, optional($._blk_seq_itm_tal)),
260
+ _br_blk_seq_itm: $ => seq($._br_blk_seq_bgn, optional($._blk_seq_itm_tal)),
261
+ _b_blk_seq_itm: $ => seq($._b_blk_seq_bgn, optional($._blk_seq_itm_tal)),
262
+
263
+ _blk_seq_itm_tal: $ => choice(
264
+ $._r_blk_seq_val,
265
+ $._br_blk_seq_val,
266
+ $._r_blk_map_val,
267
+ $._br_blk_map_val,
268
+ $._r_blk_str_val,
269
+ $._br_blk_str_val,
270
+ $._r_flw_val_blk,
271
+ $._br_flw_val_blk,
272
+ ),
273
+
274
+ // block mapping
275
+
276
+ _r_blk_map_val: $ => choice($._r_blk_map_r_val, $._r_blk_map_br_val),
277
+ _r_blk_map_r_val: $ => $._r_blk_map,
278
+ _r_blk_map_br_val: $ => seq($._r_prp, $._br_blk_map),
279
+ _br_blk_map_val: $ => choice($._br_blk_map, seq($._br_prp, $._br_blk_map)),
280
+
281
+ _r_blk_map: $ => seq($._r_blk_map_itm, repeat($._b_blk_map_itm), $._bl),
282
+ _br_blk_map: $ => seq($._br_blk_map_itm, repeat($._b_blk_map_itm), $._bl),
283
+
284
+ _r_blk_map_itm: $ => choice($._r_blk_exp_itm, $._r_blk_imp_itm),
285
+ _br_blk_map_itm: $ => choice($._br_blk_exp_itm, $._br_blk_imp_itm),
286
+ _b_blk_map_itm: $ => choice($._b_blk_exp_itm, $._b_blk_imp_itm),
287
+
288
+ _r_blk_exp_itm: $ => prec.right(choice(seq($._r_blk_key_itm, optional($._b_blk_val_itm)), $._r_blk_val_itm)),
289
+ _br_blk_exp_itm: $ => prec.right(choice(seq($._br_blk_key_itm, optional($._b_blk_val_itm)), $._br_blk_val_itm)),
290
+ _b_blk_exp_itm: $ => prec.right(choice(seq($._b_blk_key_itm, optional($._b_blk_val_itm)), $._b_blk_val_itm)),
291
+
292
+ _r_blk_key_itm: $ => seq($._r_blk_key_bgn, optional(field('key', $._blk_exp_itm_tal))),
293
+ _br_blk_key_itm: $ => seq($._br_blk_key_bgn, optional(field('key', $._blk_exp_itm_tal))),
294
+ _b_blk_key_itm: $ => seq($._b_blk_key_bgn, optional(field('key', $._blk_exp_itm_tal))),
295
+
296
+ _r_blk_val_itm: $ => seq($._r_blk_val_bgn, optional(field('value', $._blk_exp_itm_tal))),
297
+ _br_blk_val_itm: $ => seq($._br_blk_val_bgn, optional(field('value', $._blk_exp_itm_tal))),
298
+ _b_blk_val_itm: $ => seq($._b_blk_val_bgn, optional(field('value', $._blk_exp_itm_tal))),
299
+
300
+ _r_blk_imp_itm: $ => seq(field('key', $._r_sgl_flw_val_blk), $._blk_imp_itm_tal),
301
+ _br_blk_imp_itm: $ => seq(field('key', $._br_sgl_flw_val_blk), $._blk_imp_itm_tal),
302
+ _b_blk_imp_itm: $ => seq(field('key', $._b_sgl_flw_val_blk), $._blk_imp_itm_tal),
303
+
304
+ _blk_exp_itm_tal: $ => choice($._blk_seq_itm_tal, $._r_blk_seq_spc_val, $._br_blk_seq_spc_val, $._b_blk_seq_spc_val),
305
+ _blk_imp_itm_tal: $ => seq(
306
+ $._r_blk_imp_bgn,
307
+ optional(field('value', choice(
308
+ $._r_blk_seq_br_val,
309
+ $._br_blk_seq_val,
310
+ $._r_blk_seq_spc_val,
311
+ $._br_blk_seq_spc_val,
312
+ $._b_blk_seq_spc_val,
313
+ $._r_blk_map_br_val,
314
+ $._br_blk_map_val,
315
+ $._r_blk_str_val,
316
+ $._br_blk_str_val,
317
+ $._r_flw_val_blk,
318
+ $._br_flw_val_blk,
319
+ ))),
320
+ ),
321
+
322
+ // block scalar
323
+
324
+ _r_blk_str_val: $ => choice($._r_blk_str, seq($._r_prp, choice($._r_blk_str, $._br_blk_str))),
325
+ _br_blk_str_val: $ => choice($._br_blk_str, seq($._br_prp, choice($._r_blk_str, $._br_blk_str))),
326
+
327
+ _r_blk_str: $ => seq(choice($._r_blk_lit_bgn, $._r_blk_fld_bgn), repeat($._br_blk_str_ctn), $._bl),
328
+ _br_blk_str: $ => seq(choice($._br_blk_lit_bgn, $._br_blk_fld_bgn), repeat($._br_blk_str_ctn), $._bl),
329
+
330
+ // flow value in block
331
+
332
+ _r_flw_val_blk: $ => choice($._r_flw_jsl_val, $._r_flw_njl_val_blk),
333
+ _br_flw_val_blk: $ => choice($._br_flw_jsl_val, $._br_flw_njl_val_blk),
334
+
335
+ _r_sgl_flw_val_blk: $ => choice($._r_sgl_flw_jsl_val, $._r_sgl_flw_njl_val_blk),
336
+ _br_sgl_flw_val_blk: $ => choice($._br_sgl_flw_jsl_val, $._br_sgl_flw_njl_val_blk),
337
+ _b_sgl_flw_val_blk: $ => choice($._b_sgl_flw_jsl_val, $._b_sgl_flw_njl_val_blk),
338
+
339
+ // flow value in flow
340
+
341
+ _r_flw_val_flw: $ => choice($._r_flw_jsl_val, $._r_flw_njl_val_flw),
342
+ _br_flw_val_flw: $ => choice($._br_flw_jsl_val, $._br_flw_njl_val_flw),
343
+
344
+ _r_sgl_flw_val_flw: $ => choice($._r_sgl_flw_jsl_val, $._r_sgl_flw_njl_val_flw),
345
+
346
+ // json-like flow value
347
+
348
+ _r_flw_jsl_val: $ => choice($._r_flw_seq_val, $._r_flw_map_val, $._r_dqt_str_val, $._r_sqt_str_val),
349
+ _br_flw_jsl_val: $ => choice($._br_flw_seq_val, $._br_flw_map_val, $._br_dqt_str_val, $._br_sqt_str_val),
350
+
351
+ _r_sgl_flw_jsl_val: $ => choice($._r_sgl_flw_seq_val, $._r_sgl_flw_map_val, $._r_sgl_dqt_str_val, $._r_sgl_sqt_str_val),
352
+ _br_sgl_flw_jsl_val: $ => choice($._br_sgl_flw_seq_val, $._br_sgl_flw_map_val, $._br_sgl_dqt_str_val, $._br_sgl_sqt_str_val),
353
+ _b_sgl_flw_jsl_val: $ => choice($._b_sgl_flw_seq_val, $._b_sgl_flw_map_val, $._b_sgl_dqt_str_val, $._b_sgl_sqt_str_val),
354
+
355
+ // non-json-like flow value in block
356
+
357
+ _r_flw_njl_val_blk: $ => choice($._r_als_val, $._r_prp_val, $._r_pln_blk_val),
358
+ _br_flw_njl_val_blk: $ => choice($._br_als_val, $._br_prp_val, $._br_pln_blk_val),
359
+
360
+ _r_sgl_flw_njl_val_blk: $ => choice($._r_als_val, $._r_sgl_prp_val, $._r_sgl_pln_blk_val),
361
+ _br_sgl_flw_njl_val_blk: $ => choice($._br_als_val, $._br_sgl_prp_val, $._br_sgl_pln_blk_val),
362
+ _b_sgl_flw_njl_val_blk: $ => choice($._b_als_val, $._b_sgl_prp_val, $._b_sgl_pln_blk_val),
363
+
364
+ // non-json-like flow value in flow
365
+
366
+ _r_flw_njl_val_flw: $ => choice($._r_als_val, $._r_prp_val, $._r_pln_flw_val),
367
+ _br_flw_njl_val_flw: $ => choice($._br_als_val, $._br_prp_val, $._br_pln_flw_val),
368
+
369
+ _r_sgl_flw_njl_val_flw: $ => choice($._r_als_val, $._r_sgl_prp_val, $._r_sgl_pln_flw_val),
370
+
371
+ // flow sequence
372
+
373
+ _r_flw_seq_val: $ => choice($._r_flw_seq, seq($._r_prp, choice($._r_flw_seq, $._br_flw_seq))),
374
+ _br_flw_seq_val: $ => choice($._br_flw_seq, seq($._br_prp, choice($._r_flw_seq, $._br_flw_seq))),
375
+
376
+ _r_sgl_flw_seq_val: $ => choice($._r_sgl_flw_seq, seq($._r_sgl_prp, $._r_sgl_flw_seq)),
377
+ _br_sgl_flw_seq_val: $ => choice($._br_sgl_flw_seq, seq($._br_sgl_prp, $._r_sgl_flw_seq)),
378
+ _b_sgl_flw_seq_val: $ => choice($._b_sgl_flw_seq, seq($._b_sgl_prp, $._r_sgl_flw_seq)),
379
+
380
+ _r_flw_seq: $ => seq($._r_flw_seq_bgn, $._flw_seq_tal),
381
+ _br_flw_seq: $ => seq($._br_flw_seq_bgn, $._flw_seq_tal),
382
+
383
+ _r_sgl_flw_seq: $ => seq($._r_flw_seq_bgn, $._sgl_flw_seq_tal),
384
+ _br_sgl_flw_seq: $ => seq($._br_flw_seq_bgn, $._sgl_flw_seq_tal),
385
+ _b_sgl_flw_seq: $ => seq($._b_flw_seq_bgn, $._sgl_flw_seq_tal),
386
+
387
+ _flw_seq_tal: $ => seq(optional(choice($._r_flw_seq_dat, $._br_flw_seq_dat)), choice($._r_flw_seq_end, $._br_flw_seq_end, $._b_flw_seq_end)),
388
+ _sgl_flw_seq_tal: $ => seq(optional($._r_sgl_flw_col_dat), $._r_flw_seq_end),
389
+
390
+ // flow mapping
391
+
392
+ _r_flw_map_val: $ => choice($._r_flw_map, seq($._r_prp, choice($._r_flw_map, $._br_flw_map))),
393
+ _br_flw_map_val: $ => choice($._br_flw_map, seq($._br_prp, choice($._r_flw_map, $._br_flw_map))),
394
+
395
+ _r_sgl_flw_map_val: $ => choice($._r_sgl_flw_map, seq($._r_sgl_prp, $._r_sgl_flw_map)),
396
+ _br_sgl_flw_map_val: $ => choice($._br_sgl_flw_map, seq($._br_sgl_prp, $._r_sgl_flw_map)),
397
+ _b_sgl_flw_map_val: $ => choice($._b_sgl_flw_map, seq($._b_sgl_prp, $._r_sgl_flw_map)),
398
+
399
+ _r_flw_map: $ => seq($._r_flw_map_bgn, $._flw_map_tal),
400
+ _br_flw_map: $ => seq($._br_flw_map_bgn, $._flw_map_tal),
401
+
402
+ _r_sgl_flw_map: $ => seq($._r_flw_map_bgn, $._sgl_flw_map_tal),
403
+ _br_sgl_flw_map: $ => seq($._br_flw_map_bgn, $._sgl_flw_map_tal),
404
+ _b_sgl_flw_map: $ => seq($._b_flw_map_bgn, $._sgl_flw_map_tal),
405
+
406
+ _flw_map_tal: $ => seq(optional(choice($._r_flw_map_dat, $._br_flw_map_dat)), choice($._r_flw_map_end, $._br_flw_map_end, $._b_flw_map_end)),
407
+ _sgl_flw_map_tal: $ => seq(optional($._r_sgl_flw_col_dat), $._r_flw_map_end),
408
+
409
+ // flow collection data
410
+
411
+ _r_flw_seq_dat: $ => seq($._r_flw_seq_itm, repeat($._flw_seq_dat_rpt), optional(choice($._r_flw_sep_bgn, $._br_flw_sep_bgn))),
412
+ _br_flw_seq_dat: $ => seq($._br_flw_seq_itm, repeat($._flw_seq_dat_rpt), optional(choice($._r_flw_sep_bgn, $._br_flw_sep_bgn))),
413
+
414
+ _r_flw_map_dat: $ => seq($._r_flw_map_itm, repeat($._flw_map_dat_rpt), optional(choice($._r_flw_sep_bgn, $._br_flw_sep_bgn))),
415
+ _br_flw_map_dat: $ => seq($._br_flw_map_itm, repeat($._flw_map_dat_rpt), optional(choice($._r_flw_sep_bgn, $._br_flw_sep_bgn))),
416
+
417
+ _r_sgl_flw_col_dat: $ => seq($._r_sgl_flw_col_itm, repeat($._sgl_flw_col_dat_rpt), optional($._r_flw_sep_bgn)),
418
+
419
+ _flw_seq_dat_rpt: $ => seq(choice($._r_flw_sep_bgn, $._br_flw_sep_bgn), choice($._r_flw_seq_itm, $._br_flw_seq_itm)),
420
+ _flw_map_dat_rpt: $ => seq(choice($._r_flw_sep_bgn, $._br_flw_sep_bgn), choice($._r_flw_map_itm, $._br_flw_map_itm)),
421
+
422
+ _sgl_flw_col_dat_rpt: $ => seq($._r_flw_sep_bgn, $._r_sgl_flw_col_itm),
423
+
424
+ // flow collection item
425
+
426
+ _r_flw_seq_itm: $ => choice($._r_flw_val_flw, $._r_flw_exp_par, $._r_flw_imp_r_par, $._r_flw_njl_ann_par),
427
+ _br_flw_seq_itm: $ => choice($._br_flw_val_flw, $._br_flw_exp_par, $._br_flw_imp_r_par, $._br_flw_njl_ann_par),
428
+
429
+ _r_flw_map_itm: $ => choice($._r_flw_val_flw, $._r_flw_exp_par, $._r_flw_imp_r_par, $._r_flw_imp_br_par, $._r_flw_njl_ann_par),
430
+ _br_flw_map_itm: $ => choice($._br_flw_val_flw, $._br_flw_exp_par, $._br_flw_imp_r_par, $._br_flw_imp_br_par, $._br_flw_njl_ann_par),
431
+
432
+ _r_sgl_flw_col_itm: $ => choice($._r_sgl_flw_val_flw, $._r_sgl_flw_exp_par, $._r_sgl_flw_imp_par, $._r_sgl_flw_njl_ann_par),
433
+
434
+ // explicit flow pair
435
+
436
+ _r_flw_exp_par: $ => seq($._r_flw_key_bgn, optional(choice($._r_flw_imp_r_par, $._r_flw_imp_br_par, $._br_flw_imp_r_par, $._br_flw_imp_br_par))),
437
+ _br_flw_exp_par: $ => seq($._br_flw_key_bgn, optional(choice($._r_flw_imp_r_par, $._r_flw_imp_br_par, $._br_flw_imp_r_par, $._br_flw_imp_br_par))),
438
+
439
+ _r_sgl_flw_exp_par: $ => seq($._r_flw_key_bgn, optional($._r_sgl_flw_imp_par)),
440
+
441
+ // implicit flow pair
442
+
443
+ _r_flw_imp_r_par: $ => choice(seq(field('key', $._r_flw_jsl_val), $._r_flw_jsl_ann_par), seq(field('key', $._r_flw_njl_val_flw), $._r_flw_njl_ann_par)),
444
+ _r_flw_imp_br_par: $ => choice(seq(field('key', $._r_flw_jsl_val), $._br_flw_jsl_ann_par), seq(field('key', $._r_flw_njl_val_flw), $._br_flw_njl_ann_par)),
445
+ _br_flw_imp_r_par: $ => choice(seq(field('key', $._br_flw_jsl_val), $._r_flw_jsl_ann_par), seq(field('key', $._br_flw_njl_val_flw), $._r_flw_njl_ann_par)),
446
+ _br_flw_imp_br_par: $ => choice(seq(field('key', $._br_flw_jsl_val), $._br_flw_jsl_ann_par), seq(field('key', $._br_flw_njl_val_flw), $._br_flw_njl_ann_par)),
447
+
448
+ _r_sgl_flw_imp_par: $ => choice(seq(field('key', $._r_sgl_flw_jsl_val), $._r_sgl_flw_jsl_ann_par), seq(field('key', $._r_sgl_flw_njl_val_flw), $._r_sgl_flw_njl_ann_par)),
449
+
450
+ // anonymous flow pair
451
+
452
+ _r_flw_jsl_ann_par: $ => seq($._r_flw_jsv_bgn, optional(field('value', $._flw_ann_par_tal))),
453
+ _br_flw_jsl_ann_par: $ => seq($._br_flw_jsv_bgn, optional(field('value', $._flw_ann_par_tal))),
454
+
455
+ _r_sgl_flw_jsl_ann_par: $ => seq($._r_flw_jsv_bgn, optional(field('value', $._sgl_flw_ann_par_tal))),
456
+
457
+ _r_flw_njl_ann_par: $ => seq($._r_flw_njv_bgn, optional(field('value', $._flw_ann_par_tal))),
458
+ _br_flw_njl_ann_par: $ => seq($._br_flw_njv_bgn, optional(field('value', $._flw_ann_par_tal))),
459
+
460
+ _r_sgl_flw_njl_ann_par: $ => seq($._r_flw_njv_bgn, optional(field('value', $._sgl_flw_ann_par_tal))),
461
+
462
+ _flw_ann_par_tal: $ => choice($._r_flw_val_flw, $._br_flw_val_flw),
463
+ _sgl_flw_ann_par_tal: $ => $._r_sgl_flw_val_flw,
464
+
465
+ // double quote scalar
466
+
467
+ _r_dqt_str_val: $ => choice($._r_dqt_str, seq($._r_prp, choice($._r_dqt_str, $._br_dqt_str))),
468
+ _br_dqt_str_val: $ => choice($._br_dqt_str, seq($._br_prp, choice($._r_dqt_str, $._br_dqt_str))),
469
+
470
+ _r_sgl_dqt_str_val: $ => choice($._r_sgl_dqt_str, seq($._r_sgl_prp, $._r_sgl_dqt_str)),
471
+ _br_sgl_dqt_str_val: $ => choice($._br_sgl_dqt_str, seq($._br_sgl_prp, $._r_sgl_dqt_str)),
472
+ _b_sgl_dqt_str_val: $ => choice($._b_sgl_dqt_str, seq($._b_sgl_prp, $._r_sgl_dqt_str)),
473
+
474
+ _r_dqt_str: $ => seq(
475
+ $._r_dqt_str_bgn,
476
+ optional($._r_sgl_dqt_ctn),
477
+ optional($._r_dqt_esc_nwl),
478
+ repeat($._br_mtl_dqt_ctn),
479
+ choice($._r_dqt_str_end, $._br_dqt_str_end),
480
+ ),
481
+ _br_dqt_str: $ => seq(
482
+ $._br_dqt_str_bgn,
483
+ optional($._r_sgl_dqt_ctn),
484
+ optional($._r_dqt_esc_nwl),
485
+ repeat($._br_mtl_dqt_ctn),
486
+ choice($._r_dqt_str_end, $._br_dqt_str_end),
487
+ ),
488
+
489
+ _r_sgl_dqt_str: $ => seq($._r_dqt_str_bgn, optional($._r_sgl_dqt_ctn), $._r_dqt_str_end),
490
+ _br_sgl_dqt_str: $ => seq($._br_dqt_str_bgn, optional($._r_sgl_dqt_ctn), $._r_dqt_str_end),
491
+ _b_sgl_dqt_str: $ => seq($._b_dqt_str_bgn, optional($._r_sgl_dqt_ctn), $._r_dqt_str_end),
492
+
493
+ _r_sgl_dqt_ctn: $ => repeat1(choice($._r_dqt_str_ctn, $._r_dqt_esc_seq)),
494
+ _br_mtl_dqt_ctn: $ => choice(
495
+ $._br_dqt_esc_nwl,
496
+ seq(
497
+ choice($._br_dqt_str_ctn, $._br_dqt_esc_seq),
498
+ repeat(choice($._r_dqt_str_ctn, $._r_dqt_esc_seq)),
499
+ optional($._r_dqt_esc_nwl),
500
+ ),
501
+ ),
502
+
503
+ // single quote scalar
504
+
505
+ _r_sqt_str_val: $ => choice($._r_sqt_str, seq($._r_prp, choice($._r_sqt_str, $._br_sqt_str))),
506
+ _br_sqt_str_val: $ => choice($._br_sqt_str, seq($._br_prp, choice($._r_sqt_str, $._br_sqt_str))),
507
+
508
+ _r_sgl_sqt_str_val: $ => choice($._r_sgl_sqt_str, seq($._r_sgl_prp, $._r_sgl_sqt_str)),
509
+ _br_sgl_sqt_str_val: $ => choice($._br_sgl_sqt_str, seq($._br_sgl_prp, $._r_sgl_sqt_str)),
510
+ _b_sgl_sqt_str_val: $ => choice($._b_sgl_sqt_str, seq($._b_sgl_prp, $._r_sgl_sqt_str)),
511
+
512
+ _r_sqt_str: $ => seq($._r_sqt_str_bgn, optional($._r_sgl_sqt_ctn), repeat($._br_mtl_sqt_ctn), choice($._r_sqt_str_end, $._br_sqt_str_end)),
513
+ _br_sqt_str: $ => seq($._br_sqt_str_bgn, optional($._r_sgl_sqt_ctn), repeat($._br_mtl_sqt_ctn), choice($._r_sqt_str_end, $._br_sqt_str_end)),
514
+
515
+ _r_sgl_sqt_str: $ => seq($._r_sqt_str_bgn, optional($._r_sgl_sqt_ctn), $._r_sqt_str_end),
516
+ _br_sgl_sqt_str: $ => seq($._br_sqt_str_bgn, optional($._r_sgl_sqt_ctn), $._r_sqt_str_end),
517
+ _b_sgl_sqt_str: $ => seq($._b_sqt_str_bgn, optional($._r_sgl_sqt_ctn), $._r_sqt_str_end),
518
+
519
+ _r_sgl_sqt_ctn: $ => repeat1(choice($._r_sqt_str_ctn, $._r_sqt_esc_sqt)),
520
+ _br_mtl_sqt_ctn: $ => seq(choice($._br_sqt_str_ctn, $._br_sqt_esc_sqt), repeat(choice($._r_sqt_str_ctn, $._r_sqt_esc_sqt))),
521
+
522
+ // plain scalar in block
523
+
524
+ _r_pln_blk_val: $ => choice($._r_pln_blk, seq($._r_prp, choice($._r_pln_blk, $._br_pln_blk))),
525
+ _br_pln_blk_val: $ => choice($._br_pln_blk, seq($._br_prp, choice($._r_pln_blk, $._br_pln_blk))),
526
+
527
+ _r_sgl_pln_blk_val: $ => choice($._r_sgl_pln_blk, seq($._r_sgl_prp, $._r_sgl_pln_blk)),
528
+ _br_sgl_pln_blk_val: $ => choice($._br_sgl_pln_blk, seq($._br_sgl_prp, $._r_sgl_pln_blk)),
529
+ _b_sgl_pln_blk_val: $ => choice($._b_sgl_pln_blk, seq($._b_sgl_prp, $._r_sgl_pln_blk)),
530
+
531
+ _r_pln_blk: $ => choice($._r_sgl_pln_blk, $._r_mtl_pln_blk),
532
+ _br_pln_blk: $ => choice($._br_sgl_pln_blk, $._br_mtl_pln_blk),
533
+
534
+ // plain scalar in flow
535
+
536
+ _r_pln_flw_val: $ => choice($._r_pln_flw, seq($._r_prp, choice($._r_pln_flw, $._br_pln_flw))),
537
+ _br_pln_flw_val: $ => choice($._br_pln_flw, seq($._br_prp, choice($._r_pln_flw, $._br_pln_flw))),
538
+
539
+ _r_sgl_pln_flw_val: $ => choice($._r_sgl_pln_flw, seq($._r_sgl_prp, $._r_sgl_pln_flw)),
540
+
541
+ _r_pln_flw: $ => choice($._r_sgl_pln_flw, $._r_mtl_pln_flw),
542
+ _br_pln_flw: $ => choice($._br_sgl_pln_flw, $._br_mtl_pln_flw),
543
+
544
+ // plain scalar schema
545
+
546
+ _r_sgl_pln_blk: $ => scalar_types($, 'r', 'blk'),
547
+ _br_sgl_pln_blk: $ => scalar_types($, 'br', 'blk'),
548
+ _b_sgl_pln_blk: $ => scalar_types($, 'b', 'blk'),
549
+ _r_sgl_pln_flw: $ => scalar_types($, 'r', 'flw'),
550
+ _br_sgl_pln_flw: $ => scalar_types($, 'br', 'flw'),
551
+
552
+ _r_mtl_pln_blk: $ => $._r_mtl_pln_str_blk,
553
+ _br_mtl_pln_blk: $ => $._br_mtl_pln_str_blk,
554
+ _r_mtl_pln_flw: $ => $._r_mtl_pln_str_flw,
555
+ _br_mtl_pln_flw: $ => $._br_mtl_pln_str_flw,
556
+
557
+ // alias
558
+
559
+ _r_als_val: $ => $._r_als,
560
+ _br_als_val: $ => $._br_als,
561
+ _b_als_val: $ => $._b_als,
562
+
563
+ _r_als: $ => seq($._r_als_bgn, $._r_als_ctn),
564
+ _br_als: $ => seq($._br_als_bgn, $._r_als_ctn),
565
+ _b_als: $ => seq($._b_als_bgn, $._r_als_ctn),
566
+
567
+ // anchor
568
+
569
+ _r_acr: $ => seq($._r_acr_bgn, $._r_acr_ctn),
570
+ _br_acr: $ => seq($._br_acr_bgn, $._r_acr_ctn),
571
+ _b_acr: $ => seq($._b_acr_bgn, $._r_acr_ctn),
572
+ },
573
+ });
574
+
575
+ raml.grammar = global_alias(global_alias(raml.grammar, {
576
+ ..._('yaml_directive', '_s_dir_yml'),
577
+ ..._('yaml_version', '_r_dir_yml_ver'),
578
+ ..._('tag_directive', '_s_dir_tag'),
579
+ ..._('tag_handle', '_r_dir_tag_hdl'),
580
+ ..._('tag_prefix', '_r_dir_tag_pfx'),
581
+ ..._('reserved_directive', '_s_dir_rsv'),
582
+ ..._('directive_name', '_s_dir_rsv_bgn'),
583
+ ..._('directive_parameter', '_r_dir_rsv_prm'),
584
+ ..._('flow_node', '_r_prp_val', '_br_prp_val', '_r_sgl_prp_val', '_br_sgl_prp_val', '_b_sgl_prp_val'),
585
+ ..._('tag', '_r_tag', '_br_tag', '_b_tag'),
586
+ ..._('anchor', '_r_acr', '_br_acr', '_b_acr'),
587
+ ..._('anchor_name', '_r_acr_ctn'),
588
+ ..._('flow_node', '_r_als_val', '_br_als_val', '_b_als_val'),
589
+ ..._('alias', '_r_als', '_br_als', '_b_als'),
590
+ ..._('alias_name', '_r_als_ctn'),
591
+ ..._('document', '_bgn_imp_doc', '_imp_doc'),
592
+ ..._(['document'], '_drs_doc', '_exp_doc', '_doc_end',
593
+ '_bgn_imp_doc_end', '_drs_doc_end', '_exp_doc_end', '_imp_doc_end'),
594
+ ..._('block_node', '_r_blk_seq_r_val', '_r_blk_seq_br_val', '_br_blk_seq_val', '_r_blk_seq_spc_val', '_br_blk_seq_spc_val', '_b_blk_seq_spc_val'),
595
+ ..._('block_node', '_r_blk_map_r_val', '_r_blk_map_br_val', '_br_blk_map_val'),
596
+ ..._('block_node', '_r_blk_str_val', '_br_blk_str_val'),
597
+ ..._('block_sequence', '_r_blk_seq', '_br_blk_seq', '_b_blk_seq_spc'),
598
+ ..._('block_mapping', '_r_blk_map', '_br_blk_map'),
599
+ ..._('block_scalar', '_r_blk_str', '_br_blk_str'),
600
+ ..._('block_sequence_item', '_r_blk_seq_itm', '_br_blk_seq_itm', '_b_blk_seq_itm'),
601
+ ..._('block_mapping_pair', '_r_blk_exp_itm', '_br_blk_exp_itm', '_b_blk_exp_itm'),
602
+ ..._('block_mapping_pair', '_r_blk_imp_itm', '_br_blk_imp_itm', '_b_blk_imp_itm'),
603
+ ..._('flow_node', '_r_flw_seq_val', '_br_flw_seq_val', '_r_sgl_flw_seq_val', '_br_sgl_flw_seq_val', '_b_sgl_flw_seq_val'),
604
+ ..._('flow_node', '_r_flw_map_val', '_br_flw_map_val', '_r_sgl_flw_map_val', '_br_sgl_flw_map_val', '_b_sgl_flw_map_val'),
605
+ ..._('flow_sequence', '_r_flw_seq', '_br_flw_seq', '_r_sgl_flw_seq', '_br_sgl_flw_seq', '_b_sgl_flw_seq'),
606
+ ..._('flow_mapping', '_r_flw_map', '_br_flw_map', '_r_sgl_flw_map', '_br_sgl_flw_map', '_b_sgl_flw_map'),
607
+ ..._(['flow_pair'], '_r_flw_exp_par', '_br_flw_exp_par', '_r_sgl_flw_exp_par',
608
+ '_r_flw_imp_r_par', '_r_flw_imp_br_par', '_br_flw_imp_r_par', '_br_flw_imp_br_par', '_r_sgl_flw_imp_par',
609
+ '_r_flw_njl_ann_par', '_br_flw_njl_ann_par', '_r_sgl_flw_njl_ann_par'),
610
+ ..._('flow_node', '_r_dqt_str_val', '_br_dqt_str_val', '_r_sgl_dqt_str_val', '_br_sgl_dqt_str_val', '_b_sgl_dqt_str_val'),
611
+ ..._('flow_node', '_r_sqt_str_val', '_br_sqt_str_val', '_r_sgl_sqt_str_val', '_br_sgl_sqt_str_val', '_b_sgl_sqt_str_val'),
612
+ ..._('flow_node', '_r_pln_blk_val', '_br_pln_blk_val', '_r_sgl_pln_blk_val', '_br_sgl_pln_blk_val', '_b_sgl_pln_blk_val',
613
+ '_r_pln_flw_val', '_br_pln_flw_val', '_r_sgl_pln_flw_val'),
614
+ ..._('double_quote_scalar', '_r_dqt_str', '_br_dqt_str', '_r_sgl_dqt_str', '_br_sgl_dqt_str', '_b_sgl_dqt_str'),
615
+ ..._('single_quote_scalar', '_r_sqt_str', '_br_sqt_str', '_r_sgl_sqt_str', '_br_sgl_sqt_str', '_b_sgl_sqt_str'),
616
+ ..._('plain_scalar', '_r_mtl_pln_blk', '_br_mtl_pln_blk', '_r_sgl_pln_blk', '_br_sgl_pln_blk', '_b_sgl_pln_blk',
617
+ '_r_mtl_pln_flw', '_br_mtl_pln_flw', '_r_sgl_pln_flw', '_br_sgl_pln_flw'),
618
+ ..._('escape_sequence', '_r_dqt_esc_nwl', '_br_dqt_esc_nwl',
619
+ '_r_dqt_esc_seq', '_br_dqt_esc_seq',
620
+ '_r_sqt_esc_sqt', '_br_sqt_esc_sqt'),
621
+ ..._('null_scalar', '_r_sgl_pln_nul_blk', '_br_sgl_pln_nul_blk', '_b_sgl_pln_nul_blk', '_r_sgl_pln_nul_flw', '_br_sgl_pln_nul_flw'),
622
+ ..._('boolean_scalar', '_r_sgl_pln_bol_blk', '_br_sgl_pln_bol_blk', '_b_sgl_pln_bol_blk', '_r_sgl_pln_bol_flw', '_br_sgl_pln_bol_flw'),
623
+ ..._('integer_scalar', '_r_sgl_pln_int_blk', '_br_sgl_pln_int_blk', '_b_sgl_pln_int_blk', '_r_sgl_pln_int_flw', '_br_sgl_pln_int_flw'),
624
+ ..._('float_scalar', '_r_sgl_pln_flt_blk', '_br_sgl_pln_flt_blk', '_b_sgl_pln_flt_blk', '_r_sgl_pln_flt_flw', '_br_sgl_pln_flt_flw'),
625
+ ..._('timestamp_scalar', '_r_sgl_pln_tms_blk', '_br_sgl_pln_tms_blk', '_b_sgl_pln_tms_blk', '_r_sgl_pln_tms_flw', '_br_sgl_pln_tms_flw'),
626
+ ..._('string_scalar', '_r_sgl_pln_str_blk', '_br_sgl_pln_str_blk', '_b_sgl_pln_str_blk', '_r_sgl_pln_str_flw', '_br_sgl_pln_str_flw',
627
+ '_r_mtl_pln_str_blk', '_br_mtl_pln_str_blk', '_r_mtl_pln_str_flw', '_br_mtl_pln_str_flw'),
628
+ }), {
629
+ ..._('---', '_s_drs_end'),
630
+ ..._('...', '_s_doc_end'),
631
+ ..._('-', '_r_blk_seq_bgn', '_br_blk_seq_bgn', '_b_blk_seq_bgn'),
632
+ ..._('?', '_r_blk_key_bgn', '_br_blk_key_bgn', '_b_blk_key_bgn'),
633
+ ..._(':', '_r_blk_val_bgn', '_br_blk_val_bgn', '_b_blk_val_bgn'),
634
+ ..._(':', '_r_blk_imp_bgn'),
635
+ ..._('|', '_r_blk_lit_bgn', '_br_blk_lit_bgn'),
636
+ ..._('>', '_r_blk_fld_bgn', '_br_blk_fld_bgn'),
637
+ ..._('[', '_r_flw_seq_bgn', '_br_flw_seq_bgn', '_b_flw_seq_bgn'),
638
+ ..._(']', '_r_flw_seq_end', '_br_flw_seq_end', '_b_flw_seq_end'),
639
+ ..._('{', '_r_flw_map_bgn', '_br_flw_map_bgn', '_b_flw_map_bgn'),
640
+ ..._('}', '_r_flw_map_end', '_br_flw_map_end', '_b_flw_map_end'),
641
+ ..._(',', '_r_flw_sep_bgn', '_br_flw_sep_bgn'),
642
+ ..._('?', '_r_flw_key_bgn', '_br_flw_key_bgn'),
643
+ ..._(':', '_r_flw_jsv_bgn', '_br_flw_jsv_bgn'),
644
+ ..._(':', '_r_flw_njv_bgn', '_br_flw_njv_bgn'),
645
+ ..._('"', '_r_dqt_str_bgn', '_br_dqt_str_bgn', '_b_dqt_str_bgn'),
646
+ ..._('"', '_r_dqt_str_end', '_br_dqt_str_end'),
647
+ ..._('\'', '_r_sqt_str_bgn', '_br_sqt_str_bgn', '_b_sqt_str_bgn'),
648
+ ..._('\'', '_r_sqt_str_end', '_br_sqt_str_end'),
649
+ ..._('*', '_r_als_bgn', '_br_als_bgn', '_b_als_bgn'),
650
+ ..._('&', '_r_acr_bgn', '_br_acr_bgn', '_b_acr_bgn'),
651
+ });
652
+
653
+ export default raml;
654
+
655
+ /**
656
+ *
657
+ * @param {string | [string]} alias_value
658
+ * @param {string[]} rule_names
659
+ */
660
+ function _(alias_value, ...rule_names) {
661
+ const alias_content = {};
662
+ if (typeof alias_value === 'string') {
663
+ alias_content.name = alias_value;
664
+ } else if (Array.isArray(alias_value)) {
665
+ alias_content.name = alias_value[0];
666
+ alias_content.shallow = true;
667
+ } else {
668
+ throw new Error(`Unexpected value ${JSON.stringify(alias_value)}`);
669
+ }
670
+ const alias_map = {};
671
+ for (const rule_name of rule_names) {
672
+ alias_map[rule_name] = alias_content;
673
+ }
674
+ return alias_map;
675
+ }
676
+
677
+ /**
678
+ *
679
+ * @param {GrammarSymbols<string>} grammar_json
680
+ * @param {{[key: string]: {name: string, shallow?: boolean}}} alias_map
681
+ */
682
+ function global_alias(grammar_json, alias_map) {
683
+ const new_rules = {};
684
+ const new_grammar = {...grammar_json, rules: new_rules};
685
+ const checklist = Object.fromEntries(Object.entries(alias_map).map(([k, _]) => [k, 0]));
686
+ for (const [rule_name, rule] of Object.entries(grammar_json.rules)) {
687
+ new_rules[rule_name] = rule_name in alias_map && alias_map[rule_name].shallow ?
688
+ rule :
689
+ recursive_alias(rule, alias_map, checklist);
690
+ }
691
+ for (const [rule_name, counter] of Object.entries(checklist)) {
692
+ if (counter === 0) {
693
+ console.warn(`warning: global_alias for ${JSON.stringify(rule_name)} is not used.`);
694
+ }
695
+ }
696
+ return new_grammar;
697
+ }
698
+
699
+ /**
700
+ *
701
+ * @param {RuleOrLiteral} rule
702
+ * @param {{[key: string]: {name: string, shallow?: boolean}}} alias_map
703
+ * @param {{[key: string]: number}} checklist
704
+ */
705
+ function recursive_alias(rule, alias_map, checklist) {
706
+ switch (rule.type) {
707
+ case 'CHOICE':
708
+ case 'SEQ':
709
+ return {...rule, members: rule.members.map(member => recursive_alias(member, alias_map, checklist))};
710
+ case 'REPEAT':
711
+ case 'REPEAT1':
712
+ case 'FIELD':
713
+ case 'PREC':
714
+ case 'PREC_RIGHT':
715
+ return {...rule, content: recursive_alias(rule.content, alias_map, checklist)};
716
+ case 'SYMBOL':
717
+ if (rule.name in alias_map) {
718
+ checklist[rule.name]++;
719
+ const alias = alias_map[rule.name].name;
720
+ return {type: 'ALIAS', content: rule, named: /[a-z]/i.test(alias), value: alias};
721
+ }
722
+ case 'BLANK':
723
+ case 'ALIAS':
724
+ return rule;
725
+ default:
726
+ throw new Error(`Unexpected rule type ${JSON.stringify(rule.type)}`);
727
+ }
728
+ }
729
+
730
+ /**
731
+ * @param {GrammarSymbols<string>} symbols
732
+ * @param {'r' | 'br' | 'b'} prefix
733
+ * @param {'blk' | 'flw'} suffix
734
+ */
735
+ function scalar_types(symbols, prefix, suffix) {
736
+ const types = Array.from(
737
+ ['nul', 'bol', 'int', 'flt', 'tms', 'str'],
738
+ t => symbols[`_${prefix}_sgl_pln_${t}_${suffix}`],
739
+ );
740
+ return choice(...types);
741
+ }
742
+