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/LICENSE +22 -0
- package/NOTICE +18 -0
- package/README.md +16 -0
- package/binding.gyp +30 -0
- package/bindings/node/binding.cc +20 -0
- package/bindings/node/binding_test.js +16 -0
- package/bindings/node/index.d.ts +60 -0
- package/bindings/node/index.js +37 -0
- package/grammar.js +742 -0
- package/package.json +64 -0
- package/queries/highlights.scm +79 -0
- package/src/grammar.json +7056 -0
- package/src/node-types.json +552 -0
- package/src/parser.c +41392 -0
- package/src/scanner.c +1416 -0
- package/src/schema.core.c +204 -0
- package/src/schema.json.c +106 -0
- package/src/schema.legacy.c +517 -0
- package/src/tree_sitter/alloc.h +54 -0
- package/src/tree_sitter/array.h +336 -0
- package/src/tree_sitter/parser.h +286 -0
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
|
+
|