feat: add literal aliases (#11)
This commit is contained in:
parent
b26d567070
commit
f75b1f93cb
|
@ -1105,8 +1105,9 @@ block: ># comment
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
(ERROR
|
(ERROR
|
||||||
(flow_node
|
(block_mapping_pair
|
||||||
(plain_scalar)))
|
key: (flow_node
|
||||||
|
(plain_scalar))))
|
||||||
|
|
||||||
================================================================================
|
================================================================================
|
||||||
Comment without whitespace after doublequoted scalar [INVALID]
|
Comment without whitespace after doublequoted scalar [INVALID]
|
||||||
|
@ -2129,8 +2130,9 @@ a:
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
(ERROR
|
(ERROR
|
||||||
(flow_node
|
(block_mapping_pair
|
||||||
(plain_scalar)))
|
key: (flow_node
|
||||||
|
(plain_scalar))))
|
||||||
|
|
||||||
================================================================================
|
================================================================================
|
||||||
Invalid tag [INVALID]
|
Invalid tag [INVALID]
|
||||||
|
@ -2310,9 +2312,11 @@ Mapping starting at --- line [INVALID]
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
(ERROR
|
(stream
|
||||||
(flow_node
|
(document
|
||||||
(plain_scalar)))
|
(flow_node
|
||||||
|
(plain_scalar)))
|
||||||
|
(MISSING _eof))
|
||||||
|
|
||||||
================================================================================
|
================================================================================
|
||||||
Mapping with anchor on document start line [INVALID]
|
Mapping with anchor on document start line [INVALID]
|
||||||
|
@ -3581,8 +3585,9 @@ key: - a
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
(ERROR
|
(ERROR
|
||||||
(flow_node
|
(block_mapping_pair
|
||||||
(plain_scalar)))
|
key: (flow_node
|
||||||
|
(plain_scalar))))
|
||||||
|
|
||||||
================================================================================
|
================================================================================
|
||||||
Sequence With Same Indentation as Parent Mapping
|
Sequence With Same Indentation as Parent Mapping
|
||||||
|
@ -8576,10 +8581,8 @@ c"
|
||||||
key: (flow_node
|
key: (flow_node
|
||||||
(plain_scalar)))
|
(plain_scalar)))
|
||||||
(ERROR
|
(ERROR
|
||||||
(flow_node
|
(plain_scalar)
|
||||||
(plain_scalar))
|
(plain_scalar))))))
|
||||||
(flow_node
|
|
||||||
(plain_scalar)))))))
|
|
||||||
|
|
||||||
================================================================================
|
================================================================================
|
||||||
Wrong indented sequence item [INVALID]
|
Wrong indented sequence item [INVALID]
|
||||||
|
|
34
grammar.js
34
grammar.js
|
@ -18,7 +18,8 @@ module.exports = grammar({
|
||||||
$._r_blk_key_bgn, $._br_blk_key_bgn, $._b_blk_key_bgn, // ?
|
$._r_blk_key_bgn, $._br_blk_key_bgn, $._b_blk_key_bgn, // ?
|
||||||
$._r_blk_val_bgn, $._br_blk_val_bgn, $._b_blk_val_bgn, // :
|
$._r_blk_val_bgn, $._br_blk_val_bgn, $._b_blk_val_bgn, // :
|
||||||
$._r_blk_imp_bgn, // : (implicit)
|
$._r_blk_imp_bgn, // : (implicit)
|
||||||
$._r_blk_str_bgn, $._br_blk_str_bgn, // | >
|
$._r_blk_lit_bgn, $._br_blk_lit_bgn, // |
|
||||||
|
$._r_blk_fld_bgn, $._br_blk_fld_bgn, // >
|
||||||
$._br_blk_str_ctn, // block scalar content
|
$._br_blk_str_ctn, // block scalar content
|
||||||
$._r_flw_seq_bgn, $._br_flw_seq_bgn, $._b_flw_seq_bgn, // [
|
$._r_flw_seq_bgn, $._br_flw_seq_bgn, $._b_flw_seq_bgn, // [
|
||||||
$._r_flw_seq_end, $._br_flw_seq_end, // ]
|
$._r_flw_seq_end, $._br_flw_seq_end, // ]
|
||||||
|
@ -229,8 +230,8 @@ module.exports = grammar({
|
||||||
_r_blk_str_val: $ => choice($._r_blk_str, seq($._r_prp, choice($._r_blk_str, $._br_blk_str))),
|
_r_blk_str_val: $ => choice($._r_blk_str, seq($._r_prp, choice($._r_blk_str, $._br_blk_str))),
|
||||||
_br_blk_str_val: $ => choice($._br_blk_str, seq($._br_prp, choice($._r_blk_str, $._br_blk_str))),
|
_br_blk_str_val: $ => choice($._br_blk_str, seq($._br_prp, choice($._r_blk_str, $._br_blk_str))),
|
||||||
|
|
||||||
_r_blk_str: $ => seq($._r_blk_str_bgn, repeat($._br_blk_str_ctn), $._bl),
|
_r_blk_str: $ => seq(choice($._r_blk_lit_bgn, $._r_blk_fld_bgn), repeat($._br_blk_str_ctn), $._bl),
|
||||||
_br_blk_str: $ => seq($._br_blk_str_bgn, repeat($._br_blk_str_ctn), $._bl),
|
_br_blk_str: $ => seq(choice($._br_blk_lit_bgn, $._br_blk_fld_bgn), repeat($._br_blk_str_ctn), $._bl),
|
||||||
|
|
||||||
// flow value in block
|
// flow value in block
|
||||||
|
|
||||||
|
@ -435,7 +436,7 @@ module.exports = grammar({
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
module.exports = global_alias(module.exports, {
|
module.exports = global_alias(global_alias(module.exports, {
|
||||||
..._("yaml_directive", "_s_dir_yml"),
|
..._("yaml_directive", "_s_dir_yml"),
|
||||||
..._("yaml_version", "_r_dir_yml_ver"),
|
..._("yaml_version", "_r_dir_yml_ver"),
|
||||||
..._("tag_directive", "_s_dir_tag"),
|
..._("tag_directive", "_s_dir_tag"),
|
||||||
|
@ -479,6 +480,27 @@ module.exports = global_alias(module.exports, {
|
||||||
..._("escape_sequence", "_r_dqt_esc_nwl", "_br_dqt_esc_nwl",
|
..._("escape_sequence", "_r_dqt_esc_nwl", "_br_dqt_esc_nwl",
|
||||||
"_r_dqt_esc_seq", "_br_dqt_esc_seq",
|
"_r_dqt_esc_seq", "_br_dqt_esc_seq",
|
||||||
"_r_sqt_esc_sqt", "_br_sqt_esc_sqt"),
|
"_r_sqt_esc_sqt", "_br_sqt_esc_sqt"),
|
||||||
|
}), {
|
||||||
|
..._("---", "_s_drs_end"),
|
||||||
|
..._("...", "_s_doc_end"),
|
||||||
|
..._("-", "_r_blk_seq_bgn", "_br_blk_seq_bgn", "_b_blk_seq_bgn"),
|
||||||
|
..._("?", "_r_blk_key_bgn", "_br_blk_key_bgn", "_b_blk_key_bgn"),
|
||||||
|
..._(":", "_r_blk_val_bgn", "_br_blk_val_bgn", "_b_blk_val_bgn"),
|
||||||
|
..._(":", "_r_blk_imp_bgn"),
|
||||||
|
..._("|", "_r_blk_lit_bgn", "_br_blk_lit_bgn"),
|
||||||
|
..._(">", "_r_blk_fld_bgn", "_br_blk_fld_bgn"),
|
||||||
|
..._("[", "_r_flw_seq_bgn", "_br_flw_seq_bgn", "_b_flw_seq_bgn"),
|
||||||
|
..._("]", "_r_flw_seq_end", "_br_flw_seq_end"),
|
||||||
|
..._("{", "_r_flw_map_bgn", "_br_flw_map_bgn", "_b_flw_map_bgn"),
|
||||||
|
..._("}", "_r_flw_map_end", "_br_flw_map_end"),
|
||||||
|
..._(",", "_r_flw_sep_bgn", "_br_flw_sep_bgn"),
|
||||||
|
..._("?", "_r_flw_key_bgn", "_br_flw_key_bgn"),
|
||||||
|
..._(":", "_r_flw_jsv_bgn", "_br_flw_jsv_bgn"),
|
||||||
|
..._(":", "_r_flw_njv_bgn", "_br_flw_njv_bgn"),
|
||||||
|
..._("\"", "_r_dqt_str_bgn", "_br_dqt_str_bgn", "_b_dqt_str_bgn"),
|
||||||
|
..._("\"", "_r_dqt_str_end", "_br_dqt_str_end"),
|
||||||
|
..._("'", "_r_sqt_str_bgn", "_br_sqt_str_bgn", "_b_sqt_str_bgn"),
|
||||||
|
..._("'", "_r_sqt_str_end", "_br_sqt_str_end"),
|
||||||
});
|
});
|
||||||
|
|
||||||
function _(alias_value, ...rule_names) {
|
function _(alias_value, ...rule_names) {
|
||||||
|
@ -529,9 +551,11 @@ function recursive_alias(rule, alias_map, checklist) {
|
||||||
case "SYMBOL":
|
case "SYMBOL":
|
||||||
if (rule.name in alias_map) {
|
if (rule.name in alias_map) {
|
||||||
checklist[rule.name]++;
|
checklist[rule.name]++;
|
||||||
return { type: "ALIAS", content: rule, named: true, value: alias_map[rule.name].name };
|
const alias = alias_map[rule.name].name;
|
||||||
|
return { type: "ALIAS", content: rule, named: /[a-z]/i.test(alias), value: alias };
|
||||||
}
|
}
|
||||||
case "BLANK":
|
case "BLANK":
|
||||||
|
case "ALIAS":
|
||||||
return rule;
|
return rule;
|
||||||
default:
|
default:
|
||||||
throw new Error(`Unexpected rule type ${JSON.stringify(rule.type)}`);
|
throw new Error(`Unexpected rule type ${JSON.stringify(rule.type)}`);
|
||||||
|
|
769
src/grammar.json
generated
769
src/grammar.json
generated
File diff suppressed because it is too large
Load diff
56
src/node-types.json
generated
56
src/node-types.json
generated
|
@ -354,6 +354,50 @@
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "\"",
|
||||||
|
"named": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "'",
|
||||||
|
"named": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": ",",
|
||||||
|
"named": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "-",
|
||||||
|
"named": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "---",
|
||||||
|
"named": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "...",
|
||||||
|
"named": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": ":",
|
||||||
|
"named": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": ">",
|
||||||
|
"named": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "?",
|
||||||
|
"named": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "[",
|
||||||
|
"named": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "]",
|
||||||
|
"named": false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "alias",
|
"type": "alias",
|
||||||
"named": true
|
"named": true
|
||||||
|
@ -393,5 +437,17 @@
|
||||||
{
|
{
|
||||||
"type": "yaml_version",
|
"type": "yaml_version",
|
||||||
"named": true
|
"named": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "{",
|
||||||
|
"named": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "|",
|
||||||
|
"named": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "}",
|
||||||
|
"named": false
|
||||||
}
|
}
|
||||||
]
|
]
|
20399
src/parser.c
generated
20399
src/parser.c
generated
File diff suppressed because it is too large
Load diff
|
@ -17,7 +17,8 @@ enum TokenType {
|
||||||
R_BLK_KEY_BGN, BR_BLK_KEY_BGN, B_BLK_KEY_BGN,
|
R_BLK_KEY_BGN, BR_BLK_KEY_BGN, B_BLK_KEY_BGN,
|
||||||
R_BLK_VAL_BGN, BR_BLK_VAL_BGN, B_BLK_VAL_BGN,
|
R_BLK_VAL_BGN, BR_BLK_VAL_BGN, B_BLK_VAL_BGN,
|
||||||
R_BLK_IMP_BGN,
|
R_BLK_IMP_BGN,
|
||||||
R_BLK_STR_BGN, BR_BLK_STR_BGN,
|
R_BLK_LIT_BGN, BR_BLK_LIT_BGN,
|
||||||
|
R_BLK_FLD_BGN, BR_BLK_FLD_BGN,
|
||||||
BR_BLK_STR_CTN,
|
BR_BLK_STR_CTN,
|
||||||
R_FLW_SEQ_BGN, BR_FLW_SEQ_BGN, B_FLW_SEQ_BGN,
|
R_FLW_SEQ_BGN, BR_FLW_SEQ_BGN, B_FLW_SEQ_BGN,
|
||||||
R_FLW_SEQ_END, BR_FLW_SEQ_END,
|
R_FLW_SEQ_END, BR_FLW_SEQ_END,
|
||||||
|
@ -848,9 +849,12 @@ struct Scanner {
|
||||||
if (is_br_dqt_esc_seq) return scn_dqt_esc_seq(lexer, BR_DQT_ESC_SEQ);
|
if (is_br_dqt_esc_seq) return scn_dqt_esc_seq(lexer, BR_DQT_ESC_SEQ);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else if (LKA == '|' || LKA == '>') {
|
} else if (LKA == '|') {
|
||||||
if (VLD[R_BLK_STR_BGN] && is_r) return scn_blk_str_bgn(lexer, R_BLK_STR_BGN);
|
if (VLD[R_BLK_LIT_BGN] && is_r) return scn_blk_str_bgn(lexer, R_BLK_LIT_BGN);
|
||||||
if (VLD[BR_BLK_STR_BGN] && is_br) return scn_blk_str_bgn(lexer, BR_BLK_STR_BGN);
|
if (VLD[BR_BLK_LIT_BGN] && is_br) return scn_blk_str_bgn(lexer, BR_BLK_LIT_BGN);
|
||||||
|
} else if (LKA == '>') {
|
||||||
|
if (VLD[R_BLK_FLD_BGN] && is_r) return scn_blk_str_bgn(lexer, R_BLK_FLD_BGN);
|
||||||
|
if (VLD[BR_BLK_FLD_BGN] && is_br) return scn_blk_str_bgn(lexer, BR_BLK_FLD_BGN);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool maybe_sgl_pln_blk = (VLD[R_SGL_PLN_BLK] && is_r) || (VLD[BR_SGL_PLN_BLK] && is_br) || (VLD[B_SGL_PLN_BLK] && is_b);
|
bool maybe_sgl_pln_blk = (VLD[R_SGL_PLN_BLK] && is_r) || (VLD[BR_SGL_PLN_BLK] && is_br) || (VLD[B_SGL_PLN_BLK] && is_b);
|
||||||
|
|
Loading…
Reference in a new issue