Ports parser.c: the one-event-at-a-time state machine that turns the scanner's token stream into the YAML event stream. Covers stream and document framing, directive processing with %TAG handle resolution and default handles, the node property/tag/anchor production, block and indentless sequences, block mappings, and flow sequences and mappings including the single-pair `?` mapping forms. Output verified against the libyaml reference event dumper: the empty mapping value, %TAG resolution, and shorthand tags all match byte for byte. 331 tests, no regression.
13 lines
437 B
Swift
13 lines
437 B
Swift
extension PureYAML.Parsing.LibYAML {
|
|
/// The anchor and tag scanned ahead of a node's content, with the marks needed
|
|
/// for events and tag-resolution errors. Mirrors the locals in
|
|
/// `yaml_parser_parse_node`.
|
|
struct NodeProperties {
|
|
var anchor: String?
|
|
var tagHandle: String?
|
|
var tagSuffix: String?
|
|
var startMark: PureYAML.Parsing.Mark
|
|
var tagMark: PureYAML.Parsing.Mark
|
|
}
|
|
}
|